Konspekt z przedmiotu Programowanie strukturalne
Temat: Pętla REPEAT.
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ę REPEAT. Wykonuje ona jakieś polecenia co najmniej jeden raz dopóki warunek nie zostanie spełniony.
Ma ona postać:
REPEAT
Operacja
UNTIL (Warunek);
Przykład
i:=1;
Repeat
Begin
writeln (i);
i:=i+1;
End
UNTIL (i >= 1000);
Informacja. Ogólna zasada działania pętli. Schemat blokowy i opis słowny.
REPEAT - UNTIL jest instrukcją pętli z kontrolowanym WEJŚCIEM. Jej działanie polega wykonaniu instrukcji lub ciągu instrukcji i sprawdzeniu czy warunek nie został spełniony.
Warunek jest sprawdzany na końcu wykonania serii instrukcji zawierających się pomiędzy BEGIN i END; aż do instrukcji UNTIL sprawdzającej warunek.
Pętla wykona instrukcję co najmniej jeden raz - bo warunek jest sprawdzany na końcu.
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.
Informacja. Ogólna zasada działania pętli. Schemat blokowy i opis słowny.
PĘTLA REPEAT
Start -uruchomienie programu
inicjalizacja wstępna zmiennych - licznik:=1, n:=10
wczytaj n - program wczytuje n
Wykonanie przewidzianej operacji.
Operacja zwiększania licznika o 1 (INKREMENTACJA)
Iicznik >n - postawienie warunku
TAK - spełnienie warunku (licznik > n) zatrzymanie programu
NIE - niespełnienie warunku (licznik >n) dalsza praca programu
Powrót do wykonywanych operacji (pkt 4)
Prezentacja. Przedstawienie schematu programu pętla REPEAT.
program petla_repeat;
var i,j,k:integer;
begin
i:=1;
j:=1;
k:=10;
writeln('Program wypisuje liczby przy pomocy pętli');
repeat
begin
writeln (i);
i:=i+1;
end
until (i > 10);
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.
program w_kolko_chodzacy;
var a:integer;
begin
a:=1;
repeat
begin
{tu wpisuje sie kod programu}
writeln('Czy chcesz dalej kontynuowac?');
writeln('1-TAK, 0-NIE');
readln(a);
end
until (a=0);
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?
Praca samodzielna ucznia. Zmiana programu - wpisanie pętli dekrementacyjnej do programu.
Ćwiczenie. Modyfikacja programu, tak by odpowiadał schematowi blokowemu.
Program ma wczytywać wielkość n z zewnątrz i wypisywać liczby od 1 do n.
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 REPEAT w języku Pascal.
Interesujące rozwiązania.
ocena pracy słuchaczy.
program petla_repeat;
var i,j,k:integer;
begin
i:=1;
j:=1;
k:=10;
writeln('Program wypisuje liczby przy pomocy pętli');
repeat
begin
writeln (i);
i:=i+1;
end
until (i > 10);
readln;
end.
program petla_repeat;
var i,j,k:integer;
begin
i:=1;
j:=1;
k:=10;
writeln('Program wypisuje liczby przy pomocy pętli');
repeat
begin
writeln (i);
i:=i+1;
end
until (i > 10);
readln;
end.
program petla_repeat;
var i,j,k:integer;
begin
i:=1;
j:=1;
k:=10;
writeln('Program wypisuje liczby przy pomocy pętli');
repeat
begin
writeln (i);
i:=i+1;
end
until (i > 10);
readln;
end.
program petla_repeat;
var i,j,k:integer;
begin
i:=1;
j:=1;
k:=10;
writeln('Program wypisuje liczby przy pomocy pętli');
repeat
begin
writeln (i);
i:=i+1;
end
until (i > 10);
readln;
end.
program w_kolko_chodzacy;
var a:integer;
begin
a:=1;
repeat
{tu wpisuje sie kod programu}
writeln('Czy chcesz dalej kontynuowac?');
writeln('1-TAK, 0-NIE');
readln(a);
until (a=0);
end.
program w_kolko_chodzacy;
var a:integer;
begin
a:=1;
repeat
{tu wpisuje sie kod programu}
writeln('Czy chcesz dalej kontynuowac?');
writeln('1-TAK, 0-NIE');
readln(a);
until (a=0);
end.
program w_kolko_chodzacy;
var a:integer;
begin
a:=1;
repeat
{tu wpisuje sie kod programu}
writeln('Czy chcesz dalej kontynuowac?');
writeln('1-TAK, 0-NIE');
readln(a);
until (a=0);
end.
program w_kolko_chodzacy;
var a:integer;
begin
a:=1;
repeat
{tu wpisuje sie kod programu}
writeln('Czy chcesz dalej kontynuowac?');
writeln('1-TAK, 0-NIE');
readln(a);
until (a=0);
end.
program w_kolko_chodzacy;
var a:integer;
begin
a:=1;
repeat
{tu wpisuje sie kod programu}
writeln('Czy chcesz dalej kontynuowac?');
writeln('1-TAK, 0-NIE');
readln(a);
until (a=0);
end.
program suma_kilku_liczb;
var x,suma:real;
i,n:integer;
begin
i:=0;
n:=0;
x:=0;
suma:=0;
writeln('ile liczb mam wczytac?');
readln(n);
repeat
writeln('podaj kolejna liczbe');
readln(x);
suma:=suma+x;
i:=i+1;
until(i>=n);
writeln('suma wynosi ',suma);
readln;
end.
program suma_kilku_liczb;
var x,suma:real;
i,n:integer;
begin
i:=0;
n:=0;
x:=0;
suma:=0;
writeln('ile liczb mam wczytac?');
readln(n);
repeat
writeln('podaj kolejna liczbe');
readln(x);
suma:=suma+x;
i:=i+1;
until(i>=n);
writeln('suma wynosi ',suma);
readln;
end.
program suma_kilku_liczb;
var x,suma:real;
i,n:integer;
begin
i:=0;
n:=0;
x:=0;
suma:=0;
writeln('ile liczb mam wczytac?');
readln(n);
repeat
writeln('podaj kolejna liczbe');
readln(x);
suma:=suma+x;
i:=i+1;
until(i>=n);
writeln('suma wynosi ',suma);
readln;
end.
8
START
licznik := 1
n := 10
licznik := licznik +1
Wczytaj n
Wykonanie określonej operacji
STOP
licznik ≥n
NIE
TAK