background image

Języki programowania II

Instrukcje języków programowania

Olsztyn 2005

Wojciech Sobieski

background image

Instrukcje

Instrukcje  są  jednym  z  najbardziej  podstawowych  elementów  języka 
programowania. Podstawowe instrukcje, występujące w wielu językach 
programowania (np. FORTRAN, PASCAL, BASIC) to:

  instrukcje  czynne  -  związane  są  bezpośrednio  z  tokiem

     obliczeń  i  wpływają  na  wartości  poszczególnych  zmiennych,

  instrukcje  bierne  -  są  elementami  pomocniczymi,  służącymi 

 do  organizacji  kodu  źródłowego  i  określenia  ogólnych 
   właściwości poszczególnych obiektów.

background image

Instrukcje

Instrukcje czynne:

 instrukcje przypisania,

 instrukcje sterujące:

skoku, zatrzymania, wstrzymania, końca, powrotu, warunkowa, 
wyboru, powtórzeń (pętli), wejścia-wyjścia.

Instrukcje bierne:

 specyfikacje segmentów i ich wejść,

 specyfikacje cech obiektów,

 specyfikacje formatu danych,

 instrukcje funkcji i procedur,

 instrukcje inicjowania danych.

background image

Instrukcje czynne

Instrukcja  przypisania  -  zwana  inaczej  instrukcją  podstawienia,  pozwala 
nadawać zmiennym określoną wartość. Instrukcja przypisania ma postać:

zmienna = wyrażenie

gdzie zmienna oznacza zmienną prostą lub element tablicy, zaś wyrażenie
jest dowolną wartością liczbową, logiczną lub tekstową (w zależności od 
typu  zmiennej)  lub  odpowiednio  wzorem  matematycznym,  funkcją 
tekstową lub zwrotem logicznym. 

background image

Instrukcje czynne

Zależnie  od  języka  programowania,  jako  symbol  przypisania  stosuje  się 
znak  “=”  (np.  FORTRAN,  BASIC),    “:=”  (np.  PASCAL)  lub  też 
wyrażenie słowne. W wyniku zastosowania instrukcji przypisania zmienia 
się bezpowrotnie wartość lewej strony zależności, elementy strony prawej 
nie  ulegają  zmianie.  Tworząc  instrukcję  przypisania  pamiętać  należy  o 
odpowiednim doborze typów i konsekwencjach ich mieszania.

Warto  podkreślić,  że  instrukcja  przypisania  nie  jest  tożsama  ze  wzorem 
matematycznym,  stąd  możliwe  są  podstawienia  typu  i  =  i+1,  fałszywe  z 
punktu widzenia matematyki, ale poprawne i często stosowane w językach 
programowania.

background image

Instrukcje czynne

Instrukcja  skoku  –  służy  do  przeniesienia  punktu  sterowania  w  inne, 
wcześniej  zdefiniowane,  miejsce  programu.  Instrukcja  skoku  nie  jest 
zalecana 

przez 

teoretyków 

programowania, 

jednak często znacznie ułatwia realizację algorytmu. Instrukcja skoku ma 
ogólną postać logiczną:

IDŹ DO nazwa miejsca

gdzie nazwa miejsca musi być już jednoznacznie zdeklarowana: może to 
być etykieta (FORTRAN) lub „label” (PASCAL).

background image

Instrukcje czynne

Instrukcja  zatrzymania  –  służy  do  bezwarunkowego  zakończenia 
wykonywanego  programu.  Instrukcja  często  spotykana  w  blokach 
podejmowania decyzji, uruchamiana gdy nie są spełnione warunki do 
wykonywania dalszych działań.

background image

Instrukcje czynne

Instrukcja wstrzymania – służy do chwilowego zatrzymania wykonywania 
programu. Kontynuacja może być podjęta wskutek działania użytkownika 
bądź też po upływie określonego czasu.

background image

Instrukcje czynne

Instrukcja powrotu – służy do wyjścia z podprogramu, procedury, funkcji 
lub też do wskazania ponownego wykonania pętli.

background image

Instrukcje czynne

Instrukcja  końca  –  służy  do  określenia  końca  programu,  procedury, 
funkcji, bloku deklaracji, bloku instrukcji bądź bloku inicjacji danych.

background image

Instrukcje czynne

Instrukcje warunkowe – służą do podejmowania decyzji w zależności od 
postawionych warunków: 

JEŻELI warunek TO instrukcja

lub

JEŻELI warunek1 TO instrukcja1 

            W INNYCH PRZYPADKACH instrukcja2

gdzie  warunek  jest  dowolnym  wyrażeniem  arytmetycznym,  relacją  lub 
wyrażeniem  logicznym,  a  instrukcja  dowolnym  blokiem  poleceń, 
wykonywanym gdy warunek jest prawdziwy.

background image

Instrukcje czynne

Często  zachodzi  konieczność  rozważenia  większej  liczby  możliwości, 
wówczas stosuje się inną konstrukcję logiczną:

JEŻELI warunek1 TO instrukcja1
JEŻELI ZAŚ warunek2 TO instrukcja2
JEŻELI ZAŚ warunek3 TO instrukcja3
JEŻELI ZAŚ warunek4 TO instrukcja4
……
W INNYCH PRZYPADKACH instrukcjaN

Zależnie od języka programowania budowa instrukcji warunkowych może 
być  nieco  inna,  mogą  też  występować  odmiany  instrukcji.  Tworząc 
instrukcję warunkową należy uwzględnić wszystkie możliwe przypadki – 
zaniedbanie  może  spowodować  błędne  działanie  programu  lub  też  jego 
zawieszenie.

background image

Instrukcje czynne

Inną typową instrukcją warunkową, występującą w wielu językach 
programowania,  jest  instrukcja  wyboru  (CASE)  o  ogólnej  postaci 
logicznej:

WYBIERZ ZALEŻNIE OD WARTOŚCI zmienna
JEŻELI (lista przypadków 1) TO instrukcja1
JEŻELI (lista przypadków 2) TO instrukcja2
JEŻELI (lista przypadków 3) TO instrukcja3
JEŻELI (lista przypadków 4) TO instrukcja4
...
DOMYŚLNIE  instrukcjaN

background image

Instrukcje czynne

gdzie  zmienna  jest  identyfikatorem  zmiennej,  zaś  lista  przypadków
zawiera  oczekiwane  wartości,  dla  których  mają  być  wykonane 
odpowiednie instrukcje. W instrukcji wyboru występuje często możliwość 
określenia wartości domyślnej - instrukcjaN, dla przypadku, gdy wartość 
zmiennej  nie  należy  do  żadnej  wymienionej  wyżej  listy  przypadków. 
Konkretna  realizacja  instrukcji  wyboru zależy  od  składni  użytego  języka 
programowania.

Instrukcja  wybory  CASE  może  być  realizowana  tylko  dla  zmiennej 
całkowitej.

background image

Instrukcje czynne

Instrukcje powtórzeń (pętle) – służą do wielokrotnego wykonania tego 
samego bloku instrukcji. Rozróżnia się dwa podstawowe typy instrukcji 
powtórzeń:

 o znanej z góry liczbie powtórzeń:

- realizowane “od dołu”,
- realizowane “od góry”,

 o nieznanej z góry liczbie powtórzeń:

- z warunkiem “na początku”,
- z warunkiem “na końcu”.

background image

Instrukcje czynne

Ogólna  postać  logiczna  pętli  o  znanej  liczbie  powtórzeń  wygląda 
następująco:

POWTARZAJ OD wartość1 DO wartość2 

instrukcje

gdzie  wartość1  i  wartość2  są  liczbami  typu  całkowitego,  a  instrukcje
dowolnym zestawem poleceń. Zestaw poleceń musi posiadać wskazanie 
początku i końca bloku. Czasami możliwe jest również określenie kroku 
przyrostu – licznik pętli nie musi bowiem wzrastać lub maleć zawsze o 1.

background image

Instrukcje czynne

Ogólna postać logiczna pętli o nieznanej liczbie powtórzeń z warunkiem 
na początku wygląda następująco (tzw. warunek WHILE w PASCALU):

JEŻELI warunek

= prawda WYKONAJ instrukcje I POWRÓĆ
= fałsz WYJDŹ Z PĘTLI

Należy podkreślić, że w przypadku, gdy warunek jest od razu fałszywy 
blok instrukcje nie zostanie wykonany ani razu.

background image

Instrukcje czynne

Ogólna  postać  logiczna  pętli  o  nieznanej  liczbie  powtórzeń  z 
warunkiem na końcu wygląda następująco (tzw. warunek REPEAT-
UNTIL w PASCALU):

WYKONAJ instrukcje I JEŻELI warunek

= prawda WYJDŹ Z PĘTLI
= fałsz POWRÓĆ

W tym przypadku blok instrukcje wykonany zostanie przynajmniej raz. 

background image

Instrukcje czynne

Instrukcje wejścia-wyjścia (I-O) – służą do przesyłania danych pomiędzy 
różnymi elementami komputera, takimi jak monitor, klawiatura, drukarka 
czy  plik.  Dla  informacji  wysyłanych  domyślnym  urządzeniem  jest 
monitor,  zaś  dla  informacji  wczytywanych:  klawiatura.  Przesyłane 
informacje  składają  się  z  rekordów.  Rekord  jest  to  elementarna  porcja 
informacji,  jaka  może  być  przesyłana  pomiędzy  urządzeniami 
zewnętrznymi a pamięcią operacyjną. W przypadku monitora i klawiatury 
pojedynczy rekord odpowiada wierszowi znaków na ekranie monitora, w 
przypadku drukarki wierszowi poleceń.

background image

Instrukcje czynne

Proces wprowadzania i wyprowadzania danych może być ograniczony do 
jednej tylko zmiennej, lub może być bardziej rozbudowany – służą do tego 
celu  tzw.  listy  wejścia  i  wyjścia.  Lista  zawiera  spis  zmiennych,  którym 
mają  być  przypisywane  wprowadzane  wartości  według  ich  kolejności. 
Ważne  jest,  aby  wartości  wprowadzane  odpowiadały  zadeklarowanym 
typom  zmiennych  i  aby  liczba  wprowadzonych  wartości  była  zgodna  z 
liczbą  elementów  listy.  Składnikami  listy  mogą  być  zmienne  proste, 
elementy  tablic,  łańcuchy  znakowe  oraz  nazwy  tablic  (oznacza  to 
przesłanie wszystkich elementów tej tablicy).

background image

Instrukcje czynne

W przypadku korzystania z plików należy określić rodzaj pliku oraz 
wskazać, że to on będzie “odbiorcą” lub “dawcą” informacji. 

Rozróżnia się dwa podstawowe rodzaje plików: 

- o dostępie sekwencyjnym,
- o dostępie swobodnym.

background image

Instrukcje czynne

Pliki  o  dostępie  sekwencyjnym  oferują  odczyt  elementów  pliku 
“od  początku”.  W  takim  przypadku,  aby  odczytać  n-ty  element  pliku, 
należy najpierw odczytać wszystkie elementy go poprzedzające. Pliki o 
dostępie  sekwencyjnym  są  wygodne  w  przypadku  zapisu  i  odczytu 
zmiennych indeksowanych (wektorów lub tablic), w których i tak trzeba 
przejść przez wszystkie indeksy. Pliki takie nie nadają się natomiast do 
zapisu  i  odczytu  informacji  przetwarzanych  “na  wyrywki”  –  jest  to  co 
prawda  możliwe,  ale  dużo  wolniejsze  niż  w  przypadku  korzystania  z 
plików o dostępie swobodnym.

background image

Instrukcje czynne

Pliki  o  dostępie  swobodnym  składają  się  z  ponumerowanych  rekordów, 
umożliwiających  bezpośredni  zapis  i  odczyt  w  dowolnym  rekordzie  (bez 
konieczności odczytu rekordów poprzedzających). Są bardzo przydatne do 
przetwarzania danych o strukturze baz danych.

background image

Instrukcje bierne

Specyfikacje  segmentów  i  ich  wejść  –  służą  do  wyodrębniania 
określonych  bloków  instrukcji  i  poleceń  stanowiących  pewną  logiczną 
całość.  Segmentem  może  być  podprogram,  procedura  lub  funkcja. 
Segmenty mogą być wywoływane w głównym bloku programu lub też w 
innych segmentach (co zależy często od odpowiedniej deklaracji).

background image

Instrukcje bierne

Podprogram  –  samodzielny  fragment  programu,  posiadający  zazwyczaj 
budowę  podobną  do  segmentu  głównego:  zawiera  oznaczenie  początku  i 
końca,  obszar  deklaracji  typów,  bloki  instrukcji,  itd.  Podprogram  może 
być wywoływany w segmencie głównym lub w innych podprogramach. W 
całym  programie  może  być  zazwyczaj  tylko  jeden  podprogram  o 
określonej nazwie, zaś ilość podprogramów jest nieograniczona. 

background image

Instrukcje bierne

Ogólna budowa logiczna podprogramu jest następująca:

POCZĄTEK BLOKU segment
instrukcje
WYWOŁAJ PODPROGRAM nazwa
instrukcje
KONIEC BLOKU segment

PODPROGRAM nazwa
instrukcje
KONIEC PORPROGRAMU nazwa

gdzie segment oznacza główny segment programu lub inny podprogram, 
instrukcje – dowolny zestaw poleceń i instrukcji, nazwa – identyfikator 
podprogramu.

background image

Instrukcje bierne

Procedura  –  element  podobny  do  podprogramu,  stanowiący  jego 
rozszerzenie dla języków sterowanych zdarzeniami w systemie. Ogólna 
postać logiczna procedury sterowanej zdarzeniem jest następująca:

PROCEDURA nazwa JEŻELI zdarzenie

instrukcje

KONIEC PROCEDURY nazwa

background image

Instrukcje bierne

gdzie  nazwa  jest  identyfikatorem  procedury,  instrukcje  -  dowolnym 
zestawem poleceń i instrukcji, zaś zdarzenie – dowolnym, ale konkretnie 
określonym zdarzeniem w systemie. Procedury nie muszą być sterowane 
zdarzeniami  -    spełniają  wówczas  rolę  podprogramów  i  mogą  być 
wywoływane  z  dowolnego  miejsca  programu  (jeżeli  mają  status 
“publiczny”),  lub  też  w  obrębie  bieżącego  modułu  (jeżeli  mają  status 
“prywatny”).  W  nagłówku  procedury  może  być  zawarta  lista 
przekazywanych zmiennych. Nie jest to zazwyczaj konieczne i zależy od 
woli programisty. 

background image

Instrukcje bierne

Zdarzenie – dowolne działanie wykonane przez program lub użytkownika 
(zdarzeniem może być np. kliknięcie myszką, naciśnięcie klawisza, wybór 
elementu  menu,  najechanie  kursorem  na  element  formularza,  aktywacja 
lub zamknięcie formularza, itd.).

background image

Instrukcje bierne

Funkcja  –  jest  to  również  samodzielny  segment  programu. 
W  odróżnieniu  od  podprogramu  lub  procedury,  funkcja  wykonuje 
konkretne  działania  na  zdefiniowanych  wcześniej  zmiennych  i  zwraca 
wynik.  Funkcja  wymaga  zazwyczaj  przekazania  listy  zmiennych  o 
określonych typach. Ogólna postać logiczna funkcji jest następująca:

FUNKCJA nazwa (lista zmiennych)
instrukcje
KONIEC FUNKCJI nazwa

gdzie nazwa jest identyfikatorem funkcji, instrukcje - dowolnym zestawem 
poleceń i instrukcji, zaś lista zmiennych – uporządkowanym zbiorem nazw 
zmiennych,  niezbędnych  do  obliczenia  funkcji.  W  funkcjach  mogą  być 
wykorzystane zmienne liczbowe, tekstowe, walutowe lub typu data i czas.

background image

Instrukcje bierne

Specyfikacje  cech obiektów – służą do określenia pewnych właściwości 
zmiennych, procedur lub funkcji. Zazwyczaj jest to rodzaj definiowanego 
obiektu  (zmienna  czy  stała),  rozmiar  zmiennej  indeksowanej,  obszar 
obowiązywania  (obiekt  “publiczny”  czy  “lokalny”),  zasady  organizacji 
pamięci,  itd.  Zależnie  od  języka  programowania,  jego  możliwości  w 
zakresie definicji cech obiektów mogą być bardzo zróżnicowane.

background image

Instrukcje bierne

Specyfikacje formatu danych – służą do określania wyglądu zmiennych 
podczas wyprowadzania lub wprowadzania danych. 

Procesowi formatowania podlegają najczęściej następujące elementy: 

background image

Instrukcje bierne

• całkowita liczba zajmowanych znaków. W przypadku gdy liczba znaków 
jest krótsza od zadeklarowanej, pozostałe znaki uzupełniane są spacjami (z 
przodu lub na końcu). W przypadku zaś, gdy liczba znaków jest dłuższa, 
znaki  ostatnie  są  obcinane  lub  też  zgłaszany  jest  błąd  wejścia-wyjścia. 
Spacja, znak wartości liczby (plus-minus) czy separator dziesiętny zajmują 
jeden znak.

background image

Instrukcje bierne

 liczba cyfr po przecinku (dla liczb rzeczywistych). Należy pamiętać, że 

zmiana formatu nie wpływa na zapisaną w pamięci komputera, bieżącą 
wartość  danej  ani  też  na  jej  dokładność.  Przykład  formatu  zmiennej  o 
wartości 1234,56789:

background image

Instrukcje bierne

  znak separatora dziesiętnego (dla liczb rzeczywistych) – przecinek lub 

kropka. Znak separatora może być definiowany w języku programowania 
lub  też  może  być  zmieniany  poprzez  zastosowanie  własnoręcznie 
napisanej funkcji. 

background image

Instrukcje bierne

 postać danej (dla liczb rzeczywistych). Dostępne możliwości to postać 

prosta  lub  wykładnicza.  W  postaci  wykładniczej  można  zazwyczaj 
określić całkowitą liczbę znaków oraz ilość cyfr wykładnika. Przykład 
formatu zmiennej o wartości 1234,56789 w postaci wykładniczej.

background image

Instrukcje bierne

  sposób  interpretacji  znaku  wartości  liczby.  Domyślnie  liczby  dodatnie 

nie posiadają podczas wyświetlania na monitor (lub zapisu do pliku) znaku 
“+”, można to jednak zmienić w większości języków programowania.

background image

Instrukcje bierne

 sposób interpretacji spacji (dotyczy wprowadzania danych). Określa, czy 

podczas  wprowadzania  wartości  liczbowych,  znak  spacji  ma  być 
ignorowany czy też nie.

background image

Instrukcje bierne

  sposób  zapisu  czasu  i  daty.  W  przypadku  czasu  określa  dokładność 

wyświetlania, (godzina, minuta, sekunda), zaś w przypadku daty określa 
kolejność  składników  oraz  sposób  wyświetlania  roku  (dwie  lub  cztery 
cyfry).

background image

Instrukcje bierne

Instrukcje funkcji i procedur – są tworzone przez programistę i służą do 
realizacji jednostkowych zadań algorytmu programu. 

background image

Instrukcje bierne

Instrukcje  inicjowania  danych  –  służą  do  nadawania  początkowych 
wartości  zmiennych.  Nadają  się  szczególnie  do  określania  wartości 
wektorów i tablic - jest to zazwyczaj znacznie wygodniejsze i szybsze niż 
indywidualne  przypisywanie  wartości  każdemu  elementowi  zmiennej 
indeksowanej.

background image

Wyjątki

Wyjątki  -  są  to  różne  błędy,  mogące  pojawić  się  podczas  działania 
programu. Przykładem może być dzielenie przez zero lub wprowadzenie 
nieodpowiedniego typu danej. Program zgłosi wówczas błąd i przestanie 
działać (czasem nawet zawiesi komputer). Aby tego uniknąć konieczne 
jest zastosowanie odpowiednich środków zaradczych. Można to uzyskać 
na kilka sposobów:

 poprzez stosowanie obsługi wyjątków,

 poprzez tworzenie własnych procedur wprowadzania danych,

 poprzez stosowanie tzw. masek wprowadzania.

background image

Wyjątki

Stosowanie obsługi wyjątków. Niektóre języki posiadają specjalne 
instrukcje pozwalające na kontrolę i eliminację błędów. 

Ogólna struktura logiczna obsługi błędów jest następująca

WYKONAJ

instrukcje

A JEŚLI SIĘ COŚ NIE UDA

instrukcje

KONIEC

background image

Wyjątki

lub

WYKONAJ

instrukcje

A JEŚLI SIĘ COŚ NIE UDA

GDY błąd1 TO instrukcja1
GDY błąd2 TO instrukcja2
GDY błąd3 TO instrukcja3
...

KONIEC

Zależnie  od  języka  programowania  i  jego  implementacji  obsługa  błędów 
może dotyczyć dowolnej instrukcji w programie lub też wybranego zbioru 
instrukcji  (np.  tylko  instrukcje  wejścia-wyjścia).  Pozostałe  fragmenty 
programu muszą być wówczas zabezpieczane inaczej.

background image

Wyjątki

Tworzenie  własnych  procedur  wprowadzania  danych.  Proces 
wprowadzania danych można tak zorganizować, że program nie przyjmie 
żadnej  innej  wartości  niż  prawidłowa.  Poprzez  odpowiednie  stosowanie 
instrukcji  warunkowych  można  określić  dopuszczalny  typ  danej  oraz 
zakres  jej  wartości.  W  każdym  innym  przypadku  program  wyświetli 
komunikat  o  błędzie  i  poprosi  o  ponowne  wprowadzenie  danej.  Taki 
system nie spowoduje przerwania pracy programu.

background image

Wyjątki

Stosowanie  tzw.  masek  wprowadzania.  Maska  wprowadzania  jest  to 
pewien  wzór,  według  którego  mają  być  wprowadzane  dane. 
W takim przypadku nie da się wprowadzić danych o innym wzorze niż 
zadeklarowany. Maski wprowadzania występują jedynie w aplikacjach 
posiadających formularze. 

background image

Olsztyn 2004

Dziękuję za uwagę

Wojciech Sobieski