Konspekt z przedmiotu Programowanie strukturalne
Temat: Funkcja IF.
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 alternatywa?
Alternatywa zwykła, nierozłączna, suma logiczna — zdanie złożone z dwóch zdań połączonych funktorem ekstensjonalnym „... lub ...” (np. „Zwyciężę lub zginę”)
Przykład. Unaocznienie potrzeby zastosowania instrukcji wyboru IF.
Musimy dokonać jakiegoś wyboru. Mamy do wyboru dwie możliwości: TAK lub NIE.
Informacja. Ogólna zasada działania instrukcji wyboru IF. Schemat blokowy i opis słowny.
Instrukcja wyboru IF
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?
Informacja. Warunki zagnieżdżone.
W języka Paskal istnieje możliwość wprowadzenia warunków zagnieżdżonych.
Praca samodzielna ucznia. Zmiana programu - wpisanie pętli dekrementacyjnej do programu.
Ćwiczenie. Uczniowie piszą program, otrzymany na karteczkach.
program kalkulator;
var x,y,z:real;
a:integer;
begin
writeln ('To program kalkulacyjny');
writeln ('Wybierz dzialanie, jakie chcesz wykonac');
writeln ('1 - dodawanie');
writeln ('2 - odejmowanie');
writeln ('3 - mnozenie');
writeln ('4 - dzielenie');
readln(a);
writeln ('Podaj pierwsza liczbe');
readln(x);
writeln ('Podaj druga liczbe');
readln(y);
if a=1 then
z:=x+y
else
if a=2 then
z:=x-y
else
if a=3 then
z:=x*y
else
if a=4 then
z:=x/y;
writeln (z:10:3);
readln;
end.
Program ma umożliwiać wykonanie prostych działań matematycznych.
Ćwiczenie. Dodanie pętli, która umożliwia ciągłe wykonanie programu.
Ćwiczenie. Zamiana warunków zagnieżdżonych na proste.
S. S
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_for;
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_for;
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_for;
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_for;
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 kalkulator;
var x,y,z:real;
a:integer;
begin
writeln ('To program kalkulacyjny');
writeln ('Wybierz dzialanie, jakie chcesz wykonac');
writeln ('1 - dodawanie');
writeln ('2 - odejmowanie');
writeln ('3 - mnozenie');
writeln ('4 - dzielenie');
readln(a);
writeln ('Podaj pierwsza liczbe');
readln(x);
writeln ('Podaj druga liczbe');
readln(y);
if a=1 then
z:=x+y
else
if a=2 then
z:=x-y
else
if a=3 then
z:=x*y
else
if a=4 then
z:=x/y;
writeln (z:10:3);
readln;
end.
program kalkulator;
var x,y,z:real;
a:integer;
begin
writeln ('To program kalkulacyjny');
writeln ('Wybierz dzialanie, jakie chcesz wykonac');
writeln ('1 - dodawanie');
writeln ('2 - odejmowanie');
writeln ('3 - mnozenie');
writeln ('4 - dzielenie');
readln(a);
writeln ('Podaj pierwsza liczbe');
readln(x);
writeln ('Podaj druga liczbe');
readln(y);
if a=1 then
z:=x+y
else
if a=2 then
z:=x-y
else
if a=3 then
z:=x*y
else
if a=4 then
z:=x/y;
writeln (z:10:3);
readln;
end.
program znak_liczby;
var x:integer;
begin
writeln ('Podaj liczbę do porównania');
readln(x);
if x>0
then
writeln ('Liczba x jest wieksza od zera')
else
writeln ('Liczba x jest mniejsza od zera');
readln;
end.
program znak_liczby;
var x:integer;
begin
writeln ('Podaj liczbę do porównania');
readln(x);
if x>0
then
writeln ('Liczba x jest wieksza od zera')
else
writeln ('Liczba x jest mniejsza od zera');
readln;
end.
program znak_liczby;
var x:integer;
begin
writeln ('Podaj liczbę do porównania');
readln(x);
if x>0
then
writeln ('Liczba x jest wieksza od zera')
else
writeln ('Liczba x jest mniejsza od zera');
readln;
end.
program znak_liczby;
var x:integer;
begin
writeln ('Podaj liczbę do porównania');
readln(x);
if x>0
then
writeln ('Liczba x jest wieksza od zera')
else
writeln ('Liczba x jest mniejsza od zera');
readln;
end.
7
START
licznik := 1
n := 10
licznik := licznik +1
Wczytaj n
Wykonanie określonej operacji
STOP
licznik ≤n
NIE
TAK