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)