Podstawy programowania obiektowego wykład 2 // na poprzednim wykładzie: using System; namespace ConsoleApplication1 class Program Console.Write("Podaj liczbę > "); // wczytywanie int x = int.parse(console.readline()); // operacje na zmiennych int y = 2 * x + 1; // wypisywanie Console.WriteLine("2 * 0 + 1 = 1", x, y); 1/33
2/33 instrukcja warunkowa: Console.Write("Podaj liczbę: "); int i = int.parse(console.readline()); if (i > 0) Console.WriteLine("0 jest większe od 0", i); albo tak: if (i > 0) Console.WriteLine("0 jest większe od 0", i);
3/33 Console.Write("Podaj liczbę: "); int i = int.parse(console.readline()); if (i > 0) Console.WriteLine("0 jest większe od 0", i); else Console.WriteLine("0 jest mniejsze lub równe 0",i);
4/33 Console.Write("Podaj liczbę: "); int i = int.parse(console.readline()); if (i > 0) Console.WriteLine("0 jest większe od 0", i); else if (i < 0) Console.WriteLine("0 jest mniejsze 0", i); else Console.WriteLine("Twoja liczba to 0");
5/33 operatory relacji: if (a < b) if (a <= b) if (a == b) if (a!= b) if (!(a == b)) if (a < b < c) // źle if (a < b && b < c) // dobrze if (a > b a > c) if (!(a > b && c!= d) && b >= d)
szukanie największej liczby spośród trzech wczytanych: Console.WriteLine("Podaj trzy liczby:"); int a = int.parse(console.readline()); int b = int.parse(console.readline()); int c = int.parse(console.readline()); if (a >= b && a >= c) Console.WriteLine("0 jest największe", a); else if (b >= a && b >= c) Console.WriteLine("0 jest największe", b); else Console.WriteLine("0 jest największe", c); 6/33
7/33 inne rozwiązanie: if (a >= b) if (a >= c) Console.WriteLine("0 jest największe", a); else Console.WriteLine("0 jest największe", c); else if (b >= c) Console.WriteLine("0 jest największe", b); else Console.WriteLine("0 jest największe", c);
zadanie: obliczanie rabatów sztuka towaru kosztuje 15zł, kupując co najmniej 10 sztuk mamy 5% rabatu, a powyżej 20 sztuk 10% rabatu Console.WriteLine("Ile sztuk chcesz kupić?"); int sztuki = int.parse(console.readline()); const double cena_za_sztuke = 15.0; double rabat = 0; if (sztuki <= 0) Console.WriteLine("żartujesz?"); return; if (sztuki > 20) rabat = 0.1; else if (sztuki >= 10) rabat = 0.05; double cena = sztuki * cena_za_sztuke * (1 - rabat); Console.WriteLine("wraz z rabatem 0:P cena = 1:F2", rabat, cena); 8/33
instrukcja wyboru: Console.Write("Wybierz 1 aby zapisać, 2 aby przerwać, "); Console.WriteLine("3 aby kontynuować"); int wybór = int.parse(console.readline()); switch (wybór) case 1: Console.WriteLine("Zapisuję dane..."); break; case 2: Console.WriteLine("Przerywam program"); return; case 3: Console.WriteLine("Kontynuuję..."); break; 9/33
Console.Write("Wybierz 1 aby zapisać, 2 aby przerwać, "); Console.WriteLine("3 aby kontynuować"); int wybór = int.parse(console.readline()); switch (wybór) case 1: Console.WriteLine("Zapisuję dane..."); break; case 2: Console.WriteLine("Przerywam program"); return; case 3: Console.WriteLine("Kontynuuję..."); break; default: Console.WriteLine("Wybrałeś niedozwoloną opcję"); break; 10/33
11/33 Console.WriteLine("Podaj dwie liczby i operator"); int a = int.parse(console.readline()); char op = (char)console.read(); int b = int.parse(console.readline()); int wynik; switch (op) case '+': wynik = a + b; break; case '-': wynik = a b; break; case '*': wynik = a * b; break; case '/': wynik = a / b; break; default: Console.WriteLine("Niedozwolony operator"); return; Console.WriteLine("012 = 3", a, op, b, wynik);
Console.WriteLine("Podaj dzień tygodnia"); string dzień = Console.ReadLine(); switch (dzień) case "poniedziałek": case "wtorek": case "środa": case "czwartek": Console.WriteLine("dzień pracy"); break; case "piątek": Console.WriteLine("prawie weekend"); break; case "sobota": case "niedziela": Console.WriteLine("weekend"); break; default: Console.WriteLine("słucham?"); break; 12/33
13/33 przykład: logowanie Console.Write("Podaj hasło: "); string hasło = Console.ReadLine(); if (hasło!= "ala") Console.WriteLine("Hasło nieprawidłowe"); else Console.WriteLine("Logowanie udane");
14/33 przykład: logowanie Console.Write("Podaj hasło: "); string hasło = Console.ReadLine(); if (hasło!= "ala") Console.WriteLine("Spróbuj ponownie"); hasło = Console.ReadLine(); if (hasło!= "ala") Console.WriteLine("Hasło nieprawidłowe"); else Console.WriteLine("Logowanie udane"); else Console.WriteLine("Logowanie udane");
15/33 pętla while: Console.Write("Podaj hasło: "); string hasło = Console.ReadLine(); while (hasło!= "ala") Console.WriteLine("Spróbuj ponownie"); hasło = Console.ReadLine(); Console.WriteLine("Logowanie udane");
16/33 pętla do-while: string hasło; do Console.Write("Podaj hasło: "); hasło = Console.ReadLine(); while (hasło!= "ala"); Console.WriteLine("Logowanie udane");
17/33 śledzenie wykonywania pętli int a = 1; while (a < 20) a *= 2; Console.Write(a); a int a = 1; 1 while (a < 20) 1 a *= 2; 2 while (a < 20) 2 a *= 2; 4 while (a < 20) 4 a *= 2; 8 while (a < 20) 8 a *= 2; 16 while (a < 20) 16 a *= 2; 32 while (a < 20) 32 Console.Write(a); 32 32
18/33 pętla for: for(int i = 0; i < 5; ++i) Console.Write("*"); odpowiada to: int i = 0; while (i < 5) Console.Write("*"); ++i;
pętla for: for (int i = 0; i < 5; ++i) Console.WriteLine(i); i for (int i = 0; i < 5; ++i) 0 for (int i = 0; i < 5; ++i) 0 Console.WriteLine(i); 0 for (int i = 0; i < 5; ++i) 1 for (int i = 0; i < 5; ++i) 1 Console.WriteLine(i); 1 for (int i = 0; i < 5; ++i) 2 for (int i = 0; i < 5; ++i) 2 Console.WriteLine(i); 2 for (int i = 0; i < 5; ++i) 3 for (int i = 0; i < 5; ++i) 3 Console.WriteLine(i); 3 for (int i = 0; i < 5; ++i) 4 for (int i = 0; i < 5; ++i) 4 Console.WriteLine(i); 4 for (int i = 0; i < 5; ++i) 5 for (int i = 0; i < 5; ++i) 5 5 19/33
20/33 pętla for: for(int i = 3; i < 20; i*=2) Console.WriteLine(i); i for (int i = 3; i < 20; i*=2) 3 for (int i = 3; i < 20; i*=2) 3 Console.WriteLine(i); 3 for (int i = 3; i < 20; i*=2) 6 for (int i = 3; i < 20; i*=2) 6 Console.WriteLine(i); 6 for (int i = 3; i < 20; i*=2) 12 for (int i = 3; i < 20; i*=2) 12 Console.WriteLine(i); 12 for (int i = 3; i < 20; i*=2) 24 for (int i = 3; i < 20; i*=2) 24
21/33 przykład obliczanie liczby π 4 =1 1 3 1 5 1 7 1 9 1 11 double pi4 = 0; bool plus = true; int mianownik = 1; for (int i = 0; i < 10000; ++i) if (plus) pi4 += 1.0 / mianownik; else pi4 -= 1.0 / mianownik; plus =!plus; mianownik += 2; Console.WriteLine("Pi = 0", pi4 * 4); Console.WriteLine("Pi = 0", Math.PI);
22/33 przykład obliczanie liczby π z zadaną dokładnością 4 =1 1 3 1 5 1 7 1 9 1 11 double starepi; // poprzednia wartość double err = 0.0001; // zadana dokładność double pi4 = 0; bool plus = true; int mianownik = 1; do starepi = pi4 * 4; if (plus) pi4 += 1.0 / mianownik; else pi4 -= 1.0 / mianownik; plus =!plus; mianownik += 2; while (Math.Abs(starepi - pi4 * 4) > err); Console.WriteLine("Pi = 0", pi4 * 4); Console.WriteLine("Pi = 0", Math.PI);
23/33 zadanie: wczytaj 10 liczb Console.WriteLine("Podaj 10 liczb"); for (int i = 0; i < 10; ++i) Console.Write("0 liczba > ", i + 1); int liczba = int.parse(console.readline()); Console.WriteLine("Dziękuję");
24/33 zadanie: wczytaj 10 liczb i oblicz ich sumę Console.WriteLine("Podaj 10 liczb"); int suma = 0; for (int i = 0; i < 10; ++i) Console.Write("0 liczba > ", i + 1); int liczba = int.parse(console.readline()); suma += liczba; Console.WriteLine("Suma dziesięciu: 0", suma);
25/33 zadanie: wczytaj 10 liczb i oblicz sumę parzystych Console.WriteLine("Podaj 10 liczb"); int suma = 0; for (int i = 0; i < 10; ++i) Console.Write("0 liczba > ", i + 1); int liczba = int.parse(console.readline()); // czy parzysta? if (liczba % 2 == 0) suma += liczba; Console.WriteLine("Suma parzystych: 0", suma);
26/33 zadanie: wczytaj 10 liczb i oblicz średnią parzystych Console.WriteLine("Podaj 10 liczb"); int ilepar = 0, suma = 0; for (int i = 0; i < 10; ++i) Console.Write("0 liczba > ", i + 1); int liczba = int.parse(console.readline()); // czy parzysta? if (liczba % 2 == 0) ilepar++; suma += liczba; Console.WriteLine("Średnia parzystych: 0:.00", (double)suma/ilepar);
27/33 zadanie: wczytuj liczby, dopóki ich suma nie przekroczy 100 int suma = 0; do Console.Write(" > "); int liczba = int.parse(console.readline()); suma += liczba; while (suma <= 100); Console.WriteLine("Suma: 0", suma);
28/33 zadanie: wczytuj liczby parzyste, dopóki ich suma nie przekroczy 100 i oblicz ich średnią int suma = 0, ilosc = 0; do Console.Write(" > "); int liczba = int.parse(console.readline()); if (liczba % 2 == 0) suma += liczba; ilosc++; while (suma <= 100); Console.WriteLine("Liczb wczytanych: 0", ilosc); Console.WriteLine("Suma: 0", suma); Console.WriteLine("Średnia: 0:.00", (double)suma/ilepar);
29/33 śle dze nie wykonania int suma = 0, ilosc = 0; do int liczba =...; if (liczba % 2 == 0) suma += liczba; ilosc++; while (suma <= 100); suma ilosc liczba int suma = 0, ilosc = 0; 0 0 - int liczba =...; 0 0 20 if (liczba % 2 == 0) 0 0 20 suma += liczba; 20 0 20 ilosc++; 20 1 20 while (suma <= 100); 20 1 - int liczba =...; 20 1 35 if (liczba % 2 == 0) 20 1 35 while (suma <= 100); 20 1 - int liczba =...; 20 1 40 if (liczba % 2 == 0) 20 1 40 suma += liczba; 60 1 40 ilosc++; 60 2 40 while (suma <= 100); 60 2 - int liczba =...; 60 2 60 if (liczba % 2 == 0) 60 2 60 suma += liczba; 120 2 60 ilosc++; 120 3 60 while (suma <= 100); 120 3 -
30/33 zadanie: silnia n!=1 2 3 n 1 n Console.WriteLine("Podaj n > "); int n = int.parse(console.readline()); int silnia = 1; for (int i = 2; i <= n; ++i) silnia *= i; Console.WriteLine("0! = 1", n, silnia);
liczby losowe: Random rnd = new Random(); int a; // cały zakres liczb int a = rnd.next(); Console.WriteLine("Wylosowana wartość: 0", a); // od 0 do 19 a = rnd.next(20); Console.WriteLine("Wylosowana wartość: 0", a); // od 5 do 9 a = rnd.next(5, 10); Console.WriteLine("Wylosowana wartość: 0", a); // przedział [0.0, 1.0) double b = rnd.nextdouble(); Console.WriteLine("Wylosowana wartość: 0", b); 31/33
32/33 gra w zgadywanie: Random rnd = new Random(); int losowa = rnd.next(100); Console.WriteLine("Jaką liczbę pomyślałem?"); while (true) int zgaduj = int.parse(console.readline()); if (zgaduj == losowa) break; Console.WriteLine("Próbuj dalej."); Console.WriteLine("Zgadłeś.");
33/33 gra w zgadywanie: Random rnd = new Random(); int losowa = rnd.next(100); int ile = 0; Console.WriteLine("Jaką liczbę pomyślałem?"); while (true) int zgaduj = int.parse(console.readline()); ile++; if (zgaduj == losowa) break; if (losowa > zgaduj) Console.WriteLine("Więcej!"); else Console.WriteLine("Mniej!"); Console.WriteLine("Zgadłeś. Liczba prób: 0.", ile);