Prvočísla
2. PrvocislaWPF
2.5. Výsledný kód
XAML kód
Výsledný XAML kód formuláře (MainWindow.xaml) - viz Kód 1.
<Window x:Class="PrvocislaWPF.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:PrvocislaWPF" mc:Ignorable="d" Title="Výpis prvočísel" Height="450" Width="600" MinHeight="300" MinWidth="400"> <Grid> <Grid.RowDefinitions> <RowDefinition Height="Auto"/> <RowDefinition Height="Auto"/> <RowDefinition Height="*"/> <RowDefinition Height="Auto"/> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition Width="*"/> <ColumnDefinition Width="3*"/> </Grid.ColumnDefinitions> <Label Content="Výpis prvních n prvočísel" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="16" FontWeight="Bold" Grid.ColumnSpan="2"/> <Label Content="Zadejte n:" Grid.Row="1" HorizontalAlignment="Right" Margin="5"/> <TextBox Name="TxtN" Text="?" Grid.Row="1" Grid.Column="1" Margin="5" VerticalAlignment="Center"/> <TextBox Name="TxtPrvocisla" Grid.Row="2" Margin="5" TextWrapping="Wrap" Grid.ColumnSpan="2" FontSize="14" VerticalScrollBarVisibility="Auto" IsReadOnly="True" Background="AliceBlue"/> <Button Name="BtnVypis" Content="Vypiš prvočísla" Width="120" Grid.Row="3" Grid.ColumnSpan="2" Margin="10" Padding="5" HorizontalAlignment="Left" Click="BtnVypis_Click"/> <Button Name="BtnKonec" Content="Konec" Width="120" Grid.Row="3" Grid.Column="1" HorizontalAlignment="Right" Margin="10" Padding="5" Click="BtnKonec_Click"/> </Grid> </Window>
Kód 1: Výsledný XAML kód vytvořeného formuláře
C# kód
Code Behind - C# kód pro veškeré události vyvolané uživatelem při manipulaci s aplikací (MainWindow.xaml.cs) - viz Kód 2.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; namespace PrvocislaWPF { /// <summary> /// Interaction logic for MainWindow.xaml /// </summary> public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } #region Výpočty // Metoda s návratem - návrat, zda je předané číslo prvočíslo (true), nebo nikoliv (false) private bool Prvocislo(int n) { /* Deklarace (inicializace): 'b' ... informace, zda je testované (předané) číslo * prvočíslem (true - je prvočíslem); 'i' ... dělitel (čítač) */ bool b = true; int i = 2; // Cyklus - dokud platí, že testované číslo je prvočíslo a čítač je menší než testované číslo while (b == true && i < n) { // Pokud testované číslo je dělitelné beze zbytku if (n % i == 0) { // Testované číslo není prvočíslo b = false; } // Inkrementace i++; } // Výstupem metody je informace, která je uložena v logické proměnné return b; } #endregion #region Události private void BtnVypis_Click(object sender, RoutedEventArgs e) { /* Deklarace: 'pocetCisel' ... počet prvočísel, která mají být vypsána; * 'n' ... počet nalezených prvočísel - inicializace; 'i' ... testované číslo * na prvočíslo (čítač) - inicializace; 'vystup' ... textová proměnná, do které * budeme ukládat výsledek - inicializace */ int pocetCisel; int n = 0; int i = 2; string vystup = ""; if (!((Int32.TryParse(this.TxtN.Text, out pocetCisel)) && (pocetCisel > 0))) { // Zobrazení varovného dialogového okna MessageBox.Show("Zadejte platnou kladnou celočíselnou hodnotu pro počet čísel.", "Varování", MessageBoxButton.OK, MessageBoxImage.Warning); return; } // Vypnutí funkčnosti kurzoru (nelze klikat) Mouse.OverrideCursor = Cursors.Wait; // Vymazání předchozí vypsané řady this.TxtPrvocisla.Text = ""; // Cyklus - pokud platí, že je nalezeno méně než specifikovaný počet prvočísel while (n < pocetCisel) { // Pokud návrat zavolané funkce testu na prvočíslo u testovaného čísla je pravda if (Prvocislo(i)) { // Zvýšeni hodnoty poctu nalezených prvočísel o 1 n++; // Připojení číslice (testovaného čísla konvertovaného na text) k předchozím vystup += i.ToString(); // Pokud není vypsán požadovaný počet prvočísel if (n < pocetCisel) { // Připoj za číslo čárku vystup += ", "; } } // Nové testované číslo, které je o 1 vyšší než předchozí i++; } // Výpis řady na formulář this.TxtPrvocisla.Text = vystup; // Zapnutí funkčnosti kurzoru Mouse.OverrideCursor = null; } private void BtnKonec_Click(object sender, RoutedEventArgs e) { // Zavření formuláře this.Close(); } #endregion } }
Kód 2: Výsledný C# kód vytvořeného formuláře a metod jeho prvků
Výstup programu
Na následujícím obrázku vidíme výstup naší aplikace pro výpis řady prvočísel oddělených čárkami o zadaném počtu čísel, která má tato řada obsahovat - viz Výstup programu - Kód 1 a 2. Výpis je spuštěn pomocí stisknutí tlačítka Vypiš prvočísla umístěného v levém dolním rohu formuláře. Aplikaci lze ukončit pomocí tlačítka Konec, nebo pomocí zavíracího tlačítka umístěného v pravém rohu aplikace.
Výstup programu - Kód 1 a 2: Výpis řady prvočísel o specifikované délce