Podstawy programowania

Podobne dokumenty
Podstawy programowania

Podstawy programowania

Podstawy programowania

Programowanie w Turbo Pascal

Podstawy programowania w języku C i C++

Podstawy programowania

Wprowadzenie do programowania w języku C

Podstawy programowania

Kilka prostych programów

Podstawy programowania

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

PoniŜej znajdują się pytania z egzaminów zawodowych teoretycznych. Jest to materiał poglądowy.

Konstrukcje warunkowe Pętle

Wykład II PASCAL - podstawy składni i zmienne, - instrukcje wyboru, - iteracja, - liczby losowe

Podstawy programowania w języku C++

INSTRUKCJA PUSTA. Nie składa się z żadnych znaków i symboli, niczego nie robi. for i := 1 to 10 do {tu nic nie ma};

Instrukcje podsumowanie. Proste: - przypisania - wejścia-wyjścia (read, readln, write, writeln) - pusta - po prostu ; (średnik) Strukturalne:

Podstawy programowania w języku C++

Instrukcja standardowa Writeln

Język programowania PASCAL

Języki programowania obiektowego Nieobiektowe elementy języka C++

INSTRUKCJE PĘTLI, INSTRUKCJA WYBORU. Instrukcja pętli For to do

Cw.12 JAVAScript w dokumentach HTML

Programowanie w języku C++ Agnieszka Nowak Brzezińska Laboratorium nr 2

WIADOMOŚCI WSTĘPNE WPROWADZENIE DO JĘZYKA TURBO PASCAL. Klawisze skrótów. {to jest właśnie komentarz, moŝna tu umieścić dowolny opis}

Pascal - wprowadzenie

Podstawy programowania

Programowanie w języku Python. Grażyna Koba

Języki programowania zasady ich tworzenia

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie

Podstawy programowania w języku C++

Instrukcja warunkowa i wyboru

JAVAScript w dokumentach HTML (1) JavaScript jest to interpretowany, zorientowany obiektowo, skryptowy język programowania.

for (inicjacja_warunkow_poczatkowych; wyrazenie_warunkowe; wyrazenie_zwiekszajace) { blok instrukcji; }

Podstawy programowania

1. Nagłówek funkcji: int funkcja(void); wskazuje na to, że ta funkcja. 2. Schemat blokowy przedstawia algorytm obliczania

Wykład II PASCAL - podstawy składni i zmienne, - instrukcje wyboru, - iteracja cz. 1

Programowanie Delphi obliczenia, schematy blokowe

1 Podstawy c++ w pigułce.

Informatyka 1. Wyrażenia i instrukcje, złożoność obliczeniowa

TEMAT: Podejmowanie decyzji w programie instrukcja warunkowa (IF).

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

Programowanie w języku C++

Podstawy Programowania Podstawowa składnia języka C++

Podstawy programowania w języku C++

Wprowadzenie komentarzy do programu

Instrukcje iteracyjne (pętle)

Instrukcje warunkowe i skoku. Spotkanie 2. Wyrażenia i operatory logiczne. Instrukcje warunkowe: if else, switch.

lekcja 8a Gry komputerowe MasterMind

for (inicjacja_warunkow_poczatkowych(końcowych); wyrazenie_warunkowe; wyrazenie_zwiekszajace(zmniejszające)) { blok instrukcji; }

Wstęp do programowania

Instrukcje sterujące. wer. 11 z drobnymi modyfikacjami! Wojciech Myszka :53:

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki

Powtórka algorytmów. Wprowadzenie do języka Java.

Algorytmika i Programowanie VBA 1 - podstawy

2.Sprawdzanie czy podana liczba naturalna jest pierwsza Liczba pierwsza to liczba podzielna tylko przez 1 i przez siebie.

1 Podstawy c++ w pigułce.

JAVAScript w dokumentach HTML (1)

ForPascal Interpreter języka Pascal

Języki programowania. Przetwarzanie tablic znaków. Część druga. Autorzy Tomasz Xięski Roman Simiński

PASCAL. Etapy pisania programu. Analiza potrzeb i wymagań (treści zadania) Opracowanie algorytmu Kodowanie Kompilacja Testowanie Stosowanie

Podstawy programowania skrót z wykładów:

Programowanie komputerowe. Zajęcia 1

Język ludzki kod maszynowy

typ zakres sposob zapamietania shortint integer bajty (z bitem znaku) longint byte word

Laboratorium Wstawianie skryptu na stroną: 2. Komentarze: 3. Deklaracja zmiennych

Wprowadzenie do programowania w języku C

do instrukcja while (wyrażenie);

Języki programowania. Przetwarzanie plików amorficznych Konwencja języka C. Część siódma. Autorzy Tomasz Xięski Roman Simiński

Lekcja 6: Pascal. Procedura i funkcja

#include <stdio.h> void main(void) { int x = 10; long y = 20; double s; s = x + y; printf ( %s obliczen %d + %ld = %f, Wynik, x, y, s ); }

Wykład IV Algorytmy metody prezentacji i zapisu Rzut oka na język PASCAL

Operacje wykonywane są na operandach (argumentach operatorów). Przy operacji dodawania: argumentami operatora dodawania + są dwa operandy 2 i 5.

#include <stdio.h> int main( ) { int x = 10; long y = 20; double s; s = x + y; printf ( %s obliczen %d + %ld = %f, Wynik, x, y, s ); }

Struktura pliku projektu Console Application

Informatyka 1. Wyrażenia i instrukcje cd., ręczna symulacja, operacje wejścia/wyjścia

Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek].

Odczyt danych z klawiatury Operatory w Javie

Podstawy Programowania C++

Nazwa implementacji: Nauka języka Python wyrażenia warunkowe. Autor: Piotr Fiorek. Opis implementacji: Poznanie wyrażeń warunkowych if elif - else.

Schematy blokowe I. 1. Dostępne bloki: 2. Prosty program drukujący tekst.

Pascal typy danych. Typy pascalowe. Zmienna i typ. Podział typów danych:

Visual Basic for Application (VBA)

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

Podstawy i języki programowania

Podstawy programowania w języku C++

JAVAScript w dokumentach HTML - przypomnienie

Podstawy programowania w języku C++

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 4 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44

1 Wprowadzenie do algorytmiki

Temat 1: Podstawowe pojęcia: program, kompilacja, kod

3. Podstawowe funkcje mamematyczne. ZAPOZNAĆ SIĘ!!!

Naukę zaczynamy od poznania interpretera. Interpreter uruchamiamy z konsoli poleceniem

Wprowadzenie do programowania w języku Visual Basic. Podstawowe instrukcje języka

Informatyka wprowadzenie do algorytmów (II) dr hab. inż. Mikołaj Morzy

Pliki. Operacje na plikach w Pascalu

Programowanie w języku Pascal

Programowanie. Wprowadzanie danych i wyprowadzanie wyników. Klasa 2 Lekcja 24 WEJŚCIE/WYJŚCIE

Transkrypt:

Podstawy programowania Część trzecia sterujące wykonaniem programu wprowadzenie Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie zawiera skrót treści wykładu, lektura tych materiałów nie zastąpi uważnego w nim uczestnictwa. Opracowanie to jest chronione prawem autorskim. Wykorzystywanie jakiegokolwiek fragmentu w celach innych niż nauka własna jest nielegalne. Dystrybuowanie tego opracowania lub jakiejkolwiek jego części oraz wykorzystywanie zarobkowe bez zgody autora jest zabronione.

Problem do rozwiązania Problem Zadaniem programu jest obliczanie, ile średnio litrów spala paliwa pojazd na trasie 100 km. Wartość ta zwana dalej średnim spalaniem obliczana jest na podstawie ilości zużytego przez pojazd paliwa oraz liczby przejechanych kilometrów. Scenariusz działania programu: Copyright Roman Simiński Strona : 2

Problem do rozwiązania Analiza Średnie spalanie wyznaczamy z proporcji: przejechany dystans [km] ilość paliwa [litry] 100 [km] x [litry] spalanie = ( 100 * ilość paliwa ) / przejechany dystans Do obliczenia średniego zużycia potrzebne są dwie wartości liczbowe, jak wyżej. Powinny to być liczby rzeczywiste. Program powinien zapytać użytkownika o te wartości, zapamiętać je, dokonać obliczeń oraz wyświetlić wynik. Program powinien reagować na niepoprawne dane wejściowe. Copyright Roman Simiński Strona : 3

Algorytm rozwiązania problemu Algorytm wersja 1-sza Wyświetl informacj ę wstępn ą do czego program służy Wyświetl zachęt ę do wprowadzenia przejechanego dystansu Wczytaj dystans Wyświetl zachęt ę do wprowadzenia ilości paliwa Wczytaj ilość paliwa Oblicz średnie spalanie wg. wzoru i wyświetl wynik Copyright Roman Simiński Strona : 4

Algorytm rozwiązania problemu Świat programisty Zmienna Dystans Zmienna Paliwo Odczytaj liczbę z klawiatury Odczytaj liczbę z klawiatury 500km 37l Wylicz średnie spalanie: ( Paliwo * 100 ) / Dystans Wyświetl wynik Świat użytkownika Copyright Roman Simiński Strona : 5

Algorytm rozwiązania problemu Algorytm wersja 2-ga Dane: Niech dystans to zmienna typu liczba rzeczywista Niech paliwo to zmienna typu liczba rzeczywista Akcje: Wyświetl 'Obliczam ile Twój pojazd spala paliwa na 100 km.' Nowa linia Wyświetl 'Wprowad ź dystans - liczb ę przejechanych kilometrów' Nowa linia Wyświetl 'oraz liczb ę litrów paliwa na tym dystansie zużytych.' Nowa linia Wyświetl 'Dystans : ' Wczytaj dystans Wyświetl 'Paliwo : ' Wczytaj paliwo Wyświetl 'Spalanie ' Wyświetl wartość wyrażenia ( paliwo * 100 ) / dystans Wyświetl 'l/100 km' Nowa linia Copyright Roman Simiński Strona : 6

Algorytm rozwiązania problemu Algorytm wersja 3-cia Dane: Niech dystans to zmienna typu liczba rzeczywista Niech paliwo to zmienna typu liczba rzeczywista Akcje: Wyświetl 'Obliczam ile Twój pojazd spala paliwa na 100 km.' Nowa linia Wyświetl 'Wprowad ź dystans - liczb ę przejechanych kilometrów' Nowa linia Wyświetl 'oraz liczb ę litrów paliwa na tym dystansie zużytych.' Nowa linia Wyświetl 'Dystans : ' Wczytaj dystans, wyznacz moduł tej liczby Wyświetl 'Paliwo : ' Wczytaj paliwo, wyznacz moduł tej liczby Jeżeli dystans jest równy 0 To Wyświetl 'Nie dokonam oblicze ń dla takiego dystansu.' W przeciwnym przypadku Wyświetl 'Spalanie ' Wyświetl wartość wyrażenia ( paliwo * 100 ) / dystans Wyświetl 'l/100 km' Nowa linia Copyright Roman Simiński Strona : 7

Algorytm rozwiązania problemu schemat blokowy Start Wyświetl 'Obliczam ile Twój pojazd spala paliwa na 100 km.' Nowa linia Wyświetl 'Wprowadź dystans - liczbę przejechanych kilometrów' Nowa linia Wyświetl 'oraz liczbę litrów paliwa na tym dystansie zużytych.' Nowa linia Wyświetl 'Dystans : ' Wczytaj dystans, wyznacz moduł tej liczby Wyświetl 'Paliwo : ' Wczytaj paliwo, wyznacz moduł tej liczby tak dystans jest równy 0 nie Wyświetl 'Nie dokonam obliczeń dla takiego dystansu.' Wyświetl 'Spalanie ' Wyświetl wartość wyrażenia: ( paliwo * 100 ) / dystans Wyświetl 'l/100 km' Nowa linia Stop Copyright Roman Simiński Strona : 8

Nowy element bloczek decyzyjny Przebieg wykonania programu tak warunek logiczny nie Instrukcja pierwsza Instrukcja druga Copyright Roman Simiński Strona : 9

Nowy element bloczek decyzyjny Którędy iść dalej? tak warunek logiczny nie Instrukcja pierwsza Instrukcja druga Copyright Roman Simiński Strona : 10

Nowy element bloczek decyzyjny, warunek prawdziwy Warunek spełniony (prawda logiczna) tak warunek logiczny nie Instrukcja pierwsza Instrukcja druga Copyright Roman Simiński Strona : 11

Nowy element bloczek decyzyjny, warunek prawdziwy tak warunek logiczny nie Instrukcja pierwsza Instrukcja druga Ta instrukcja zostanie wykonana Copyright Roman Simiński Strona : 12

Nowy element bloczek decyzyjny, warunek prawdziwy tak warunek logiczny nie Instrukcja pierwsza Instrukcja druga Przejście do dalszych instrukcji Copyright Roman Simiński Strona : 13

Nowy element bloczek decyzyjny, warunek fałszywy tak warunek logiczny nie Instrukcja pierwsza Instrukcja druga Ścieżka wykonania dla warunku fałszywego Copyright Roman Simiński Strona : 14

Blok decyzyjny a instrukcja alternatywy Schemat blokowy tak warunek logiczny nie Instrukcja pierwsza Instrukcja druga Pseudokod Jeż eli warunek logiczny To Instrukcja pierwsza W przeciwnym przypadku Instrukcja druga Język Pascal If warunek logiczny Then Instrukcja pierwsza Else Instrukcja druga Copyright Roman Simiński Strona : 15

Program obliczania średniego spalania Krok 1-szy program, który robi nic Program SrednieSpalanie; Begin End. Krok 2-gi wyświetlanie wizytówki Program SrednieSpalanie; Begin WriteLn( Obliczam ile Twoj pojazd spala paliwa na 100 km. ); WriteLn( Wprowadz dystans - liczbe przejechanych kilometrow ); WriteLn( oraz liczbe litrow paliwa na tym dystansie zuzytych. ); End. Copyright Roman Simiński Strona : 16

Program obliczania średniego spalania Krok 3-ci wczytywanie danych Program SrednieSpalanie; Var Dystans, Paliwo : Real; Begin WriteLn( Obliczam ile Twoj pojazd spala paliwa na 100 km. ); WriteLn( Wprowadz dystans - liczbe przejechanych kilometrow ); WriteLn( oraz liczbe litrow paliwa na tym dystansie zuzytych. ); Write( Dystans : ); ReadLn( Dystans ); Dystans := Abs( Dystans ); Write( Paliwo : ); ReadLn( Paliwo ); Paliwo := Abs( Paliwo ); End. Abs( Paliwo ); to wywołanie funkcji. Funkcja Abs pobiera wartość zmiennej Paliwo (to jest tzw. parametr wywołania funkcji), wyznacza moduł tej wartości i oddaje wartość bezwzględną w miejscu wywołania. Copyright Roman Simiński Strona : 17

Program obliczania średniego spalania Krok 3-ci wczytywanie danych, działanie ReadLn i Abs Przed wywołaniem ReadLn: Zawartość zmiennej Dystans??? -500 + klawisz Enter Wywołanie: ReadLn( Dystans ); Po wywołaniu ReadLn: Zawartość zmiennej Dystans -500 Wywołanie: Dystans := Abs( Dystans ); Po wywołaniu ReadLn: Zawartość zmiennej Dystans 500 Copyright Roman Simiński Strona : 18

Program obliczania średniego spalania Krok 4-ty wyznaczenie wyniku Program SrednieSpalanie; Var Dystans, Paliwo : Real; Begin WriteLn( Obliczam ile Twoj pojazd spala paliwa na 100 km. ); WriteLn( Wprowadz dystans - liczbe przejechanych kilometrow ); WriteLn( oraz liczbe litrow paliwa na tym dystansie zuzytych. ); Write( Dystans : ); ReadLn( Dystans ); Dystans := Abs( Dystans ); Write( Paliwo : ); ReadLn( Paliwo ); Paliwo := Abs( Paliwo ); WriteLn( Spalanie, ( Paliwo * 100 )/ Dystans : 0 : 2, l/100 km ); End. Copyright Roman Simiński Strona : 19

Program obliczania średniego spalania Krok 5-ty zabezpieczenie przed dzieleniem przez zero Program SrednieSpalanie; Var Dystans, Paliwo : Real; Begin WriteLn( Obliczam ile Twoj pojazd spala paliwa na 100 km. ); WriteLn( Wprowadz dystans - liczbe przejechanych kilometrow ); WriteLn( oraz liczbe litrow paliwa na tym dystansie zuzytych. ); Write( Dystans : ); ReadLn( Dystans ); Dystans := Abs( Dystans ); Write( Paliwo : ); ReadLn( Paliwo ); Paliwo := Abs( Paliwo ); If Dystans = 0 Then WriteLn( Nie dokonam obliczen dla zerowego dystansu ) Else Begin Write( Spalanie,( Paliwo*100 ) / Dystans : 0 : 2 ); WriteLn( l/100 km ); End; End. Copyright Roman Simiński Strona : 20

Program obliczania średniego spalania Instrukcja warunkowa If W Then I W tak nie I If W Then I W wyrażenie logiczne, przyjmuje wartość typu Boolean. Spełnia rolę warunku decydującego o przebiegu wykonania programu w obrębie instr. if. I dowolna, dozwolone syntaktycznie instrukcja. Boolean predefiniowany typ logiczny o dwóch dozwolonych wartościach: True oznacza wartość logiczną prawda, False oznacza wartość logiczną fałsz. Instrukcja If obejmuje swoim zasięgiem jedną instrukcję zapisaną dalej! Copyright Roman Simiński Strona : 21

Program obliczania średniego spalania Instrukcja alternatywy nie W tak If W Then I1 Else I2 I2 I1 If W Then I1 Else I2 W wyrażenie logiczne, przyjmuje wartość typu Boolean. Spełnia rolę warunku decydującego o przebiegu wykonania programu w obrębie instr. if. I1, I2 dowolne, dozwolone syntaktycznie instrukcje. Boolean predefiniowany typ logiczny o dwóch dozwolonych wartościach: True oznacza wartość logiczną prawda, False oznacza wartość logiczną fałsz. Przed słowem kluczowym Else nie stawiamy średnika! Copyright Roman Simiński Strona : 22

Program obliczania średniego spalania Instrukcja alternatywy nie dziel przez zero! tak Dystans = 0 nie WriteLn( Nie dokonam obliczen dla... ) Write( Spalanie, ( Paliwo * 100 ) / Dystans : 0 : 2 ); WriteLn( l/100 km ); Brak średnika If Dystans = 0 Then WriteLn( Nie dokonam obliczen dla zerowego dystansu ) Else Begin Write( Spalanie, ( Paliwo*100 ) / Dystans : 0 : 2 ); WriteLn( l/100 km ); End; Średnik w języku Pascal oddziela od siebie instrukcje Copyright Roman Simiński Strona : 23

Program obliczania średniego spalania Instrukcja złożona tak Dystans = 0 nie WriteLn( Nie dokonam obliczen dla... ) Write( Spalanie, ( Paliwo * 100 ) / Dystans : 0 : 2 ); WriteLn( l/100 km ); Instrukcja złożona If Dystans = 0 Then WriteLn( Nie dokonam obliczen dla zerowego dystansu ) Else Begin Write( Spalanie, ( Paliwo*100 ) / Dystans : 0 : 2 ); WriteLn( l/100 km ); End; Copyright Roman Simiński Strona : 24

Program obliczania średniego spalania Instrukcja złożona Wykonanie instrukcji złożonej polega na sekwencyjnym wykonaniu jej instrukcji wewnętrznych. Instrukcja złożona tworzy z ciągu instrukcji jedną instrukcję, poprzez ujęcie tego ciągu w nawiasy Begin i End. wewnętrzne oddziela się znakiem średnika (ustala on następstwo instrukcji w bloku), po ostatniej instrukcji wewnętrznej średnik jest zbędny. Begin ReadLn( Promien ); Obwod := 2 * Pi * Promien; WriteLn( Obwod ) End Instrukcja złożona ma takie same uprawnienia jak pojedyncza instrukcja Copyright Roman Simiński Strona : 25

Program obliczania średniego spalania Gdyby nie było instrukcji złożonej... tak Dystans = 0 nie WriteLn( Nie dokonam obliczen dla... ) Write( Spalanie, ( Paliwo * 100 ) / Dystans : 0 : 2 ); WriteLn( l/100 km ); If Dystans = 0 Then WriteLn( Nie dokonam obliczen dla zerowego dystansu ) Else Write( Spalanie, ( Paliwo*100 ) / Dystans : 0 : 2 ); WriteLn( l/100 km ); Copyright Roman Simiński Strona : 26

Program obliczania średniego spalania Wcięcia nie wpływają na wykonanie programu w języku Pascal If Dystans = 0 Then WriteLn( Nie dokonam obliczen dla zerowego dystansu ) Else Write( Spalanie, ( Paliwo*100 ) / Dystans : 0 : 2 ); WriteLn( l/100 km ); Te programy wykonają się tak samo If Dystans = 0 Then WriteLn( Nie dokonam obliczen dla zerowego dystansu ) Else Write( Spalanie, ( Paliwo*100 ) / Dystans : 0 : 2 ); WriteLn( l/100 km ); Copyright Roman Simiński Strona : 27

Program obliczania średniego spalania Programowanie defensywne nie pozwól na wprowadzenie błędnego dystansu Copyright Roman Simiński Strona : 28

Program obliczania średniego spalania Wczytywanie dystansu jak to działa? Write( 'Dystans : ' ); ReadLn( Dystans ); Dystans<=0 tak nie WriteLn( 'Prosze...' ); nie Dystans>0 tak Copyright Roman Simiński Strona : 29

Program obliczania średniego spalania Wczytywanie dystansu jak to działa? Write( 'Dystans : ' ); ReadLn( Dystans ); Dystans<=0 tak nie WriteLn( 'Prosze...' ); nie Dystans>0 tak Write( Dystans : ); ReadLn( Dystans ); If Dystans <= 0 Then WriteLn( Prosze wprowadzic prawidlowy dystans ) Copyright Roman Simiński Strona : 30

Program obliczania średniego spalania Wczytywanie dystansu jak to działa? Write( 'Dystans : ' ); ReadLn( Dystans ); Dystans<=0 tak nie WriteLn( 'Prosze...' ); nie Dystans>0 tak Repeat Write( Dystans : ); ReadLn( Dystans ); If Dystans <= 0 Then WriteLn( Prosze wprowadzic prawidlowy dystans ) Until Dystans > 0; Copyright Roman Simiński Strona : 31

Program obliczania średniego spalania Instrukcja iteracyjna Repeat-Until Instrukcja iteracyjna powoduje wielokrotne wykonanie pewnej grupy instrukcji. Instrukcja Repeat-Until powtarza instrukcje zapisane pomiędzy tymi słowami kluczowymi tak długo, aż wartość wyrażenia logicznego zapisanego po Until będzie prawdziwa. Repeat I Until W Repeat I Until W I Gdy wyrażenie logiczne (warunek) W jest: fałszywy (wartość False) iteracja trwa, fals e W prawdziwy (wartość True) iteracja się kończy. true Uwaga! Instrukcja I wykona się przynajmniej raz. Copyright Roman Simiński Strona : 32

Program obliczania średniego spalania Programowanie defensywne nie pozwól na wprowadzenie błędnej danej Program SrednieSpalanie; Var Dystans, Paliwo : Real; Begin WriteLn( Obliczam ile Twoj pojazd spala paliwa na 100 km. ); WriteLn( Wprowadz dystans - liczbe przejechanych kilometrow ); WriteLn( oraz liczbe litrow paliwa na tym dystansie zuzytych. ); Repeat Write( Dystans : ); ReadLn( Dystans ); If Dystans <= 0 Then WriteLn( Prosze wprowadzic prawidlowy dystans ) Until Dystans > 0; Write( Paliwo : ); ReadLn( Paliwo ); Paliwo := Abs( Paliwo ); Write( Spalanie, ( Paliwo * 100 ) / Dystans : 0 : 2, l/100 km ); End. Copyright Roman Simiński Strona : 33

Program obliczania średniego spalania na tym koniec Program SrednieSpalanie; Var Dystans, Paliwo : Real; Begin WriteLn( Obliczam ile Twoj pojazd spala paliwa na 100 km. ); WriteLn( Wprowadz dystans - liczbe przejechanych kilometrow ); WriteLn( oraz liczbe litrow paliwa na tym dystansie zuzytych. ); Repeat Write( Dystans : ); ReadLn( Dystans ); If Dystans <= 0 Then WriteLn( Prosze wprowadzic prawidlowy dystans ) Until Dystans > 0; Write( Paliwo : ); ReadLn( Paliwo ); Paliwo := Abs( Paliwo ); Write( Spalanie, ( Paliwo * 100 ) / Dystans : 0 : 2, l/100 km ); WriteLn( Nacisnij Enter by zakonczyc program... ); ReadLn; End. Copyright Roman Simiński Strona : 34

Repeat-Until z przymróżeniem oka sylwestrowe odliczanie ;-) Program SylwestroweOdliczanie; Var Licznik : Integer; Begin Writeln; Licznik := 10; Repeat WriteLn( Licznik,... ); Licznik := Licznik - 1; Until Licznik = 0; Write( Nowy Rok!!! ); ReadLn; End. 9 Licznik 9 10 10-1 Licznik := 10;... Licznik := Licznik- 1; 10 Licznik := Licznik- 1; Copyright Roman Simiński Strona : 35

Gierka Za dużo? Za mało? W sam raz? Copyright Roman Simiński Strona : 36

Gierka Za dużo? Za mało? W sam raz? Świat programisty Zmienna Wczytana Zmienna Wylosowana Odczytaj liczbę z klawiatury Wylosuj liczbę z przedziału 1.. 100 Spróbuję 50 Porównaj wartości zmiennych Wczytana i Wylosowana Wyświetl odpowiedni komunikat Świat użytkownika Copyright Roman Simiński Strona : 37

Gierka Za dużo? Za mało? W sam raz? Algorytm ogólny Start Wylosuj liczbę i zapamiętaj Wczytaj liczbę true Wczytana > Wylosowana false Wyświetl, że za dużo true Wczytana < Wylosowana false Wyświetl, że za mało Wyświetl, że za to ta liczba false Wczytana = Wylosowana true Stop Copyright Roman Simiński Strona : 38

Gierka Za dużo? Za mało? W sam raz? Algorytm szczegółowy Start Randomize; Wylosowana := Random( 100 ) + 1; Write( > ); ReadLn( Wczytana ); true Wczytana > Wylosowana false WriteLn( Za duzo ) true Wczytana < Wylosowana false WriteLn( Za malo ) WriteLn( Brawo, to ta liczba! ) false Wczytana = Wylosowana true Stop Copyright Roman Simiński Strona : 39

Gierka Za dużo? Za mało? W sam raz? 1-szy krok komunikat wstępny Program ZaDuzoZaMalo; Begin WriteLn; WriteLn('Odgadnij wylosowana liczbe (1..100).'); WriteLn('Podaj liczbe a ja powiem czy to za duzo, za malo albo w sam raz.'); End. 2-gi krok deklaracja zmiennych Program ZaDuzoZaMalo; Var Wylosowana, Wczytana : Integer; Begin WriteLn; WriteLn('Odgadnij wylosowana liczbe (1..100).'); WriteLn('Podaj liczbe a ja powiem czy to za duzo, za malo albo w sam raz.'); End. Copyright Roman Simiński Strona : 40

Gierka Za dużo? Za mało? W sam raz? Dwie formy deklarowania zmiennych Program ZaDuzoZaMalo; Var Wylosowana, Wczytana : Integer; Begin... End. Program ZaDuzoZaMalo; Var Wylosowana : Integer; Wczytana Begin... End. : Integer; Copyright Roman Simiński Strona : 41

Gierka Za dużo? Za mało? W sam raz? Można stosować komentarze Var Wylosowana : Integer; (* Tu odgadywana (wylosowana) wartość *) Wczytana : Integer; (* Tu wartość wczytana od użytkownika *) Var Wylosowana : Integer; { Tu odgadywana (wylosowana) wartość } Wczytana : Integer; { Tu wartość wczytana od użytkownika } Napisy występujące w kodzie programu, ujęte w znaczniki: (*... *) lub {... } są komentarzami, zawierają informacje i notatki istotne dla programisty lub innych osób analizujących kod źródłowy. Kompilator ignoruje zwykle zawartość komentarzy. Copyright Roman Simiński Strona : 42

Gierka Za dużo? Za mało? W sam raz? 3-ci krok losowanie liczby Program ZaDuzoZaMalo; Begin WriteLn; WriteLn('Odgadnij wylosowana liczbe (1..100).'); WriteLn('Podaj liczbe a ja powiem czy to za duzo, za malo albo w sam raz.'); Randomize; Wylosowana := Random( 100 ) + 1; End. Randomize inicjalizacja generatora liczb pseudolosowych. Trzeba wykonać raz, przed wywołąniem funkcji Random. Random( N ) funkcja generująca liczbę pseudolosową z przedziału 0..Ν 1. Wywołanie Random( 100 ) + 1 generuje liczbę z przedziału 1..Ν. Copyright Roman Simiński Strona : 43

Gierka Za dużo? Za mało? W sam raz? 4-ty krok iteracja sterująca Program ZaDuzoZaMalo; Begin WriteLn; WriteLn('Odgadnij wylosowana liczbe (1..100).'); WriteLn('Podaj liczbe a ja powiem czy to za duzo, za malo albo w sam raz.'); Randomize; Wylosowana := Random( 100 ) + 1; Repeat (*? *) Until Wylosowana = Wczytana; End. Copyright Roman Simiński Strona : 44

Gierka Za dużo? Za mało? W sam raz? 5-ty krok wczytanie liczby Program ZaDuzoZaMalo; Begin WriteLn; WriteLn('Odgadnij wylosowana liczbe (1..100).'); WriteLn('Podaj liczbe a ja powiem czy to za duzo, za malo albo w sam raz.'); Randomize; Wylosowana := Random( 100 ) + 1; Repeat Write( '>' ); ReadLn( Wczytana ); Until Wylosowana = Wczytana; End. Copyright Roman Simiński Strona : 45

Gierka Za dużo? Za mało? W sam raz? 6-ty krok porównanie liczby wylosowanej i wczytanej Program ZaDuzoZaMalo; Begin WriteLn; WriteLn('Odgadnij wylosowana liczbe (1..100).'); WriteLn('Podaj liczbe a ja powiem czy to za duzo, za malo albo w sam raz.'); Randomize; Wylosowana := Random( 100 ) + 1; Repeat Write( '>' ); ReadLn( Wczytana ); If Wczytana > Wylosowana Then WriteLn( 'Za duzo' ) Else If Wczytana < Wylosowana Then WriteLn( 'Za malo' ) Else WriteLn( 'Brawo, to ta liczba!' ); Until Wylosowana = Wczytana; End. Copyright Roman Simiński Strona : 46

Gierka Za dużo? Za mało? W sam raz? 7-ty krok daj szansę użytkownikowi zobaczyć, że wygrał Program ZaDuzoZaMalo; Var Wylosowana, Wczytana : Integer; Begin... Repeat Write( '>' ); ReadLn( Wczytana ); If Wczytana > Wylosowana Then WriteLn( 'Za duzo' ) Else If Wczytana < Wylosowana Then WriteLn( 'Za malo' ) Else WriteLn( 'Brawo, to ta liczba!' ); Until Wylosowana = Wczytana; WriteLn( 'Nacisnij Enter by zakonczyc program...' ); ReadLn; End. Copyright Roman Simiński Strona : 47

Instrukcja wyboru przykład zastosowania Problem Napisać program realizujący funkcje prostego kalkulatora, pozwalającego na wykonywanie operacji dodawania, odejmowania, mnożenia i dzielenia na dwóch liczbach rzeczywistych. Program ma identyfikować sytuację wprowadzenia błędnego symbolu działania oraz próbę dzielenia przez zero. Copyright Roman Simiński Strona : 48

Instrukcja wyboru przykład zastosowania Scenariusz działania programu: Copyright Roman Simiński Strona : 49

Instrukcja wyboru przykład zastosowania Analiza Do realizacji programu potrzebne są: dwie zmienne numeryczne (zapamiętane liczb-argumentów), zmienna znakowa (zapamiętanie znaku oznaczającego działanie). Liczba A 2 Liczba D + 4 Działanie B 2 Copyright Roman Simiński Strona : 50

Instrukcja wyboru przykład zastosowania Wersja pierwsza z instrukcjami warunkowymi Program Kalkulator1; Var A, B : Real; (* Zmienne przechowujące pierwsza i druga liczbe *) D : Char; (* Zmienna przechowujaca symbol dzialania *) Begin WriteLn; WriteLn( 'Wykonuje dzialania na dwoch liczbach.' ); WriteLn( 'Wczytam pierwsza liczbe, symbol dzialania'); WriteLn( 'potem druga liczbe i wyswietle wynik.' ); WriteLn( 'Dozwolone dzialania: + - * /' ); Write( ' Liczba: ' ); ReadLn( A ); Write( 'Dzialanie: ' ); ReadLn( D ); Write( ' Liczba: ' ); ReadLn( B ); (* nastepna strona >> *) Copyright Roman Simiński Strona : 51

Instrukcja wyboru przykład zastosowania Wersja pierwsza z instrukcjami warunkowymi, cd.... If Not ( D In [ '+', '-', '*', '/', '\' ] ) Then WriteLn( 'Niedozwolone dzialanie!' ) Else Begin If D = '+' Then WriteLn( ' Wynik : ', A + B : 5 : 5 ); If D = '-' Then WriteLn( ' Wynik : ', A - B : 5 : 5 ); If D = '*' Then WriteLn( ' Wynik : ', A * B : 5 : 5 ); If D In [ '/', '\' ] Then If B <> 0 Then WriteLn( ' Wynik : ', A / B : 5 : 5 ) Else WriteLn( 'Nie dziel przez zero' ); End; Write( 'Nacisnij Enter by zakonczyc...' ); ReadLn; End. Copyright Roman Simiński Strona : 52

Instrukcja wyboru przykład zastosowania Wersja druga, instrukcja wyboru Case Program Kalkulator2; Var A, B : Real; (* Zmienne przechowujące pierwsza i druga liczbe *) D : Char; (* Zmienna przechowujaca symbol dzialania *) Begin WriteLn; WriteLn( 'Wykonuje dzialania na dwoch liczbach.' ); WriteLn( 'Wczytam pierwsza liczbe, symbol dzialania'); WriteLn( 'potem druga liczbe i wyswietle wynik.' ); WriteLn( 'Dozwolone dzialania: + - * /' ); Write( ' Liczba: ' ); ReadLn( A ); Write( 'Dzialanie: ' ); ReadLn( D ); Write( ' Liczba: ' ); ReadLn( B ); (* nastepna strona >> *) Copyright Roman Simiński Strona : 53

Instrukcja wyboru przykład zastosowania Wersja druga, instrukcja wyboru Case, cd.... Case D Of '+' : WriteLn( ' Wynik : ', A + B : 5 : 5 ); '-' : WriteLn( ' Wynik : ', A - B : 5 : 5 ); '*' : WriteLn( ' Wynik : ', A * B : 5 : 5 ); '/', '\' : If B <> 0 Then WriteLn( ' Wynik : ', A / B : 5 : 5 ) Else WriteLn( 'Nie dziel przez zero' ); Else WriteLn( 'Niedozwolone dzialanie!' ) End; Write( 'Nacisnij Enter by zakonczyc...' ); ReadLn; End. Instrukcja wyboru Case pozwala, w pewnych warunkach, zastąpić sekwencję instrukcji warunkowych If. Copyright Roman Simiński Strona : 54

Instrukcja wyboru a instrukcje warunkowe Case D Of '+' : WriteLn( ' Wynik : ', A + B : 5 : 5 ); '-' : WriteLn( ' Wynik : ', A - B : 5 : 5 ); '*' : WriteLn( ' Wynik : ', A * B : 5 : 5 ); '/', '\' : If B <> 0 Then WriteLn( ' Wynik : ', A / B : 5 : 5 ) Else WriteLn( 'Nie dziel przez zero' ); Else WriteLn( 'Niedozwolone dzialanie!' ) End; If Not ( D In [ '+', '-', '*', '/', '\' ] ) Then WriteLn( 'Niedozwolone dzialanie!' ) Else Begin If D = '+' Then WriteLn( ' Wynik : ', A + B : 5 : 5 ); If D = '-' Then WriteLn( ' Wynik : ', A - B : 5 : 5 ); If D = '*' Then WriteLn( ' Wynik : ', A * B : 5 : 5 ); If D In [ '/', '\' ] Then If B <> 0 Then WriteLn( ' Wynik : ', A / B : 5 : 5 ) Else WriteLn( 'Nie dziel przez zero' ); End; Copyright Roman Simiński Strona : 55

Instrukcja wyboru a instrukcje warunkowe Case C Of 'A'.. 'Z' : WriteLn( 'To duza litera' ); 'a'.. 'z' : WriteLn( 'To mala litera' ); '0'.. '9' : WriteLn( 'To cyfra' ); Else WriteLn('To nie jest znak alfanumeryczny!') End; If ( C >= 'A' ) And ( C <= 'Z' ) Then WriteLn( 'To duza litera' ) Else If ( C >= 'a' ) And ( C <= 'z' ) Then WriteLn( 'To mala litera' ) Else If ( C >= '0' ) And ( C <= '9' ) Then WriteLn( 'To cyfra' ) Else WriteLn( 'To nie jest znak alfanumeryczny!' ); Copyright Roman Simiński Strona : 56

Instrukcja wyboru syntaktyka Instrukcja Case porównuje wartość selektora z listą przypadków. Jeżeli selektor występuje na liście przypadków (P 1, P 2,..., P N ), wykonywana jest instrukcja przypisana do tegoż przypadku. Instrukcja I M uruchamiana jest, gdy selektor S nie występuje na liście przypadków. Case S Of P 1 : I 1 ; P 2 : I 2 ;... P N : I N ; Else I M End Gdzie: S : selektor, P 1,..., P N : przypadki, I 1,..., I N : instrukcje. Copyright Roman Simiński Strona : 57

Instrukcja wyboru ograniczenia Copyright Roman Simiński Strona : 58