background image

Wprowadzenie do programowania strukturalnego.  

Język programowania – C/C++.

Zagadnienia:

1. Pojęcia elementarne z zakresu architektury i programowania komputerów. 
2. Systemy liczbowe.
3. Etapy tworzenia programu.
4. Podział języków programowania.
5. Język C/C++ - krótka charakterystyka.

background image

Pojęcia elementarne

1. Bit

Pozycja rejestru lub komórki pamięci słuŜąca do przedstawiania (pamiętania) cyfry 

w systemie (liczbowym) dwójkowym. MoŜe przyjmować dwa stany 0 lub 1.

4. Rejestr

Pamięć o pojemności jednego słowa lub jego części lub wielokrotności o duŜej 
szybkości dostępu. Rejestry stanowią waŜną część architektury procesora.

3. Bajt

Ciąg ośmiu bitów, stanowiący  porcję informacji, przechowującą jeden znak 
alfanumeryczny lub liczbę z zakresu 0-255.

2. Słowo

Ciąg bitów, stanowiących porcję danych.

Ustalona dla danego komputera (procesora) pojemność komórki pamięci (rejestru). 
Najczęściej słowo jest wielokrotnością bajtu.

background image

Pojęcia elementarne

5. Rozkaz 

a) Elementarna operacja wykonywana przez procesor, np.:

- dodaj dwie liczby,

- odejmij od akumulatora,

- pomnóŜ,

- podziel,

- załaduj do rejestru,

- skocz do etykiety,

- złóŜ na stosie.

KaŜdy procesor posiada tzw. listę rozkazów. Listy rozkazów mogą być

długie (rozbudowane) – procesory z rozkazami multimedialnymi lub 
krótkie (zredukowane) – architektura typu RISC . Rozkazy z listy 
rozkazowej w przedstawione w postaci mnemonicznej składają się na język 
asemblera danego procesora.

b) Sekwencja bitów stanowiąca kod polecenia dla procesora.

background image

6. Akumulator

WyróŜniony rejestr procesora, biorący udział w operacjach arytmetycznych 
i logicznych, często z załoŜenia dane aby operacja była przeprowadzona 
muszą znajdować się właśnie w akumulatorze. Akumulatorów moŜe być
więcej niŜ jeden.

Pojęcia elementarne

7. Pamięć

Jeden z podstawowych modułów komputera mogący przyjmować, 
przechowywać (pamiętać) i udostępniać dane w postaci niezmienionej. W
pamięci przechowywane są dane oraz programy. Pamięć jest 
charakteryzowana przez dwa podstawowe parametry:

-

pojemność (wyraŜaną w: B, KB, MB, GB, TB),

-

czas dostępu (ms, ns)

background image

8. Plik

Najmniejszy adresowalny zbiór (danych lub program) przechowywany w 
pamięci zewnętrznej. 

Pliki mogą zawierać dane lub programy. Dane mogą być w postaci 
tekstowej (znakowej) lub binarnej (określonej standardem lub w postaci 
dowolnie określonych, z poziomu programu, rekordów).

Pojęcia elementarne

9. System plików

Sposób organizacji plików w danym systemie operacyjnym. Najczęściej 
spotykaną jest struktura hierarchiczna wykorzystująca system katalogów plików 
(grup).

10. Komputer cyfrowy

Urządzenie (zespół urządzeń) działających automatycznie, słuŜących do 
przetwarzania danych w postaci dyskretnej (cyfrowej).

background image

Pojęcia elementarne

14. Algorytm

Sekwencja (zbiór) dokładnie określonych (jednoznacznych) czynności wraz 
kolejnością ich wykonywania (porządkiem).

15. Program komputerowy

Algorytm zapisany w języku programowania (zapisany na nośniku w postaci 

pliku źródłowego lub wykonywalnego).

16. Instrukcja

Elementarny składnik programu opracowywanego przez programistę. 

Instrukcja przekłada się na jeden lub więcej rozkazów procesora.

background image

Pojęcia elementarne

17. Język programowania

Język formalny zapewniający komunikację człowieka (programisty) z 

komputerem przeznaczony do opisu danych oraz algorytmów ich 
przetwarzania w komputerze.

18. Język formalny

Odpowiednio zorganizowany system określonych znaków, których 

znaczenie jest dokładnie zdefiniowane oraz zbiór reguł postępowania 
uwzględniający zasady przyjętej gramatyki formalnej.

20. Składnia i semantyka języka programowania

Inaczej alfabet i gramatyka języka programowania.    

Pojęcia charakteryzujące język programowania. Składnia języka jest to zbiór 
sekwencji znaków dopuszczalnych w danym języku programowania. 
Semantyka języka jest to znaczenie poszczególnych sekwencji znaków.

background image

Systemy liczbowe

System liczbowy (system liczenia) jest to

zbiór znaków (cyfr) i zasady ich uporządkowania, pozwalające dokonać
zapisu dowolnej liczby i przyporządkować jej określoną nazwę.

Powszechnie stosowanym jest system liczbowy pozycyjny, w którym stosuje 
się zapis pozycyjny. W systemie pozycyjnym dowolną liczbę przedstawia się
wg zaleŜności:

gdzie:
L – wartość liczby w systemie dziesiętnym,
N- podstawa systemu liczbowego,
n- numer pozycji,

- współczynnik (cyfra) przyjmujący wartości z przedziału [0,N-1].

0

0

1

1

1

1

0

1

1

....

......

N

a

N

a

N

a

N

a

a

a

a

a

L

n

n

n

n

n

n

+

+

+

+

=

=

n

a

background image

Podstawa systemu liczbowego jest jego wyróŜnikiem . W zaleŜności od 

podstawy mamy do czynienia z:

-

systemem dwójkowym (binarnym) – N=2, cyfry 0 i 1;

10101011=

-

systemem ósemkowym (oktalnym) – N=8, cyfry 0-7,

253= 

zapis liczby w C++ > 0253 

-

systemem dziesiętnym (decymalnym) – N=10, cyfry 0-9;

171=

-

systemem szesnastkowym (heksadecymalnym) – N=16, cyfry 0-9 i A-F.

AB=

zapis liczby w C++ > 0xAB

NaleŜy zwrócić uwagę na fakt, iŜ systemy ósemkowy i szesnastkowy są

pochodną systemu dwójkowego, stąd łatwość ich zamiany.

Systemy liczbowe

171

2

*

1

2

*

1

2

*

0

2

*

1

2

*

0

2

*

1

2

*

0

2

*

1

0

1

2

3

4

5

6

7

=

+

+

+

+

+

+

+

171

8

*

3

8

*

5

8

*

2

0

1

2

=

+

+

171

10

*

1

10

*

7

10

*

1

0

1

2

=

+

+

171

16

*

11

16

*

10

0

1

=

+

background image

Etapy tworzenia programu

Błędy logiczne

Kod wynikowy

Konserwacja programu (usuwanie 
błędów wykrytych na etapie 
uŜytkowania, zmiany inicjowane 
przez uŜytkownika.

Błędy logiczne

Kod wynikowy

Testowanie programu (usuwanie 
błędów logicznych- program działa 
lecz nie tak jak powinien).

Błędy wykonania

Kod wynikowy  (binarny, 
maszynowy)

Uruchamianie – scalanie programu i 
wykorzystywanych podprogramów 
bibliotecznych (usuwanie błędów 
wykonania np. dzielenie przez zero) .

Błędy syntaktyczne

Kod źródłowy, plik tekstowy

Kompilacja, edycja (usuwanie błędów 
kompilacji, syntaktycznych).

Kod źródłowy, plik tekstowy

Zapis algorytmu w języku 
programowania.

Błędy

Wynik etapu

Nazwa etapu

background image

Podział języków programowania

WyróŜniamy kilka kryteriów podziału języków programowania. 

1.

Kryterium poziomu – języki:  niskiego, wysokiego poziomu.

2.

Kryterium sposobu wykonania programu – języki: kompilowane, 
interpretowane.

3.

Kryterium modularyzacji – języki: strukturalne, niestrukturalne.

background image

Podział języków programowania

Języki niskiego i wysokiego poziomu

Język niskiego poziomu – asembler

Instrukcje asemblera są wiernym odwzorowaniem listy rozkazowej 
procesora, co za tym idzie, programy w asemblerze są dedykowane 
na jeden lub co najwyŜej pewną rodzinę procesorów, są 
nieprzenoszalne.

W asemblerach brak jest  kontroli zakresów.

Brak instrukcji iteracji.

Brak jest ograniczeń w operacjach na danych, rejestrach (operacje na 
bitach, flagach).

Mała złoŜoność kompilatora (asemblera).

background image

Podział języków programowania

Języki  niskiego i wysokiego poziomu

Język wysokiego poziomu – Modula-2, Ada, Pascal, COBOL, FORTRAN

Posiadają rozbudowany alfabet (duŜa liczba słów kluczowych), 
instrukcje warunkowe i iteracji.

DuŜa złoŜoność kompilatorów.

Ś

cisła typizacja danych, kontrola zakresów dla tablic.

Ograniczenia w operacjach na danych, rejestrach (operacje na bitach, 
flagach).

Większa przenoszalność programów napisanych języku wysokiego 
poziomu w porównaniu z asemblerami (poziom systemu 
operacyjnego).

A język C/C++ ?

background image

Języki kompilowane i interpretowane

Kompilatory i interpretery są programami działającymi na kodzie 
ź

ródłowym. Ich zadaniem jest tłumaczenie kodu źródłowego na język 

zrozumiały dla procesora, który jest wykonawcą wszystkich programów. 

Interpreter - wczytuje wiersze kodu źródłowego programu i wykonuje 
zawarte w nich instrukcje (tłumaczy na język maszynowy).  Oznacza to, 
Ŝ

e programy napisane w języku interpretowanym muszą być wykonywane 

za pośrednictwem interpretera.

Kompilator - wczytuje cały program i przekształca go (tłumaczy) na kod 
wynikowy (maszynowy lub binarny). Wynikiem  działania kompilatora ( i 
konsolidatora, który dołącza skompilowane funkcje biblioteczne) jest 
binarny plik wykonywalny, uruchamiany z poziomu systemu 
operacyjnego.

background image

Strukturalne i niestrukturalne języki programowania

Językiem strukturalnym nazywamy język ze strukturą blokową 
pozwalający definiować funkcje i procedury (takŜe je zagnieŜdŜać). 

Cechą charakterystyczną języków strukturalnych jest to, iŜ umoŜliwiają  
ukrycie przed pozostałymi częściami programu instrukcji 
pozwalających na wykonanie określonego zadania. Taką własność 
nazywa się modularyzacją. Własność tą osiąga się poprzez stosowanie 
właśnie podprogramów (procedur i funkcji) korzystających z 
tymczasowych zmiennych lokalnych.

Dodatkową korzyścią stosowania podprogramów jest moŜliwość 
wielokrotnego ich wykorzystania w róŜnych miejscach programu.

Języki strukturalne nie posiadają (lub nie zaleca się korzystania z) 
instrukcji skoku

goto

. Oferowane przez nie instrukcje iteracji 

umoŜliwiają pełną implementację algorytmów. 

background image

Jezyk C/C++ - krótka historia

Twórcą języka C jest Denis Ritche (lata siedemdziesiąte XX wieku). 
Pierwsza implementacja miała miejsce na komputerze DEC PDP-11 (w 
Polsce znane jako MERA) z systemem UNIX.

Przez wiele lat standardem C była wersja rozprowadzana z systemem 
UNIX wersja V (opis – rok 1978).

Opracowanie standardu ANSI C  - rok 1983, a jego przyjęcie – rok 1989. 
Standard ANSI C jest honorowany przez większość kompilatorów C++.

Język C++ stanowi rozszerzenie języka C, powstał juŜ w roku 1983
początkowo pod nazwą „C with Classes”, jego autorem jest Bjorne
Struostrup z Bell Laboratories.  C++ powstał zatem aby umoŜliwić 
programowanie zorientowane obiektowo. 

Standard ANSI C++ został zatwierdzony w roku 1994.

background image

Jezyk C/C++ - krótka charakterystyka

Język C/C++ jest językiem posiadającym cechy zarówno języka wysokiego jak i 

niskiego poziomu, bywa nazywany językiem średniego poziomu.

UmoŜliwia wykonywanie operacji na bitach, bajtach i adresach (wskaźnikach).

Występują w nim typy danych, choć nie naleŜy do języków ze ścisłą kontrolą typów. 
MoŜna na przykład zamiennie uŜywać typu

char

i

int

. W instrukcjach przypisania C 

dokonuje automatycznej konwersji typów. Nie sprawdza czy zostały przekroczone 
zakresy tablic. 

Posiada stosunkowo małą liczbę słów kluczowych (32 w ANSI C + 30 w ANSI C++).  

Jest językiem nie w pełni strukturalnym, gdyŜ nie umoŜliwia zagnieŜdŜania definicji 
funkcji.

C++ jest językiem zorientowanym obiektowo, przez co umoŜliwia programową 
realizację wielkich projektów (opracowywanych przez wielu programistów).

Nadal posiada cechy języka niezwykle elastycznego wykorzystywanego do 
rozwiązywania róŜnych zadań. Począwszy od realizacji oprogramowania 
systemowego poprzez edytory tekstów na  bazach danych kończąc.