Programowanie 2 - Ćwiczenia 5
Poprzednie
Następne
Temat: Podstawy programowania (zajęcia nieobowiązkowe).
Typy zmiennych
int
long
short
float
double
long double
char
deklaracje zmiennych, kwestia wskaźnika
zakres życia zmiennej
Instrukcje warunkowe
Konstrukcja instrukcji warunkowej w Java/C/C++ jest następująca:
if (wyrażenie) operacja_prawda
else operacja_fałsz;
Każda operacja (operacja_prawda lub operacja_fałsz) może być
równie dobrze blokiem operacji rozpoczynającym się od znaku { a
kończącym znakiem }.
Jeśli wyrażenie jest prawdziwe wykonana zostanie operacja_prawda.
Jeśli wyrażenie jest fałszywe wykonana zostanie operacja _fałsz.
Problem rozróżniania prawdy od fałszu w Java/C/C++ sprowadza się do sprawdzania,
czy coś ma wartość 0, czy też ma inną wartość.
0 (zero) zawsze oznacza fałsz
Każda inna wartość oznacza prawdę.
Każde sprawdzenie wartości logicznej odbywa się poprzez umieszczenie
pewnego wyrażenia w nawiasach.
I tak np. fragment kodu:
i = 1;
if (i) System.out.println("Prawda");
else System.out.println("Fałsz");
Wypisze nam na ekranie słowo "Prawda". Gdyby jednak zrobić:
i = 0;
if (i) System.out.println("Prawda");
else System.out.println("Fałsz");
wówczas na ekranie pojawi się słowo "Fałsz".
W nawiasach można też umieszczać dowolne operacje arytmetyczne, a do
określenia prawdy lub fałszu wzięty zostanie wynik działań. Np:
i = 1;
if (2*i-3+1/i) System.out.println("Prawda");
else System.out.println("Fałsz");
Na ekranie pojawi się słowo "Fałsz".
Oczywiście w nawiasach mogą się pojawiać standardowe operacje
porównania takie jak:
równe: ==
nierówne: !=
mniejsze: <
mniejsze-równe: <=
większe: >
więsze-równe: >=
Wyrażenie umieszczone w nawiasie zwraca zawsze wartość 1 lub 0, w
zależności od tego, czy dane porównanie jest prawdą, czy też fałszem.
Np:
i = 1;
if (i==1) System.out.println("Prawda");
else System.out.println("Fałsz");
Na ekranie pojawi się słowo "Prawda".
UWAGA:
Z tego, co pojawiło się wcześniej wynika, ze można robić tak:
int x,i;
i = 1;
x = (i==1)
System.out.println(x);
Na ekranie pojawi się liczba 1, gdyż i==1 było prawdą, czyli wartość
logiczna wyrażenia wyniosła 1.
Operatory logiczne
Wartości logiczne można oczywiście ze sobą łączyć używając odpowiednich
operatorów logicznych. Najważniejsze z nich to:
Koniunkcja: &&
Alternatywa: ||
Negacja: !
Oczywiście można je dowolnie łączyć, używając odpowiedniego
ponawiasowania. Np:
i = 1;
if ((i>=0) && (i<=10) && !(i==5)) System.out.println("Prawda"); //Prawda, jeśli i jest w przedziale od 1 do 10, ale nie jest 5
else System.out.println("Fałsz");
Pętle
While
while (warunek) operacja
Tak długo jak warunek jest prawdziwy, wykonywana jest operacja.
(Operacja może być oczywiście równie dobrze blokiem operacji rozpoczynającym się od znaku
{ a kończącym znakiem }).
do while
do operacja while (warunek)
Operacja zostanie wykonana raz, a następnie, tak długo jak warunek jest
prawdziwy, będzie powtarzana. (Operacja może być
oczywiście równie dobrze blokiem operacji rozpoczynającym się od znaku
{ a kończącym znakiem })
For
for (wartość_początkowa; warunek_konca; modyfikacja_zmiennej_sterującej) operacja;
Wartość_początkowa - ciąg instrukcji, które są wykonywane na początku, przy inicjalizacji pętli.
Najczęściej jest to nadanie wartości początkowych zmiennej sterującej.
Modyfikacja_zmiennej_sterującej - ciąg instrukcji, które są wykonywane natychmiast, po zakończeniu
jednego obiegu pętli. Najczęściej jest to modyfikacja zmiennej
sterującej, np. zwiększenie jej wartości.
Warunek_konca - warunek sprawdzany przed rozpoczęciem wykonania każdego obrotu pętli. Jeśli
warunek nie jest prawdziwy, wówczas pętla kończy swoje działanie.
(Operacja może być oczywiście równie dobrze blokiem operacji rozpoczynającym się od znaku
{ a kończącym znakiem })
Np:
for (int i=0; i<5; i++) operacja;
Ta pętla na początku zainicjuje zmienną i i przypisze jej wartość jeden.
Następnie operacja wykona się
5 razy. Będzie tak, gdyż 5 razy zwiększymy wartość zmiennej i o jeden i dopiero za 6 razem
warunek i<5 nie będzie prawdziwy.
Aby wykonać pewne operacje w nieskończoność można użyć następujących pętli:
while (1)
{
}
for (;;)
{
}
Operacje zakłócające przebieg pętli
Aby zmienić bieg działania pętli można użyć jedngo z dwóch poleceń
zakłócających przebieg pętli:
continue - przerywa działanie pętli i przechodzi do jej następnej iteracji
break- opuszcza pętle i kończy jej działanie
Tablice
Tablica to struktura danych, dzięki
której można w programach przetrzymywać ciągi liczb. Są to takie ciągi,
w których do każdego indeksu przypisane są odpowiednie wartości.
Indeksy w języku Java/C/C++ są zawsze liczbami całkowitymi od 0 do ustalonej
wartości. I tak np. ciąg 3,2,56,3,4 zapisany w tablicy będzie miał w
pozycji o indeksie 0 wartość 3, w pozycji 1 wartość 2 itd.
Tablice w Java/C/C++ deklaruje i używa się w następujący sposób:
int tablica[liczba_elementow];
scanf("%d",&tablica[1]);
tablica[2] = 2*tablica[1];
W ten sposób w pamięci zostanie
stworzna tablica, w której będziemy mogli umieszczać elementy w
miejscach o indeksach od 0 do liczba_elementow-1.
(UWAGA! Ten -1 jest bardzo ważny i trzeba o nim pamiętać. Np. zrobienie
tablicy Tab[3], a następnie odwołanie się do Tab[3] spowoduje błąd
wykonania programu, gdyż w tej tablicy będą dostępne tylko wartości
Tab[0], Tab[1] i Tab[2].)
Procedury i funkcje
Procedury i funkcje to takie kawałki programów, które mogą być
wywoływane z innych miejsc w programie dowolną liczbę razy. Czasem są
nazywane po prostu podprogramami.
Kształt ich zostanie omówiony dokładnie na zajęciach