tutaj
Transkrypt
tutaj
Omówienie zadań domowych... Sposób na notatki ● http://talenty.m01.pl/ → dział „Notatki” ● każdy niech sobie założy temat i wkleja, dzięki temu wszyscy będą mogli skorzystać :) Zasięg zmiennych ● Pytanie: czy jeśli zadeklaruję zmienną wewnątrz np.: ● pętli while, ● funkcji, ● if-a, ...to czy będzie ona też widoczna na zewnątrz? ● Sprawdźcie... Zmienne globalne ● ● ● ● intuicja: zmienna globalna to taka, którą widać wszędzie normalną zmienną widać od deklaracji do końca bloku... ...ale jeśli zadeklarujemy zmienną poza jakimkolwiek blokiem, to będzie ona widoczna do końca programu dzięki temu można np. sprawić, żeby można było użyć tej samej zmiennej w kilku funkcjach Przysłanianie zmiennych ● ● ● Co się stanie, jeśli zadeklaruję w pętli zmienną x, jeśli zmienna x już została wcześniej zadeklarowana poza pętlą? int x = 3; if (true) { int x = 5; cout << x << endl; } cout << x << endl; Co się wypisze? Dlaczego? Zadanie ● ● ● ● http://textbox.m01.pl/?xpDi skompilować, odpalić, powiedzieć co tam się dzieje (i może dopisać instrukcję obsługi na początku?) dodać nową operację - wypisywanie wyniku! przerobić to na obsługę konta bankowego - nie pozwalamy na debet! Tablice ● ● tablica to ciąg elementów tego samego typu deklaracja: ● TYP NAZWA[ILOSC_ELEMENTOW]; ● na przykład: – int tab[7]; - miejsce na 7 intów – char literki[26]; – string slowa[3]; Tablice, c.d. ● odwołanie: tab[INDEKS] ● ● ● ● na przykład tab[4] to piąty element zaczynamy indeksowanie od zera, więc pierwszy element to tab[0], ostatni (w przykładzie z poprzedniego slajdu) to tab[6] każdy element zachowuje się tak samo jak zmienna danego typu - można napisać – tab[3] = 2; – tab[2] = tab[3] + 1; indeks też może być dowolnym wyrażeniem – tab[tab[2]] = tab[6]; Pętla for ● Najczęściej używana postać: for (int i=0; i<n; i++) { //zrób coś z tab[i] ... } (gdzie n to wielkość tablicy tab) ● to się wykona dla i=0, 1, 2, … n-2, n-1 czyli robimy coś z tab[0], tab[1], tab[2], ..., tab[n-2], tab[n-1] ● ćwiczenie: wypisać wszystkie elementy tablicy. Tablice, c.d. ● ● Szybka inicjalizacja: ● int tab[4] = {192, 168, 1, 2}; ● int tab[2] = {1, 2, 3, 4, 5}; ● int tab[5] = {1, 2}; ● int tab[] = {123,132,213,231,312,321}; ● int tab[40] = {0}; Co robi każda z tych instrukcji? (sprawdźcie! umiecie już wypisać elementy...) Zadanie ● Wczytać n liczb, a następnie wypisać je w odwrotnej kolejności czy da się to zrobić bez tablicy? dlaczego się nie da? :) Napisy ● #include <string> ● deklaracja: string blablabla; ● wczytywanie: cin >> blablabla; to wczyta jedno słowo, niezależnie od długości ● napisy też zachowują się jak tablice: blablabla[2] - trzeci znak ● ale (w przeciwieństwie do tablic) można dowiedzieć się, jaką mają długość: blablabla.size() Sztuczki ze znakami ● znaki można porównywać 'a' < 'b', 'A' < 'Z' ● test na wielkie litery znak >= 'A' && znak <= 'Z' na małe litery - podobnie ● arytmetyka 'a' + 1 == 'b' ● znaki zachowują się jak liczby, bo to są tak naprawdę liczby (kody znaków) ● ściąga: http://ascii-table.com/ Zadanie ● Zadanie w czterech smakach: ● ● ● ● ● Sprawdzić, czy napis składa się z samych wielkich liter Sprawdzić, czy napis składa się z samych małych liter Sprawdzić, czy napis zawiera jakąś wielką literę Sprawdzić, czy napis zawiera jakąś małą literę Robimy oczywiście wszystkie :) Zadania domowe ● do wyboru - wczytać napis, a następnie: ● policzyć, ile zawiera liter ‘a’ ● wypisać z niego znak o największym kodzie ● wypisać z niego wszystkie małe litery ● wypisać z niego wszystkie cyfry ● wypisać go od tyłu ● sprawdzić, czy zawiera ‘@’ ● sprawdzić, czy zawiera ‘:)’ (wbrew pozorom jest to troszkę trudniejsze) ● sprawdzić, czy jest palindromem (czyli czy czytany od końca da to samo)