programowanie strukturalne i obiektowe c++
DESCRIPTION
Programowanie strukturalne i obiektowe C++. Powtórzenie wiadomości z C++. Robert Nowak. Schemat prostego programu. Dyrektywy preprocesora. - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: Programowanie strukturalne i obiektowe C++](https://reader035.vdocuments.mx/reader035/viewer/2022081511/56813105550346895d9734e0/html5/thumbnails/1.jpg)
Programowanie strukturalne i obiektowe
C++
Powtórzenie wiadomości z C++
Robert Nowak
![Page 2: Programowanie strukturalne i obiektowe C++](https://reader035.vdocuments.mx/reader035/viewer/2022081511/56813105550346895d9734e0/html5/thumbnails/2.jpg)
Schemat prostego programu
#include <iostream>
using namespace std;
int main()
{
instukcje;
return 0;
}
![Page 3: Programowanie strukturalne i obiektowe C++](https://reader035.vdocuments.mx/reader035/viewer/2022081511/56813105550346895d9734e0/html5/thumbnails/3.jpg)
Dyrektywy preprocesora
Wszystkie dyrektywy preprocesora poprzedzone są znakiem #. Wszystkie dyrektywy preprocesora są wykonywane przez specjalny program zwany preprocesorem stąd ich nazwa.
Najczęściej wykorzystywaną dyrektywą preprocesora jest dyrektywa include – służy ona do dołączania plików nagłówkowych. Każdy z tych plików rozszerza możliwości C++.
Dzięki plikowi iostream możemy wypisywać zarówno liczby jak i tekst oraz wczytywać w prosty sposób dane wprowadzane przez użytkownika programu.
![Page 4: Programowanie strukturalne i obiektowe C++](https://reader035.vdocuments.mx/reader035/viewer/2022081511/56813105550346895d9734e0/html5/thumbnails/4.jpg)
Przestrzenie nazw Wraz z rozwojem języka ilość bibliotek stale rosła, a unikatowych nazw dla funkcji i zmiennych zaczynało brakować. Wymyślono wówczas przestrzenie nazw, mające zapobiegać problemowi nakładania się nazw. Dawniej, aby wyświetlić tekst wystarczyło napisać:
cout<<"napis"<<endl;
teraz natomiast trzeba pisać
std::cout<<"napis"<<std::endl;
lub poinformować kompilator, że chcemy używać przestrzeni nazw std bez przedrostka. Linijka, którą informujemy kompilator o takiej zmianie to:
using namespace ...;
gdzie za wielokropek wstawiamy nazwę przestrzeni.
![Page 5: Programowanie strukturalne i obiektowe C++](https://reader035.vdocuments.mx/reader035/viewer/2022081511/56813105550346895d9734e0/html5/thumbnails/5.jpg)
Główna funkcja programu - main
Kiedy uruchamiamy nasz program, zaczyna on wykonywać kod zawarty w funkcji main(). Od niej więc rozpoczyna się działanie aplikacji – a nawet więcej: na niej też to działanie
się kończy. Zatem program (konsolowy) to przede wszystkim kod zawarty w funkcji main() – determinuje on bezpośrednio jego zachowanie.
Funkcja ta musi mieć zawsze nazwę main – tak ktoś sobie wymyślił, że główna funkcja programu tak się nazywa i tak już pozostało do dzisiaj.
![Page 6: Programowanie strukturalne i obiektowe C++](https://reader035.vdocuments.mx/reader035/viewer/2022081511/56813105550346895d9734e0/html5/thumbnails/6.jpg)
Najprostsza funkcja main (która nic nie robi), wygląda tak:
int main(){ return 0;}
Jeśli chcemy, aby nasz program cokolwiek wykonał, musimy umieścić dodatkowy kod pomiędzy { oraz return 0;
![Page 7: Programowanie strukturalne i obiektowe C++](https://reader035.vdocuments.mx/reader035/viewer/2022081511/56813105550346895d9734e0/html5/thumbnails/7.jpg)
Operacje Wejścia/Wyjścia
Do wypisywania i wczytywania danych używamy tzw. strumieni.
cout - obsługuje wyprowadzanie danych na standardowe wyjście, czyli ekran.cin - obsługuje wprowadzanie danych ze standardowego wejścia, czyli klawiatury.
Używamy do tego dodatkowo operatorów wstawiania << i pobrania >> danych do i ze strumienia.
![Page 8: Programowanie strukturalne i obiektowe C++](https://reader035.vdocuments.mx/reader035/viewer/2022081511/56813105550346895d9734e0/html5/thumbnails/8.jpg)
Zatrzymanie wykonywania programu
Aby obejrzeć wyniki wykonania programu używaliśmy funkcji getchar(), która służy do wczytywania znaków z klawiatury. W naszym przypadku zatrzymywała wykonywanie programu do naciśnięcia dowolnego klawisza
![Page 9: Programowanie strukturalne i obiektowe C++](https://reader035.vdocuments.mx/reader035/viewer/2022081511/56813105550346895d9734e0/html5/thumbnails/9.jpg)
Określenie typu zmiennej
W języku C++ musimy jawnie określić typ zmiennej. Określenie typu zmiennej jest bardzo proste. Symbolicznie, robi się to następująco:
nazwa_typu nazwa_zmiennej;
Określenie nazwa_typu to typ, jaki będziemy chcieli, aby miała nasza zmienna. Tutaj nie możemy wpisać dowolnego słowa. Typy w języku C++ są określone i musimy użyć jednego ze specjalnych słów. Z kolei nazwa_zmiennej to nazwa, jaką wymyślimy dla zmiennej. Nazwa zmiennej to tzw. identyfikator.
![Page 10: Programowanie strukturalne i obiektowe C++](https://reader035.vdocuments.mx/reader035/viewer/2022081511/56813105550346895d9734e0/html5/thumbnails/10.jpg)
Podstawowe typy liczbowe
Podstawowe typy liczbowe występujące w języku C++ to:
int - typ całkowity, zakres wartości: -2147483648 ÷ 2147483647, zajmuje 4 bajty pamięci
float - typ zmiennopozycyjny (ułamkowy), zakres wartości: 1,2 10-38 ÷ 3,4 1038 dokładność 7 cyfr, zajmuje 4 bajty pamięci
double - typ zmiennopozycyjny podwójnej precyzji (dokładniejszy niż typ float), zakres wartości: 2,2 10-308 ÷ 1,8 10308 dokładność 15 cyfr, zajmuje 8 bajty pamięci
![Page 11: Programowanie strukturalne i obiektowe C++](https://reader035.vdocuments.mx/reader035/viewer/2022081511/56813105550346895d9734e0/html5/thumbnails/11.jpg)
Typ znakowy
Typ znakowy umożliwia przechowywanie jednego znaku. Typ znakowy w języku C++ to:
char - typ znakowy
Znaki zapisujemy w pojedynczych cudzysłowach ' (apostrofach). Na przykład poniższa instrukcja spowoduje wypisanie litery a, spacji, a następnie litery b.
cout <<'a'<<' '<<'b';
![Page 12: Programowanie strukturalne i obiektowe C++](https://reader035.vdocuments.mx/reader035/viewer/2022081511/56813105550346895d9734e0/html5/thumbnails/12.jpg)
Czym są operatory
Operatory w C++ pełnią funkcję podobną jak operatory w matematyce. Umożliwiają one po prostu przeprowadzanie różnych działań na zmiennych. Samych grup operatorów jest co najmniej kilka, dlatego czas je poznać, bowiem bez nich dalsza nauka języka nie będzie możliwa.
![Page 13: Programowanie strukturalne i obiektowe C++](https://reader035.vdocuments.mx/reader035/viewer/2022081511/56813105550346895d9734e0/html5/thumbnails/13.jpg)
Najważniejszy operator – operator przypisania
Jednym z najważniejszych operatorów w języku C++ jest operator przypisania. Operator ten umożliwia przypisywanie wartości danej zmiennej.
= operator przypisania (to nie jest operator równości!)
Aby dokonać przypisania, po lewej stronie operatora musimy mieć nazwę zmiennej, a po prawej stronie wyrażenie którego wartość chcemy przypisać zmiennej.
zmienna = wyrażenie;
![Page 14: Programowanie strukturalne i obiektowe C++](https://reader035.vdocuments.mx/reader035/viewer/2022081511/56813105550346895d9734e0/html5/thumbnails/14.jpg)
Operatory arytmetyczne
Kolejną grupę stanowią operatory arytmetyczne. Operatory te działają jak znane z matematyki operatory. Oto lista dostępnych operatorów arytmetycznych:
+ operator dodawania,
- operator odejmowania,
* operator mnożenia,
/ operator dzielenia,
% operator reszty z dzielenia (zwany operatorem modulo)
+ operator znaku liczby (np. +3), liczba domyślnie jest zawsze dodatnia
- operator znaku liczby (np. -45, -5.678).
![Page 15: Programowanie strukturalne i obiektowe C++](https://reader035.vdocuments.mx/reader035/viewer/2022081511/56813105550346895d9734e0/html5/thumbnails/15.jpg)
Instrukcja złożona
Instrukcją złożoną nazywa się sekwencję instrukcji ujętą w parę nawiasów klamrowych:
{instrukcja-1;instrukcja-2;...instrukcja-n;}
W składni języka taka sekwencja jest traktowana jako jedna instrukcja. Instrukcje złożone mogą być zagnieżdżane.
![Page 16: Programowanie strukturalne i obiektowe C++](https://reader035.vdocuments.mx/reader035/viewer/2022081511/56813105550346895d9734e0/html5/thumbnails/16.jpg)
Instrukcja warunkowa „jeśli”
Ogólna postać instrukcji „jeśli” jest następująca:
if (wyrażenie) instrukcja
lub
if (wyrażenie) instrukcja1;
else instrukcja2;
gdzie wyrażenie musi wystąpić w nawiasach okrągłych, zaś żadna z instrukcji nie może być instrukcją deklaracji.
![Page 17: Programowanie strukturalne i obiektowe C++](https://reader035.vdocuments.mx/reader035/viewer/2022081511/56813105550346895d9734e0/html5/thumbnails/17.jpg)
Opis działania instrukcji „jeśli”
Wykonanie instrukcji if zaczyna się od obliczenia wartości wyrażenia. Jeżeli wyrażenie ma wartość różną od zera (prawda), to będzie wykonana instrukcja (lub instrukcja1); jeżeli wyrażenie ma wartość zero (fałsz), to w pierwszym przypadku instrukcja jest pomijana, a w drugim przypadku wykonywana jest instrukcja2. Każda z występujących tutaj instrukcji może być instrukcją prostą lub złożoną, bądź instrukcją pustą.
Pierwsza postać instrukcji „jeśli” nazywana jest instrukcją warunkową „jeśli” prostą, a druga instrukcją warunkową „jeśli” z alternatywą.
![Page 18: Programowanie strukturalne i obiektowe C++](https://reader035.vdocuments.mx/reader035/viewer/2022081511/56813105550346895d9734e0/html5/thumbnails/18.jpg)
Operatory relacyjneOperatory relacyjne (dwuargumentowe) służą do konstrukcji wyrażeń porównania. Operatorami tymi są:
== „równy”!= „nierówny”< „mniejszy”> „większy”<= „niewiększy” lub „jest zawarty”>= „nie mniejszy” lub „zawiera”
Wynik wyrażenia porównania jest typu bool i posiada wartość 0, gdy relacja jest prawdziwa oraz wartość 1, gdy relacja jest fałszywa.
![Page 19: Programowanie strukturalne i obiektowe C++](https://reader035.vdocuments.mx/reader035/viewer/2022081511/56813105550346895d9734e0/html5/thumbnails/19.jpg)
Operatory logiczne
Operatory logiczne służą do wykonywania operacji logicznych na wartościach typu bool. Operatorami tymi są:
&& i
! nie
|| lub
![Page 20: Programowanie strukturalne i obiektowe C++](https://reader035.vdocuments.mx/reader035/viewer/2022081511/56813105550346895d9734e0/html5/thumbnails/20.jpg)
Instrukcje iteracyjne
Instrukcje iteracyjne umożliwiają wielokrotne wykonywanie pewnych sekwencji instrukcji, czyli pętli, które są podstawą programowania. W języku C++ są trzy instrukcje iteracyjne:
instrukcja „dla” (for),
instrukcja „dopóki” (while),
instrukcja „wykonuj dopóki” (do… while)
![Page 21: Programowanie strukturalne i obiektowe C++](https://reader035.vdocuments.mx/reader035/viewer/2022081511/56813105550346895d9734e0/html5/thumbnails/21.jpg)
Instrukcja „dla” (for)
W porównaniu z analogiczną instrukcją pascalową, instrukcja „dla” języka C++ ma szersze możliwości i jest bardziej elastyczna. Jej ogólna postać przedstawia się następująco:
for (w.-inicjujące; w.-warunkowe; w.-zwiększające)instrukcja
Wyrażenie inicjujące może być dowolnego rodzaju, najczęściej jest ono wyrażeniem wyliczeniowym, zawierającym listę inicjacji liczników pętli. Język C++ dopuszcza w wyrażeniu inicjującym również deklaracje zmiennych.
![Page 22: Programowanie strukturalne i obiektowe C++](https://reader035.vdocuments.mx/reader035/viewer/2022081511/56813105550346895d9734e0/html5/thumbnails/22.jpg)
Wartość wyrażenia warunkowego musi być typu skalarnego, zaś wyrażenia zwiększające mogą być dowolnymi poprawnymi wyrażeniami języka C++. Każde z wyrażeń występujących w instrukcji „dla” może zostać pominięte.
![Page 23: Programowanie strukturalne i obiektowe C++](https://reader035.vdocuments.mx/reader035/viewer/2022081511/56813105550346895d9734e0/html5/thumbnails/23.jpg)
Wykonywanie pętli „dla”
Wykonywanie pętli „dla” odbywa się w następujący sposób:
1. Obliczane są wyrażenia inicjujące, co najczęściej powoduje zainicjowanie liczników pętli.
2. Obliczane jest wyrażenie warunkowe, jeśli jest ono niezerowe (prawda) wykonywana jest instrukcja związana z instrukcją for.
3. Obliczane są wyrażenia zwiększające, co powoduje zwykle zwiększenie lub zmniejszenie liczników pętli.
4. Ponownie obliczane jest wyrażenie warunkowe, jeżeli jego wartość jest różna od 0 – wykonywane są ponownie czynności z punktu 2.
![Page 24: Programowanie strukturalne i obiektowe C++](https://reader035.vdocuments.mx/reader035/viewer/2022081511/56813105550346895d9734e0/html5/thumbnails/24.jpg)
Instrukcja „dopóki” (while)
Ogólna postać instrukcji „dopóki” (while):
while (wyrażenie-warunkowe) instrukcja
Instrukcja instrukcja jest wykonywana do momentu, kiedy wyrażenie warunkowe osiągnie wartość 0 (fałsz), czyli instrukcję while można by przetłumaczyć: dopóki wyrażenie warunkowe ma wartość oznaczającą prawdę (różne od zera), wykonuj instrukcję instrukcja.
![Page 25: Programowanie strukturalne i obiektowe C++](https://reader035.vdocuments.mx/reader035/viewer/2022081511/56813105550346895d9734e0/html5/thumbnails/25.jpg)
Instrukcja „wykonuj dopóki” (do… while)
Ogólna postać instrukcji „wykonuj dopóki” (do… while) przedstawia się następująco:
do
instrukcja
while (wyrażenie-warunkowe);
![Page 26: Programowanie strukturalne i obiektowe C++](https://reader035.vdocuments.mx/reader035/viewer/2022081511/56813105550346895d9734e0/html5/thumbnails/26.jpg)
Instrukcja instrukcja jest wykonywana do momentu, gdy wyrażenie warunkowe osiągnie wartość zero (fałsz). Instrukcję do…while można więc przetłumaczyć jako: wykonuj instrukcję instrukcja, dopóki wartość wyrażenia warunkowego oznacza prawdę. Instrukcje tę stosujemy zamiast instrukcji while wówczas, gdy zależy nam, aby wykonana została przynajmniej jedna iteracja.
![Page 27: Programowanie strukturalne i obiektowe C++](https://reader035.vdocuments.mx/reader035/viewer/2022081511/56813105550346895d9734e0/html5/thumbnails/27.jpg)
Postać instrukcji wyboru
Instrukcja wyboru ma następującą postać ogólną:
switch (wyrażenie-sterujące) instrukcja
Instrukcja switch działa podobnie (ale nie tak samo), jak instrukcja case znana z Pascala. Na podstawie wartości wyrażenia sterującego pozwala ona przenieść wykonywanie programu do wskazanego miejsca. Wyrażenie sterujące musi być typu całkowitego, zaś instrukcja instrukcja jest dowolną instrukcją języka C++.
![Page 28: Programowanie strukturalne i obiektowe C++](https://reader035.vdocuments.mx/reader035/viewer/2022081511/56813105550346895d9734e0/html5/thumbnails/28.jpg)
Zwykle jednak instrukcja wyboru przybiera postać:
switch (wyrażenie-sterujące) { etykieta-wyboru instrukcje … etykieta-wyboru instrukcje}
Etykieta wyboru może przyjąć jedną z postaci:
case wyrażenie-stałe-typu-całkowitego:default:
Etykieta default jest nazywana domyślna etykietą wyboru. W obrębie jednej instrukcji wyboru nie wolno stosować etykiet zawierających wyrażenia stałe o tej samej wartości.
![Page 29: Programowanie strukturalne i obiektowe C++](https://reader035.vdocuments.mx/reader035/viewer/2022081511/56813105550346895d9734e0/html5/thumbnails/29.jpg)
Wykonanie instrukcji wyboru
Wykonanie instrukcji wyboru polega na obliczeniu wartości wyrażenia sterującego i kontynuowaniu wykonywania programu począwszy od etykiety wyboru, której wyrażenie stałe ma wartość równą obliczonej wcześniej wartości wyrażenia sterującego. Jeśli żadne z wyrażeń stałych nie spełnia tej równości, wówczas wykonywany jest skok do miejsca określonego domyślną (default) etykietą wyboru lub jeśli jej nie ma – wykonywanie instrukcji wyboru ulega zakończeniu.
![Page 30: Programowanie strukturalne i obiektowe C++](https://reader035.vdocuments.mx/reader035/viewer/2022081511/56813105550346895d9734e0/html5/thumbnails/30.jpg)
Uwaga
Po wykonaniu skoku do etykiety wyboru wykonywane są kolejno instrukcje programu bez względu na występujące po drodze etykiety wyboru. Jeśli więc skok nastąpił do pierwszej z dziesięciu etykiet wyboru, wykonane zostaną również instrukcje związane z pozostałymi etykietami. Za pomocą instrukcji break można wymusić zakończenie wykonywania instrukcji wyboru np. W momencie zakończenia wykonywania instrukcji dla danego przypadku.
![Page 31: Programowanie strukturalne i obiektowe C++](https://reader035.vdocuments.mx/reader035/viewer/2022081511/56813105550346895d9734e0/html5/thumbnails/31.jpg)
Przykład 1switch (miesiac){ case 1 : dni=31; break; case 2 : dni=28; break; case 3 : dni=31; break; case 4 : dni=30; break; case 5 : dni=31; break; case 6 : dni=30; break; case 7 : dni=31; break; case 8 : dni=31; break; case 9 : dni=30; break; case 10 : dni=31; break; case 11 : dni=30; break; case 12 : dni=31; break;}
![Page 32: Programowanie strukturalne i obiektowe C++](https://reader035.vdocuments.mx/reader035/viewer/2022081511/56813105550346895d9734e0/html5/thumbnails/32.jpg)
… char z;…switch (z){ case ‘w’ : cout<<"wysoki" break; case ‘n’ : cout<<"niski"; break; default : cout<<"nijaki"}
Przykład 2
![Page 33: Programowanie strukturalne i obiektowe C++](https://reader035.vdocuments.mx/reader035/viewer/2022081511/56813105550346895d9734e0/html5/thumbnails/33.jpg)
Pojęcie tablicy
Tablica jest złożoną strukturą danych, składającą się z określonej liczby elementów tego samego typu.
Dostęp do elementów jest możliwy za pośrednictwem indeksu(ów) – liczby (liczb) określającej położenie elementu w tablicy.
![Page 34: Programowanie strukturalne i obiektowe C++](https://reader035.vdocuments.mx/reader035/viewer/2022081511/56813105550346895d9734e0/html5/thumbnails/34.jpg)
Deklaracja tablicy
Deklaracja tablicy N-wymiarowej (zwanej także zmienną tablicową) o wymiarach wymiar1, wymiar2,…, wymiarN wygląda następująco
typ-elemetu-tablicy ident-tablicy[wymiar1][wymiar2]…[wymiarN]
Wymiar tablicy, który określa liczbę elementów zawartych w tablicy, jest ujęty w parę nawiasów prostokątnych i musi być większy lub równy jedności. Jego wartość musi być wyrażeniem stałym typu całkowitego, możliwym do obliczenia w fazie kompilacji; oznacza to, że nie wolno używać zmiennej dla określenia wymiaru tablicy.
![Page 35: Programowanie strukturalne i obiektowe C++](https://reader035.vdocuments.mx/reader035/viewer/2022081511/56813105550346895d9734e0/html5/thumbnails/35.jpg)
Dostęp do elementów tablicy
Najprostszym sposobem dostępu do elementu tablicy jest podanie jego pozycji (indeksu(ów)) w nawiasach kwadratowych, np. tablica [20][11] .
Należy pamiętać, że w języku C++ pierwszy element tablicy ma wszystkie indeksy równe zero – dostęp do pierwszego elementu tablicy wygląda następująco:
tablica[0]…[0].
W ten sposób pozycję ostatniego elementu tablicy określają indeksy
[wymiar1-1]…[wymiarN-1]
![Page 36: Programowanie strukturalne i obiektowe C++](https://reader035.vdocuments.mx/reader035/viewer/2022081511/56813105550346895d9734e0/html5/thumbnails/36.jpg)
Funkcje
Funkcją nazywamy wyodrębnioną część programu, stanowiącą pewną całość, posiadającą jednoznaczną nazwę i ustalony sposób wymiany informacji z pozostałymi częściami programu. Funkcje są stosowane do wykonania czynności, które mogą być wykorzystane w różnych programach lub i wykonania czynności wielokrotnie powtarzanych przez dany program. W przypadku programów rozwiązujących obszerne problemy, w których wyróżnić można kilka podprogramów, zastosowanie funkcji umożliwia opracowanie każdego z tych podproblemów oddzielnie. Wystarczy wówczas dla zbudowania programu zestawić funkcje oraz odpowiednio je połączyć.
![Page 37: Programowanie strukturalne i obiektowe C++](https://reader035.vdocuments.mx/reader035/viewer/2022081511/56813105550346895d9734e0/html5/thumbnails/37.jpg)
Definicja funkcji
Składnia definicji funkcji jest następująca:
<typ> identyfikator-funkcji (lista-deklaracji-parametrów){ instrukcje}
Definicja funkcji składa się z nagłówka funkcji oraz z jej ciała. Nagłówek przypomina prototyp funkcji, w którym wszystkie parametry muszą być nazwane a na końcu nagłówka nie występuje średnik. Ciało funkcji jest ujętym w nawiasy klamrowe zestawem instrukcji. Ostatnią instrukcją przed nawiasem klamrowym zamykającym blok funkcji musi być instrukcja return.
![Page 38: Programowanie strukturalne i obiektowe C++](https://reader035.vdocuments.mx/reader035/viewer/2022081511/56813105550346895d9734e0/html5/thumbnails/38.jpg)
Instrukcja return
Instrukcja return występuje często w postaci:
return wyrażenie;
gdzie wyrażenie określa wartość zwracaną przez funkcję. Jeżeli typ tego wyrażenia nie jest identyczny z typem funkcji, to kompilator będzie próbował osiągnąć zgodność typów drogą niejawnych konwersji. Jeżeli okaże się to niemożliwe, to kompilacja zostanie zaniechana. Zgodność typu zwracanego z zadeklarowanym typem funkcji można również wymusić drogą konwersji jawnej.
![Page 39: Programowanie strukturalne i obiektowe C++](https://reader035.vdocuments.mx/reader035/viewer/2022081511/56813105550346895d9734e0/html5/thumbnails/39.jpg)
Funkcja typu void
Jeżeli funkcja jest typu void to nie zwraca ona żadnej wartości i odnosząc się do języka programowania Pascal możemy ja nazwać procedurą, chociaż zawodowi programiści języka C++ nie stosują tej nazwy tylko taką funkcję nazywają funkcją nie zwracającą wyniku (wartości).
![Page 40: Programowanie strukturalne i obiektowe C++](https://reader035.vdocuments.mx/reader035/viewer/2022081511/56813105550346895d9734e0/html5/thumbnails/40.jpg)
Zmienne w programie i funkcjach
Zmienne zadeklarowane na zewnątrz funkcji nazywamy zmiennymi globalnymi, a zmienne opisane wewnątrz funkcji – zmiennymi lokalnymi.
Rozróżnienie to wynika ze sposobu przydziału pamięci. Wszystkie zmienne globalne umieszczane są w tzw. segmencie danych, dla którego pamięć przydzielana jest raz, w chwili rozpoczęcia wykonywania programu. Zmienne lokalne umieszczane są w tzw. segmencie stosowym. Przy każdorazowym wywołaniu procedury lub funkcji zmiennym lokalnym przydzielana jest w stosie pamięć, a po zakończeniu wykonywania procedury lub funkcji, pamięć jest zwalniana.