plik


ÿþ Wszelkie prawa zastrze|one. Nieautoryzowane rozpowszechnianie caBo[ci lub fragmentu niniejszej publikacji w jakiejkolwiek postaci jest zabronione. Wykonywanie kopii metod kserograficzn, fotograficzn, a tak|e kopiowanie ksi|ki na no[niku filmowym, magnetycznym lub innym powoduje naruszenie praw autorskich niniejszej publikacji. Wszystkie znaki wystpujce w tek[cie s zastrze|onymi znakami firmowymi bdz towarowymi ich wBa[cicieli. Autor oraz Wydawnictwo HELION doBo|yli wszelkich staraD, by zawarte w tej ksi|ce informacje byBy kompletne i rzetelne. Nie bior jednak |adnej odpowiedzialno[ci ani za ich wykorzystanie, ani za zwizane z tym ewentualne naruszenie praw patentowych lub autorskich. Autor oraz Wydawnictwo HELION nie ponosz równie| |adnej odpowiedzialno[ci za ewentualne szkody wynikBe z wykorzystania informacji zawartych w ksi|ce. Redaktor prowadzcy: Ewelina Burska Projekt okBadki: Jan Paluch MateriaBy graficzne na okBadce zostaBy wykorzystane za zgod Shutterstock. Wydawnictwo HELION ul. Ko[ciuszki 1c, 44-100 GLIWICE tel. 32 231 22 19, 32 230 98 63 e-mail: helion@helion.pl WWW: http://helion.pl (ksigarnia internetowa, katalog ksi|ek) Kody wykorzystane w ksi|ce mo|na znalez pod adresem: ftp://ftp.helion.pl/przyklady/cshzap.zip Drogi Czytelniku! Je|eli chcesz oceni t ksi|k, zajrzyj pod adres http://helion.pl/user/opinie?cshzap Mo|esz tam wpisa swoje uwagi, spostrze|enia, recenzj. ISBN: 978-83-246-3981-6 Copyright © Helion 2012 Printed in Poland. " Kup ksi|k " Ksigarnia internetowa " Pole ksi|k " Lubi to! » Nasza spoBeczno[ " OceD ksi|k Spis tre ci Od autora ........................................................................................................... 5 Rozdzia 1. Jak j zyk C# komunikuje si z u ytkownikiem .................................... 9 Informacje ogólne ............................................................................................................. 9 Rozdzia 2. Instrukcje steruj ce przebiegiem programu  instrukcje wyboru ....... 17 Instrukcje wyboru ........................................................................................................... 17 Instrukcja if ... else ................................................................................................... 18 Instrukcja switch ... case ........................................................................................... 18 Rozdzia 3. Instrukcje steruj ce przebiegiem programu  instrukcje iteracyjne ... 27 Instrukcje iteracyjne ....................................................................................................... 27 P tla for .................................................................................................................... 28 P tla do ... while ....................................................................................................... 28 P tla while ................................................................................................................ 29 Rozdzia 4. Tablice i kolekcje ........................................................................... 57 Tablice ............................................................................................................................ 57 Kolekcje ................................................................................................................... 57 Tablice jednowymiarowe ......................................................................................... 58 Tablice dwuwymiarowe ........................................................................................... 61 P tla foreach ............................................................................................................. 75 Dzia ania na macierzach ................................................................................................. 81 Rozdzia 5. Elementy programowania obiektowego ............................................. 91 Wiadomo ci ogólne ........................................................................................................ 91 Klasy, pola, metody ........................................................................................................ 91 Rekurencja .................................................................................................................... 101 Dziedziczenie ............................................................................................................... 107 Rozdzia 6. Pliki tekstowe oraz pliki o dost pie swobodnym ............................. 111 Informacje ogólne ......................................................................................................... 111 Pliki tekstowe ............................................................................................................... 111 Pliki o dost pie swobodnym ......................................................................................... 123 Serializacja ................................................................................................................... 125 Polecana literatura .......................................................................................... 127 Pole ksi|k Kup ksi|k 4 C#. Zadania z programowania z przyk adowymi rozwi zaniami Pole ksi|k Kup ksi|k Rozdzia 2. Instrukcje steruj ce przebiegiem programu  instrukcje wyboru W tym rozdziale przedstawiono typowe zadania, wraz z przyk adowymi rozwi zaniami, z wykorzystaniem instrukcji wyboru. Instrukcje wyboru Instrukcje steruj ce przebiegiem programu s jednym z najwa niejszych elementów w ka dym j zyku programowania. Instrukcje te, w po czeniu z wyra eniami, pozwa- laj na zapisanie dowolnego algorytmu dzia ania programu. Instrukcje steruj ce w j zyku C# mo na podzieli na: instrukcje wyboru, instrukcje iteracyjne (znane jako p tle), instrukcje skoku. W rozdziale 2. zostan przedstawione typowe zadania z wykorzystaniem instrukcji wy- boru, w rozdziale 3. za zadania z wykorzystaniem instrukcji iteracyjnych. W j zyku C# istniej dwie instrukcje wyboru, które s u do przeprowadzania opera- cji na podstawie warto ci wyra enia: instrukcja if ... else, instrukcja switch ... case. Pole ksi|k Kup ksi|k 18 C#. Zadania z programowania z przyk adowymi rozwi zaniami Instrukcja if ... else Instrukcja if ... else s u y do sprawdzania poprawno ci wyra enia warunkowego i  w zale no ci od tego, czy dany warunek jest prawdziwy, czy nie  pozwala na wykonanie ró nych bloków programu. Jej ogólna posta jest nast puj ca: if (warunek) { ......... // instrukcje do wykonania, kiedy warunek jest prawdziwy } else { ......... // instrukcje do wykonania, kiedy warunek jest fa szywy } Blok else jest opcjonalny, a instrukcja warunkowa w wersji skróconej ma posta : if (warunek) { ......... // instrukcje do wykonania, kiedy warunek jest prawdziwy } Instrukcja switch ... case Instrukcja switch ... case pozwala w wygodny i przejrzysty sposób sprawdzi ci g warunków i wykona kod w zale no ci od tego, czy s one prawdziwe, czy fa szywe. Jej ogólna posta jest nast puj ca: switch (wyra enie) { case warto _1 : instrukcje_1; break; case warto _2 : instrukcje_2; break; ........................ case warto _n : instrukcje_n; break; default : instrukcje; } Instrukcja break przerywa wykonanie ca ego bloku case. UWAGA: jej brak mo e do- prowadzi do uzyskania nieoczekiwanych wyników i pojawienia si b dów w programie. Zadanie 2.1. Napisz program, który dla trzech liczb a, b, c wprowadzonych z klawia- tury sprawdza, czy tworz one trójk pitagorejsk . W teorii liczb trójka pitagorejska to takie trzy liczby ca kowite dodatnie a, b, c, które spe niaj równanie Pitagorasa: a2 + b2 = c2. Pole ksi|k Kup ksi|k Rozdzia 2. Instrukcje steruj ce przebiegiem programu  instrukcje wyboru 19 Listing 2.1. Przyk adowe rozwi zanie using System; namespace Zadanie21 // Zadanie 2.1 { class Program { static void Main(string[] args) { int a, b, c; Console.WriteLine("Program sprawdza, czy wczytane liczby a, b, c to trójka pitagorejska."); Console.WriteLine("Podaj a."); a = int.Parse(Console.ReadLine()); Console.WriteLine("Podaj b."); b = int.Parse(Console.ReadLine()); Console.WriteLine("Podaj c."); c = int.Parse(Console.ReadLine()); if ((a*a + b*b) == c*c) { Console.Write("Liczby "); Console.Write("a = " + a + ", "); Console.Write("b = " + b + ", "); Console.Write("c = " + c); Console.Write(" s trójk pitagorejsk ."); } else { Console.Write("Liczby "); Console.Write("a = " + a + ", "); Console.Write("b = " + b + ", "); Console.Write("c = " + c); Console.Write(" nie s trójk pitagorejsk ."); } Console.Read(); // naci nij klawisz Enter } } } Sprawdzenie twierdzenia Pitagorasa dla wczytanych liczb a, b, c zosta o zawarte w na- st puj cych linijkach kodu: if ((a*a + b*b) == c*c) { Console.Write("Liczby "); Console.Write("a = " + a + ", "); Console.Write("b = " + b + ", "); Console.Write("c = " + c); Console.Write(" s trójk pitagorejsk ."); } else { Console.Write("Liczby "); Pole ksi|k Kup ksi|k 20 C#. Zadania z programowania z przyk adowymi rozwi zaniami Console.Write("a = " + a + ", "); Console.Write("b = " + b + ", "); Console.Write("c = " + c); Console.Write(" nie s trójk pitagorejsk ."); } atwo sprawdzi , e liczby a = 3, b = 4, c = 5 tworz trójk pitagorejsk (liczby te spe niaj twierdzenie Pitagorasa) i na ekranie pojawi si komunikat: Liczby... s trój- k pitagorejsk , natomiast liczby a = 1, b = 2, c = 3 nie tworz trójki pitagorejskiej (liczby te nie spe niaj twierdzenia Pitagorasa) i na ekranie pojawi si komunikat: Licz- by... nie s trójk pitagorejsk . Rezultat dzia ania programu dla a = 9, b = 12, c = 15 mo na zobaczy na rysunku 2.1. Program sprawdza, czy wczytane liczby a, b, c to trójka pitagorejska. Podaj a. 9 Podaj b. 12 Podaj c. 15 Liczby a = 9, b = 12, c = 15 s trójk pitagorejsk . Rysunek 2.1. Efekt dzia ania programu Zadanie 2.1 Zadanie 2.2. Napisz program, który z wykorzystaniem instrukcji if oblicza pierwiastki równania kwadratowego ax2+bx+c = 0, w którym zmienne a, b, c to liczby rzeczywiste wprowadzane z klawiatury. Wszystkie zmienne wy wietlamy na ekranie z dok adno- ci do dwóch miejsc po przecinku. Listing 2.2. Przyk adowe rozwi zanie using System; namespace Zadanie22 // Zadanie 2.2 { class Program { static void Main(string[] args) { double a, b, c, delta, x1, x2; Console.WriteLine("Program oblicza pierwiastki równania ax^2+bx+c = 0."); Console.WriteLine("Podaj a."); a = double.Parse(Console.ReadLine()); if (a == 0) { Console.WriteLine("Niedozwolona warto wspó czynnika a. Naci nij klawisz ENTER."); } else { Console.WriteLine("Podaj b."); Pole ksi|k Kup ksi|k Rozdzia 2. Instrukcje steruj ce przebiegiem programu  instrukcje wyboru 21 b = double.Parse(Console.ReadLine()); Console.WriteLine("Podaj c."); c = double.Parse(Console.ReadLine()); delta = b*b-4*a*c; if (delta < 0) { Console.WriteLine(); Console.Write("Dla "); Console.Write("a = {0}, ", a); Console.Write("b = {0}, ", b); Console.Write("c = {0} ", c); Console.Write("brak pierwiastków rzeczywistych."); } else { if (delta == 0) { x1 = -b/(2*a); Console.WriteLine(); Console.Write("Dla "); Console.Write("a = {0}, ", a); Console.Write("b = {0}, ", b); Console.Write("c = {0} ", c); Console.Write("trójmian ma jeden pierwiastek podwójny x1 = {0:##.##}.", x1); } else { x1 = (-b-Math.Sqrt(delta))/(2*a); x2 = (-b+Math.Sqrt(delta))/(2*a); Console.WriteLine(); Console.Write("Dla "); Console.Write("a = {0}, ", a); Console.Write("b = {0}, ", b); Console.Write("c = {0} ", c); Console.WriteLine("trójmian ma dwa pierwiastki: x1 = {0:##.##}, x2 = {1:##.##}.", x1, x2); } } } Console.Read(); // naci nij klawisz Enter } } } W pierwszej cz ci programu sprawdzamy, czy warto wspó czynnika a jest równa zero. Ilustruj to nast puj ce linijki kodu: if (a==0) { Console.WriteLine("Niedozwolona warto wspó czynnika a. Naci nij klawisz ENTER."); } Pole ksi|k Kup ksi|k 22 C#. Zadania z programowania z przyk adowymi rozwi zaniami else { ............ } Je li warto wspó czynnika a = 0, to zostanie wy wietlony komunikat: Niedozwolo- na warto wspó czynnika a... i program zostanie zako czony. Dla a ró nego od zera program b dzie oczekiwa na wprowadzenie warto ci b i c. Po ich wprowadzeniu zo- stanie obliczona delta wed ug wzoru: delta = b*b-4*a*c; Je li delta < 0, to zostanie wy wietlony komunikat: ...brak pierwiastków rzeczywistych. Dla delta = 0 równanie kwadratowe ma jeden pierwiastek podwójny, który obliczy- my ze wzoru: x1 = -b/(2*a); Dla delta > 0 równanie kwadratowe ma dwa pierwiastki, które obliczymy ze wzorów: x1 = (-b-Math.Sqrt(delta))/(2*a); x2 = (-b+Math.Sqrt(delta))/(2*a); Dla np. a = 1, b = 5, c = 4 warto ci pierwiastków równania wynosz odpowiednio: x1 = -4 i x2 = -1. Dla np. a = 1, b = 4, c = 4 trójmian ma jeden pierwiastek podwójny: x1 = -2. Dla np. a = 1, b = 2, c = 3 trójmian nie ma pierwiastków rzeczywistych. Rezultat dzia ania programu dla a = 1, b = 5, c = 4 mo na zobaczy na rysunku 2.2. Program oblicza pierwiastki równania ax^2+bx+c = 0. Podaj a. 1 Podaj b. 5 Podaj c. 4 Dla a = 1, b = 5, c = 4 trójmian ma dwa pierwiastki: x1 = -4, x2 = -1. Rysunek 2.2. Efekt dzia ania programu Zadanie 2.2 Zadanie 2.3. Napisz program, który z wykorzystaniem instrukcji switch oblicza pier- wiastki równania kwadratowego ax2+bx+c = 0, w którym zmienne a, b, c to liczby rze- czywiste wprowadzane z klawiatury. Wszystkie zmienne wy wietlamy z dok adno ci do dwóch miejsc po przecinku. Nale y wprowadzi do programu zmienn pomocnicz liczba_pierwiastkow. Pole ksi|k Kup ksi|k Rozdzia 2. Instrukcje steruj ce przebiegiem programu  instrukcje wyboru 23 Listing 2.3. Przyk adowe rozwi zanie using System; namespace Zadanie23 // Zadanie 2.3 { class Program { static void Main(string[] args) { double a, b, c, delta, x1, x2; byte liczba_pierwiastkow = 0; Console.WriteLine("Program oblicza pierwiastki równania ax^2+bx+c = 0."); Console.WriteLine("Podaj a."); a = double.Parse(Console.ReadLine()); if (a == 0) { Console.WriteLine("Niedozwolona warto wspó czynnika a. Naci nij klawisz ENTER."); } else { Console.WriteLine("Podaj b."); b = double.Parse(Console.ReadLine()); Console.WriteLine("Podaj c."); c = double.Parse(Console.ReadLine()); delta = b*b-4*a*c; if (delta < 0) liczba_pierwiastkow = 0; if (delta == 0) liczba_pierwiastkow = 1; if (delta > 0) liczba_pierwiastkow = 2; switch (liczba_pierwiastkow) { case 0: { Console.WriteLine(); Console.Write("Dla "); Console.Write("a = {0}, ", a); Console.Write("b = {0}, ", b); Console.Write("c = {0} ", c); Console.Write("brak pierwiastków rzeczywistych."); } break; case 1: { x1 = -b/(2*a); Console.WriteLine(); Console.Write("Dla "); Console.Write("a = {0}, ", a); Console.Write("b = {0}, ", b); Console.Write("c = {0} ", c); Console.Write("trójmian ma jeden pierwiastek podwójny x1 = {0: ##.##}.", x1); Pole ksi|k Kup ksi|k 24 C#. Zadania z programowania z przyk adowymi rozwi zaniami } break; case 2: { x1 = (-b-Math.Sqrt(delta))/(2*a); x2 = (-b+Math.Sqrt(delta))/(2*a); Console.WriteLine(); Console.Write("Dla "); Console.Write("a = {0}, ", a); Console.Write("b = {0}, ", b); Console.Write("c = {0} ", c); Console.Write("trójmian ma dwa pierwiastki x1 = {0: ##.##} i ", x1); Console.Write("x2 = {0: ##.##}.", x2); } break; } } Console.Read(); // naci nij klawisz Enter } } } Zmienna pomocnicza liczba_pierwiastkow przyjmuje trzy warto ci w zale no ci od znaku zmiennej delta. Ilustruj to nast puj ce linijki kodu: if (delta < 0) liczba_pierwiastkow = 0; if (delta == 0) liczba_pierwiastkow = 1; if (delta > 0) liczba_pierwiastkow = 2; Rezultat dzia ania programu dla a = 1, b = 4, c = 4 mo na zobaczy na rysunku 2.3. Program oblicza pierwiastki równania ax^2+bx+c = 0. Podaj a. 1 Podaj b. 4 Podaj c. 4 Dla a = 1, b = 4, c = 4 trójmian ma jeden pierwiastek podwójny x1 = - 2. Rysunek 2.3. Efekt dzia ania programu Zadanie 2.3 Zadanie 2.4. Napisz program, który oblicza warto niewiadomej x z równania ax+b = c. Warto ci a, b, c nale do zbioru liczb rzeczywistych i s wprowadzane z klawia- tury. Dodatkowo nale y zabezpieczy program na wypadek sytuacji, kiedy wprowadzo- na warto a = 0. Wszystkie zmienne wy wietlamy z dok adno ci do dwóch miejsc po przecinku. Listing 2.4. Przyk adowe rozwi zanie using System; namespace Zadanie24 // Zadanie 2.4 Pole ksi|k Kup ksi|k Rozdzia 2. Instrukcje steruj ce przebiegiem programu  instrukcje wyboru 25 { class Program { static void Main(string[] args) { double a, b, c, x; Console.WriteLine("Program oblicza warto x z równania liniowego ax+b = 0."); Console.WriteLine("Podaj a."); a = double.Parse(Console.ReadLine()); if (a == 0) { Console.WriteLine("Niedozwolona warto wspó czynnika a. Naci nij klawisz ENTER."); } else { Console.WriteLine("Podaj b."); b = double.Parse(Console.ReadLine()); Console.WriteLine("Podaj c."); c = double.Parse(Console.ReadLine()); x = (c-b)/a; Console.WriteLine(); Console.Write("Dla "); Console.Write("a = {0:##.##}, ", a); Console.Write("b = {0:##.##}, ", b); Console.Write("c = {0:##.##} ", c); Console.Write("warto x = {0:##.##}.", x); } Console.Read(); // naci nij klawisz Enter } } } Rezultat dzia ania programu mo na zobaczy na rysunku 2.4. Program oblicza warto x z równania liniowego ax+b = 0. Podaj a. 1 Podaj b. 6 Podaj c. 2 Dla a = 1, b = 6, c = 2 warto x = - 4. Rysunek 2.4. Efekt dzia ania programu Zadanie 2.4 Zadanie 2.5. Napisz program, w którym u ytkownik zgaduje ca kowit liczb losow z przedzia u od 0 do 9 generowan przez komputer. Pole ksi|k Kup ksi|k 26 C#. Zadania z programowania z przyk adowymi rozwi zaniami W j zyku C# liczby pseudolosowe generujemy za pomoc klasy: Random r = new Random(); . Listing 2.5. Przyk adowe rozwi zanie using System; namespace Zadanie25 // Zadanie 2.5 { class Program { static void Main(string[] args) { double losuj_liczbe, zgadnij_liczbe; Console.WriteLine("Program losuje liczb od 0 do 9. Zgadnij j ."); Random r = new Random(); losuj_liczbe = Math.Round(10*(r.NextDouble())); zgadnij_liczbe = double.Parse(Console.ReadLine()); if (zgadnij_liczbe == losuj_liczbe) { Console.WriteLine("Gratulacje! Zgad e liczb !"); } else { Console.WriteLine("Bardzo mi przykro, ale wylosowana liczba to {0}.", losuj_liczbe); } Console.Read(); // naci nij klawisz Enter } } } Funkcja Round() w poni szej linijce kodu: losuj_liczbe = Math.Round(10*(r.NextDouble())); umo liwia zaokr glenie liczby zmiennoprzecinkowej do liczby ca kowitej. Rezultat dzia ania programu mo na zobaczy na rysunku 2.5. Program losuje liczb od 0 do 9. Zgadnij j . 5 Bardzo mi przykro, ale wylosowana liczba to 2. Rysunek 2.5. Efekt dzia ania programu Zadanie 2.5 Pole ksi|k Kup ksi|k

Wyszukiwarka

Podobne podstrony:
Turbo Pascal Zadania z programowania z przykladowymi rozwiazaniami tpzada
Java Zadania z programowania z przykładowymi rozwiązaniami
Java Zadania z programowania z przykladowymi rozwiazaniami javaza
C Zadania z programowania z przykladowymi rozwiazaniami cppzad
technik informatyk egzamin praktyczny probny zadanie1 przyklad rozwiazana
Przykład rozwiazania zadania z przepływu ciepła używajac czterowezłowych ES
Przykład rozwiazania ramy w programie Calfem
Przykladowe rozwiÄ…zanie zadania praktycznego
Informatyka Programowanie Przykladowe zadania praktyczne
Przyklad rozwiazania z komentarzem zadanie czerwiec 07 (1)
2 3 1 Zadania do samodzielnego rozwiÄ…zania
5 3 1 Zadania do samodzielnego rozwiÄ…zania
zadanie programowaine

więcej podobnych podstron