Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Podstawy informatyki Zmienne, stałe Instrukcje sterujące Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu.

Podobne prezentacje


Prezentacja na temat: "Podstawy informatyki Zmienne, stałe Instrukcje sterujące Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu."— Zapis prezentacji:

1 Podstawy informatyki Zmienne, stałe Instrukcje sterujące Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła Jerzego Matuszyka

2 Wypisywanie tekstu na ekranie #include using namespace std; int main() { cout<<"AGH"<<endl; } cout – obiekt klasy ostream << - operator przesunięcia bitowego "AGH" – stała tekstowa endl – manipulator oznaczający przejście do nowej linii

3 Zmienne Zmienne służą do przechowywania wartości, znaków, słów, … Deklaracja – informuje kompilator że dana nazwa reprezentuje obiekt jakiegoś typu, np.: extern int a; Definicja – dodatkowo rezerwuje miejsce w pamięci, np.: int a; Inicjalizacja – definicja + przypisanie wartości, np.: int a = 5;

4 Nazwy zmiennych Nazwa zmiennej może być dowolnie długim ciągiem liter, cyfr oraz znaków podkreślenia, przy czym: nie może zaczynać się od cyfry, rozróżniane są duże i małe litery, nie może być słowem kluczowym.

5 Słowa kluczowe asmautoboolbreakcasecatch charclassconstconst_castcontinuedefault deletedodoubledynamic_castelseenum explicitexportexternfalsefloatfor friendgotoifinlineintlong mutablenamespacenewoperatorprivateprotected publicregister reinterpret_c ast returnshortsigned sizeofstaticstatic_caststructswitchtemplate thisthrowtruetrytypedeftypeid typenameunionunsignedusingvirtualvoid volatilewchar_twhile andand_eqbitandbitorcomplnot not_eqoror_eqxorxor_eq

6 cin #include using namespace std; int main() { int a; cout<<"Podaj liczbe"<<endl; cin>>a; cout<<"Podales liczbe "<<a<<endl; } cin – obiekt klasy istream, służy do wprowadzania informacji z klawiatury

7 Stałe Stałe będące liczbami całkowitymi –Zapis dziesiętny: 1105… –Zapis ósemkowy: 0101005… 09 – BŁĄD –Zapis szesnastkowy: 0x10x100x50xf…

8 Stałe Stałe będące liczbami zmiennoprzecinkowymi: 1.210.55.1… 2e43.2e-2-5.2e2…

9 Stałe Stałe znakowe: ‘a’‘x’… Znaki specjalne \bcofacz \fnowa strona \nnowa linia \rpowrót karetki \ttabulator poziomy \vtabulator pionowy \asygnał dźwiękowy cout<<”AGH\nWIMiIP”;

10 Stałe Stałe tekstowe: ”Hello””Hi”… ‘a’ to nie to samo co ”a”

11 Instrukcje sterujące Instrukcje sterujące są to polecenia służące do sterowania przebiegiem programu. W instrukcjach sterujących podejmowane są decyzje o wykonaniu tych czy innych instrukcji programu. Decyzje te podejmowane są w zależności od spełnienia lub niespełnienia jakiegoś warunku (czyli od prawdziwości lub fałszywości jakiegoś wyrażenia).

12 PRAWDA i FAŁSZ C++ istnieje specjalny wbudowany typ danych określający zmienne logiczne (przyjmujące wartości prawda lub fałsz): bool Zdefiniowane są dwie stałe: true i false Wartość PRAWDA lub FAŁSZ ma każde, dowolnie skomplikowane wyrażenie. wartość zero = FAŁSZ każda inna = PRAWDA

13 Instrukcja warunkowa if (1) Wyrażenie to coś, co ma jakąś wartość: –obiekt lub –wyrażenie. Zamiast jednej instrukcji może wystąpić blok instrukcji. if( wyr ) instr; if( wyr ) instr1; else instr2; wyr instr Tak Nie wyr instr1 Tak Nie instr2

14 Instrukcja if…else #include using namespace std; int main() { int a; cout << "Podaj liczbe" << endl; cin >> a; if (a>0) cout << "Podales liczbe dodatnia" << endl; else cout << „Podales liczbe niedodatnia" << endl; } Wyrażenie

15 Blok instrukcji Często się zdarza, że chcemy wykonać warunkowo nie jedną, lecz kilka instrukcji. Stosujemy wówczas instrukcję składaną zwaną blokiem: { instr1; instr2;... } Po klamrze nie trzeba stawiać średnika! Zróżnicowane wcięcia nie mają znaczenia dla kompilatora, ale ogromnie zwiększają czytelność kodu.

16 Wybór wielowariantowy Instrukcje warunkowe if...else możemy ze sobą łączyć – uzyskamy wtedy możliwość wyboru wielowariantowego. if (wyr1) instr1; else if (wyr2) instr2; else if (wyr3) instr3;

17 Wybór wielowariantowy int main() { int a; cin>>a; if(a>0) cout<<"a jest dodatnie"<<endl; else if(a==5) cout<<"a jest równe 5"<<endl; else if(a<-2) cout<<"a jest mniejsze od -2"<<endl; }

18 Pętla while Najpierw obliczana jest wartość wyrażenia wyr. Jeśli wynik jest zerowy, wy- chodzimy z pętli. Jeśli wartość wyrażenia jest niezerowa, wykonujemy instrukcję instr. Instrukcję wykonujemy do- póki (while) wyrażenie ma wartość niezerową. Uwaga: pętla może w ogóle nie wykonać się ani razu! while ( wyr ) instr ; Wartość wyrażenia obliczana przed wykonaniem instrukcji! wyr instr Tak Nie

19 Pętla while #include using namespace std; int main() { int i=0; while (i<10) { cout << i << endl; i=i+2; } Wyrażenie Ciało pętli w nawiasach

20 Pętla do...while Najpierw wykonywana jest instrukcja instr. Następnie obliczana jest wartość wyrażenia wyr. Jeżeli jest ono niezerowe, to zostanie powtórzone wy- konanie tej instrukcji. Jeśli wynik jest zerowy, wy- chodzimy z pętli. Uwaga: pętla wykona się co najmniej jeden raz! do instr; while ( wyr ); Wartość wyrażenia obliczana po wykonaniu instrukcji! wyr instr TakNie

21 Pętla do…while #include using namespace std; int main() { int i=0; do { cout << i << endl; i=i+1; } while (i<10); } Wyrażenie Średnik!!! Początek pętli

22 Pętla for Na początku, jednorazowo, zawsze, wykonywana jest i_ini. Następnie obliczana jest wartość wyrażenia wyr. Jeśli wynik jest zerowy, wychodzimy z pętli. Jeśli wartość wyrażenia jest nie- zerowa, wykonujemy instr, a potem i_krok. Instrukcję wykonujemy dopóki wyrażenie wyr ma wartość niezerową. Uwaga: pętla może w ogóle nie wykonać się ani razu, choć wykona się wtedy 1 raz i_ini. wyr i_ini TakNie tresc_petli i_krok for(i_ini ; wyr ; i_krok) instr ; Wartość obliczana przed wykonaniem treści pętli!

23 Pętla for i_ini nie musi być jedną instrukcją – może być ich kilka, wtedy oddzielone są przecinkami. Podobnie w wypadku i_krok. W i_ini może pojawić się definicja obiektu. i_ini, wyr lub i_krok można opuścić Zapis: for ( ; ; ) {... } oznacza pętlę nieskończoną.

24 Pętla for #include using namespace std; int main() { for (int i=0; i<10; i=i+1) cout << i << endl; } III III IV

25 Pętla for #include using namespace std; int main() { for (int i=0; i<3; i=i+1) for (int j=0; j<2; j=j+1) cout << "i=" << i << "\t" << "j=" << j << endl; }

26 Te same nazwy zmiennych int main() { int a; … int a; } int main() { int a; { int a; } BŁĄD - redefinicja

27 Te same nazwy liczników pętli int main() { for(int i=0; i<3; i=i+1) cout<<i<<endl; } 012012012012012012

28 Te same liczniki pętli int main() { for(int i=0; i<3; i=i+1) for(i=0; i<3; i=i+1) cout<<i<<endl; } 012012 i<4 012012 i<5 01201…01201…

29 Instrukcja wyboru switch Instrukcja wyboru służy do podejmowania wielowarian- towych decyzji. Najpierw obliczane jest wy- rażenie wyr. Jeśli jego wartość odpowiada którejś z wartości podanej w jednej z etykiet case, to wykonywane są instrukcje po tej etykiecie, aż do napotkania instrukcji break. Jeśli wartość wyrażenia nie zgadza się z żadną z wartości przy etykietach case, wówczas wykonywane są instrukcje po etykiecie default. switch( wyr ) { case w1: instr1; break; case w2: instr2; break;... case w_n: instr_n; break; default: instr_d; break; } wyr w1 == wyr instr1 TakNie... instr2 w2 == wyr instr_d instr_n w_n == wyr TakNie TakNie

30 Instrukcja wyboru switch Instrukcja break: –powoduje wyjście z instrukcji switch. Etykieta default: –może znajdować się w dowolnym miejscu, –może w ogóle nie występować w instrukcji switch – wtedy, jeśli wartość wyrażenia nie zgadza się z żadną z wartości przy etykietach case, instrukcja switch nie wykonuje niczego. Instrukcji występujących po etykiecie case nie musi kończyć instrukcja break. Jeśli jej nie umieścimy, to zaczną wykonywać się instrukcje umieszczone pod następną etykietą case.

31 Instrukcja wyboru switch #include using namespace std; int main() { int a; cout << "Podaj liczbe" << endl; cin >> a; switch (a) { case 1: cout << "Podales liczbe jeden" << endl; break; case 2: cout << "Podales liczbe dwa" << endl; break; default: cout << "Nie podales ani liczby jeden ani dwa" << endl; } Wyrażenie Wartość Polecenia nie są w nawiasie {}

32 Instrukcja wyboru switch #include using namespace std; int main() { int a; cout << "Podaj liczbe" << endl; cin >> a; switch (a) { case 1: cout << "Podales liczbe jeden" << endl; case 2: cout << "Podales liczbe dwa" << endl; default: cout << "Nie podales ani liczby jeden ani dwa" << endl; }

33 switch vs if…else W przypadku instrukcji switch obiekt powinien być typu całkowitego W przypadku instrukcji if…else typ obiektu nie ma znaczenia W przypadku instrukcji switch obiekt porównywany jest ze stałą (znaną na etapie kompilacji) W przypadku instrukcji if…else obiekt może być porównywany z wyrażeniem zmiennym

34 switch vs if…else W przypadku instrukcji switch zwasze sprawdzana jest równość W przypadku instrukcji if…else porównanie może być dowolnym operatorem logicznym

35 Instrukcja sterująca break Instrukcja sterująca break przerywa natychmiast dzia- łanie innych instrukcji steru- jących: –switch, –for, –while, –do...while. Jeśli instrukcja break wys- tępuje wewnątrz kilku zag- nieżdżonych pętli, to przery- wa działanie tylko tej pętli, w której bezpośrednio tkwi (jest to tak jakby wyjście „o jeden poziom wyżej”). while( wyr ) { instr1; if( wyr_b ) break; instr2; } wyr instr1 Tak Nie wyr_b instr2 TakNie

36 Instrukcja sterująca break #include using namespace std; int main() { for (int i=1; ;i=i+1) { cout << i << endl; if (i==10) { break; } Pętla nieskończona Wyjście z pętli 1 2 3 4 5 6 7 8 9 10

37 Instrukcja sterująca continue Instrukcja sterująca continue stosowana jest w pętlach. Powoduje ona zaniechanie reali- zacji instrukcji będących treścią pętli, jednak (w przeciwieństwie do instrukcji break) sama pętla nie zostaje przerwana. Instrukcja continue przerywa tylko aktualny obieg pętli i zaczyna następny, kontynuując pracę pętli. Po wykonaniu instrukcji continue w pętli for wykony- wana jest i_krok. for(i_init; wyr ; i_krok){ instr1; if( wyr_c ) continue; instr2; } wyr instr1 Tak Nie wyr_c instr2 TakNie i_init i_krok

38 Instrukcja sterująca continue #include using namespace std; int main() { int n=5; for (int i=1; i<=10; i=i+1) { if (i==n) continue; cout << i << endl; } Przeskok na koniec pętli 1 2 3 4 6 7 8 9 10

39 Instrukcja skoku goto Po napotkaniu instrukcji skoku goto wykonywanie programu przenosi się do miejsca oznaczonego etykietą. Z instrukcją goto wiąże się zawsze etykieta, do której należy przeskoczyć. Etykieta musi znajdować się w aktualnym zakresie ważności. Etykieta to nazwa, po której następuje dwukropek.... if( war ) goto et1; instr1; instr2; et1: instr3; Używanie instrukcji goto zdradza (zazwyczaj), że jest się złym programistą. Instrukcji goto zawsze da się uniknąć (choć nie zawsze jest to efektywne).

40 Instrukcja goto #include using namespace std; int main() { for (int i=0; i<3; i=i+1) for (int j=0; j<3; j=j+1) for (int k=0; k<3; k=k+1) { cout<<i<<" "<<j<<" "<<k<<endl; if (i==1 && j==1 && k==1) goto koniec; } koniec: cout<<"KONIEC\n"; } Przeskok do koniec 0 0 0 0 0 1 0 0 2 0 1 0 0 1 1 0 1 2 0 2 0 0 2 1 0 2 2 1 0 0 1 0 1 1 0 2 1 1 0 1 1 1

41 Prezentacja udostępniona na licencji Creative Commons: Uznanie autorstwa, Na tych samych warunkach 3.0. Pewne prawa zastrzeżone na rzecz autorów. Zezwala się na dowolne wykorzystywanie treści pod warunkiem wskazania autorów jako właścicieli praw do prezentacji oraz zachowania niniejszej informacji licencyjnej tak długo, jak tylko na utwory zależne będzie udzielana taka sama licencja. Tekst licencji dostępny jest na stronie: http://creativecommons.org/licenses/by-sa/3.0/deed.pl


Pobierz ppt "Podstawy informatyki Zmienne, stałe Instrukcje sterujące Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu."

Podobne prezentacje


Reklamy Google