Konspekt z przedmiotu Programowanie strukturalne
Temat: Pętla WHILE.
Prowadzący: inż. Marek Pudełko
Klasa I SP, specjalność technik Informatyk
Lekcja odbyła się 21.10.2004
Czas zajęć: 2 x 45 minut.
Cele dydaktyczne:
Nauczenie się konstruowania poprawnej pętli WHILE w języku Pascal.
Cele operacyjne:
Po zajęciach słuchacze powinni umieć:
Konstruować poprawną pętlę WHILE w języku Pascal
Modyfikować odpowiednio pętlę WHILE, by osiągnąć zamierzony efekt.
Środki dydaktyczne: komputer, tablica, karteczki z przykładowym programem.
Metody: pogadanka, praca z komputerem, praca samodzielna, dyskusja.
Formy: praca z zespołem klasowym, praca indywidualna słuchacza
Przebieg lekcji:
1) Część wstępna:
powitanie
sprawdzenie listy obecności
2) Lekcja właściwa:
Przypomnienie wiadomości. Co to jest pętla?
Pętla to struktura języka programowania, która pozwala na cykliczne wykonanie wiele razy tej samej (lub podobnej) operacji.
Pętla operuje na takich samych operacjach, danych, strukturach, obiektach czy procedurach.
Przykład. Unaocznienie potrzeby zastosowania pętli WHILE.
Pętla FOR służy do wykonania jakiegoś polecenia pewną ilość razy. Czasem jednak potrzeba nam, by pętla wykonywała się ze względu na jakiś warunek, a nie pewną ilość razy.
Dlatego należy zastosować pętlę WHILE. Wykonuje ona jakieś polecenia dopóki warunek jest spełniony.
Ma ona postać:
While (i < 1000) do
AX:=BX;
WHILE - DO jest instrukcją pętli z kontrolowanym WEJŚCIEM. Jej działanie polega na obliczeniu wartości warunku i dopiero wtedy wykonaniu instrukcji lub ciągu instrukcji.
Warunek jest sprawdzany na początku wykonania serii instrukcji występujących po DO i zawierających się pomiędzy BEGIN i END; - zwróć uwagę że END jest zakończony średnikiem.
Warunek zwraca wartość logiczną to znaczy
Jest spełniony - prawdę
Nie jest spełniony - fałsz.
Seria instrukcji będzie wykonywana dopóki warunek jest spełniony. Jak widać jak długo będą wykonywane instrukcje jest uzależnione od sterowania warunkiem pętli w tych że instrukcjach.
Składnia pętli WHILE.
WHILE warunek |
DOPÓKI warunek jest spełniony |
DO BEGIN |
WYKONUJ |
instrukcja 1; instrukcja 2; .... instrukcja n; END |
instrukcja 1; instrukcja 2; .... instrukcja n; KONIEC |
Informacja. Ogólna zasada działania pętli. Schemat blokowy i opis słowny.
PĘTLA WHILE
Start -uruchomienie programu
inicjalizacja wstępna zmiennych - licznik:=1, n:=10
wczytaj n - program wczytuje n
Iicznik ≤ n - postawienie warunku
Nie - niespełnienie warunku (licznik ≤ n) zatrzymanie programu
Tak - spełnienie warunku (licznik >n) dalsza praca programu
Wykonanie przewidzianej operacji.
Operacja zwiększania licznika o 1 (INKREMENTACJA)
Powrót do sprawdzenia warunku, dwie możliwości
NIE - zakończenie pracy programu
TAK - kontynuowanie procesu, aż do niespełnienia warunku
Prezentacja. Przedstawienie schematu programu pętla WHILE.
program petla_while;
var i,j,k:integer;
begin
i:=1;
j:=1;
k:=10;
writeln('Program wypisuje liczby przy pomocy pętli');
while (i <= 10) do
begin
writeln (i);
i:=i+1;
end;
readln;
end.
Ćwiczenie. Pisanie programu przez uczniów.
Praca z nauczycielem. Poprawa błędów powstałych przy kompilacji. Zaznaczenie pewnych fragmentów kodu przy pomocy klamer komentujących {,}.
Praca z tablicą. Wypisanie podstawowych kroków i fragmentów kodu tworzonych przez uczniów.
Praca samodzielna ucznia. Zmiana programu - wpisanie innych danych.
while (i < k) do
begin
writeln (i);
i:=i+1;
end;
Uczniowie zmieniają wartość i i k. Obserwują jak się zmienia efekt działania programu.
Liczb dodatnie, ujemne, zmiana znaku liczby.
Dodawanie możliwości wczytywania zmiennej i z klawiatury jak k.
Ćwiczenie. Jak zrobić pętlę liczącą w dół? Jak wyświetlić liczby od największej do najmniejszej? Uczniowie próbują znaleźć rozwiązanie korzystając z poprzednich ćwiczeń.
Wskazówka: W jaki sposób wyświetlają się liczby ujemne? A w jaki te ze zmienionym znakiem?
Ćwiczenie. Napisanie programu, któryby umożliwiał wczytanie kilku liczb i obliczenie ich sumy.
Program Suma_kilku_liczb;
var I:Integer;
Suma:Real;
X:Real
Begin
I:=1; {Nadanie wartości początkowej I - licznik}
Suma=0; {Nadanie wartości początkowej Suma}
WHILE I<=6 do
write ('podaj liczbę x=')
Readln(x);
Suma:=Suma+X;
Writeln (' suma=',Suma:6:2);
I:=I+1; {W tym miejscu sterujemy pętla przez}
END; {Zwiększanie licznika I}
Writeln (' końcowa suma=',Suma:6:2);
Readln;
end.
Ćwiczenie. Napisanie programu wypisującego na ekranie tabliczkę mnożenia.
Dyskusja. Porównanie efektów działania programów.
Zadanie domowe. Narysowanie schematu blokowego programu z pętlą dekrementacyjną.
3) Zajęcia końcowe:
powtórzenie materiału z lekcji:
Podstawowe problemy napotkane przy pisaniu programu.
Definicja pętli FOR w języku Pascal.
Interesujące rozwiązania.
ocena pracy słuchaczy.
program petla_while;
var i,j,k:integer;
begin
i:=1;
j:=1;
k:=10;
writeln('Program wypisuje liczby przy pomocy petli WHILE');
while (i<=10) do
begin
writeln (i);
i:=i+1;
end;
readln;
end.
program petla_while;
var i,j,k:integer;
begin
i:=1;
j:=1;
k:=10;
writeln('Program wypisuje liczby przy pomocy petli WHILE');
while (i<=10) do
begin
writeln (i);
i:=i+1;
end;
readln;
end.
program petla_while;
var i,j,k:integer;
begin
i:=1;
j:=1;
k:=10;
writeln('Program wypisuje liczby przy pomocy petli WHILE');
while (i<=10) do
begin
writeln (i);
i:=i+1;
end;
readln;
end.
program petla_while;
var i,j,k:integer;
begin
i:=1;
j:=1;
k:=10;
writeln('Program wypisuje liczby przy pomocy petli WHILE');
while (i<=10) do
begin
writeln (i);
i:=i+1;
end;
readln;
end.
program w_kolko_chodzacy;
var a:integer;
begin
a:=1;
while (a>0) do
begin
{tu wpisuje sie kod programu}
writeln('Czy chcesz dalej kontynuowac?');
writeln('1-TAK, 0-NIE');
readln(a);
end;
end.
program w_kolko_chodzacy;
var a:integer;
begin
a:=1;
while (a>0) do
begin
{tu wpisuje sie kod programu}
writeln('Czy chcesz dalej kontynuowac?');
writeln('1-TAK, 0-NIE');
readln(a);
end;
end.
program w_kolko_chodzacy;
var a:integer;
begin
a:=1;
while (a>0) do
begin
{tu wpisuje sie kod programu}
writeln('Czy chcesz dalej kontynuowac?');
writeln('1-TAK, 0-NIE');
readln(a);
end;
end.
program w_kolko_chodzacy;
var a:integer;
begin
a:=1;
while (a>0) do
begin
{tu wpisuje sie kod programu}
writeln('Czy chcesz dalej kontynuowac?');
writeln('1-TAK, 0-NIE');
readln(a);
end;
end.
5
START
licznik := 1
n := 10
licznik := licznik +1
Wczytaj n
Wykonanie określonej operacji
STOP
licznik ≤n
NIE
TAK