01 Wprowadzenie do programowania w jezyku C


1. Wprowadzenie do programowania w języku C
Zagadnienia: Algorytm. Schematy blokowe (symbole początku i końca, schemat
czynności; schemat warunku, schemat wyboru, symbol kontynuacji).
Diagram przepływu danych. Język programowania. Podstawowe termi-
ny (program zródłowy; program półskompilowany; program wynikowy,
preprocesor, kompilator, konsolidator, ...). Styl programowania.
Algorytm
Komputer może rozwiązać tylko takie problemy, dla których można stworzyć
ścisły przepis ich rozwiązania, czyli opracować algorytm. W literaturze można spo-
tkać wiele definicji algorytmu [20], [21], [6], [7]. Na przykład:
1. Algorytm jest to niedopuszczający do wieloznacznej interpretacji formalny
przepis postępowania.
2. Algorytm to zbiór takich czynności (operacji, działań), których wykonanie wg
określonej kolejności prowadzi do rozwiązania określonego zagadnienia lub
do osiągnięcia zamierzonego celu.
3. Algorytm to dokładna recepta określająca proces obliczeniowy, który prowa-
dzi od pewnych danych początkowych do pożądanego rezultatu.
4. Algorytm to opis obiektów1 + opis czynności wykonywanych na tych obiek-
tach.
Z powyższych definicji wynika, że postępowanie wg danego algorytmu nie wy-
maga rozumienia treści rozwiązywanego zagadnienia, wystarczy znać notację i ściśle
wypełniać podane w algorytmie wskazówki.
Algorytmy można podzielić na algebraiczne i niealgebraiczne. Algorytmy nie-
algebraiczne są to zazwyczaj ciągi prostych zdań czy pytań uporządkowanych w lo-
gicznej hierarchii (od najbardziej ogólnych do najbardziej szczegółowych) w sposób
ograniczający listę czytanych zdań do tych, które dotyczą danego przypadku. W
praktyce treści algorytmów niealgebraicznych można na przykład przekazać w for-
mie:
" drzewa logicznego - składa się ono wyłącznie z powiązanych ze sobą pytań, z
których każde przyczynia się do uzyskania przez czytelnika jednoznacznego
rozwiązania, ale bez umieszczania po drodze czynności;
" wykazu - jako pewnego rodzaju  karty przepływu ;
" Tablicy decyzyjnej - jako wygodnej formy przedstawiania warunków i wynika-
jących z nich decyzji (odpowiednie manipulowanie pytaniami i odpowiedziami).
Algorytm algebraiczny jest to określony ciąg operacji (działań), których wykona-
nie jest niezbędne dla rozwiązania danego zadania. Algorytmy algebraiczne (obli-
czeniowe) to metody rozwiązywania zadań algebraicznych. Przedstawione są często
w formie graficznej.
Wygodną i popularną formą przedstawiania algorytmów są tzw. schematy
czynnościowe nazywane też schematami blokowymi (ang. flow diagram, flow chart).
Schemat blokowy to graficzne przedstawienie ciągu czynności z uwzględnieniem
kolejności ich wykonywania. Każdy schemat czynnościowy (blokowy) jest złożony z
określonych figur geometrycznych, (bloków) oraz łączących je linii skierowanych. Fi-
gury geometryczne reprezentują operacje, zaś łączące je linie wskazują kolejność ich
1
Obiekt (ang. object, item) - nazwany element rzeczywistości lub reprezentant pewnej abstrakcji.
Obiekt istnieje i jest odróżnialny. Można zatem odróżnić jeden obiekt od drugiego. Obiekty mogą być
rzeczywiste, mogą też być pewnymi pojęciami abstrakcyjnymi.
Marian Urbanek Podstawy programowania.
Wprowadzenie do programowania w języku C.
realizacji. Schemat czynnościowy budowany jest z następujących elementów:
" symbolu początku - oznaczającego początek schematu czynnościowego;
" symbolu końca - oznaczającego koniec schematu czynnościowego;
" schematu czynności - oznaczającego wykonanie czynności (operacji), która
bardziej szczegółowo może być zdefiniowana przy pomocy:
schematu sekwencji - czynności wykonywane w podanej kolejności;
operacji podstawienia - nadania obiektowi wartości;
schematu wprowadzania i wyprowadzania danych - nadania obiektowi
wartości z zewnątrz lub przekazania (na zewnątrz) wartości obiektu;
schematu warunku - czynności decyzyjnej (warunkowe wykonanie czyn-
ności);
schematu wyboru - wielowariantowe wykonanie czynności;
symbolu łącznika - oznaczającego kontynuację połączeń.
Symbole początku i końca
Symbole początku i końca mają następującą interpretację graficzną (rys. 1.1)
Początek
Koniec
Rysunek 1.1. Symbole początku i końca
Schemat czynności
Schemat czynności - operator (rys. 1.2) jest graficznym obrazem czynności wy-
konawczej (procesu2). Czynność symbolizuje prostokąt, wewnątrz którego umieszcza
się jej definicję - słowną lub składającą się z symboli. Wejście do schematu czynno-
ści oznaczone jest strzałką skierowaną do wnętrza prostokąta a wyjście strzałką skie-
rowaną na zewnątrz prostokąta.
Odkręć
C
śrubę
Rysunek 1.2. Symbol czynności
Sekwencję czynności (rys. 1.3) C1, C2, ...., Cn można przedstawić następująco
C1
C1
C2
.
.
lub
.
C2
Cn
.
.
Cn
Rysunek 1.3. Sekwencja czynności
2
Ciąg następujących po sobie czynności, pozostających między sobą w związku przyczynowym.
2
Marian Urbanek Podstawy programowania.
Wprowadzenie do programowania w języku C.
Podczas projektowania algorytmów bardzo częstą czynnością jest operacja na-
dania obiektowi wartości - operacja podstawienia (rys. 1.4). Dwuargumentowym ope-
ratorem nadania wartości jest znak  = . Zapis v = E należy interpretować następują-
co: oblicz wartość wyrażenia E; następnie  zwiąż tę wartość z obiektem v (poprzed-
nia wartość obiektu v zostanie zniszczona). Podobnie należy interpretować zapis np.
v = v + E: wylicz wartość wyrażenia E; następnie dodaj do aktualnej wartości obiektu
v; wynik zwiąż z obiektem v.
v = E v = v + E
Rysunek 1.4. Nadanie wartości
Wprowadzanie oraz wyprowadzanie danych można wyróżnić jako charaktery-
styczne operacje na obiektach. Symbolem graficznym czynności wprowadzania (wy-
prowadzania) jest równoległobok (rys. 1.5).
Wprowadz wartość Wyprowadz wartość
do obiektu x z obiektu x
Rysunek 1.5. Symbole wprowadzania i wyprowadzania danych
Schemat warunku
Schemat warunku (węzeł decyzyjny, bloczek warunku lub predykat sterujący)
jest graficznym obrazem czynności decyzyjnej. Przedstawiany jest w postaci rombu
(rys. 1.6), wewnątrz którego umieszcza się wyrażenie logiczne (p, q), które po zwią-
zaniu wszystkich wolnych zmiennych stanie się zdaniem orzekającym wyrażającym
wartość (logiczną) prawda lub fałsz.
nie nie
p
q
tak tak
C2
C C1
Rysunek 1.6. Symbol czynności decyzyjnej
W schematach blokowych przyjmuje się, że z symbolem reprezentującym sche-
mat warunku związana jest czynność badania wartości logicznej wyrażenia i wyboru
jednej z dwu możliwych dróg realizacji, zależnie od tego, czy wartość ta oznacza
prawdę (tak) czy fałsz (nie). Wejście do schematu warunku oznaczone jest strzałką
skierowaną do wnętrza rombu, a wyjście strzałkami na zewnątrz.
3
Marian Urbanek Podstawy programowania.
Wprowadzenie do programowania w języku C.
Wykonanie czynności C na schemacie warunku (rys. 1.6) ma miejsce wtedy,
gdy wyrażenie q przyjmuje wartość prawda (tak). W przeciwnym razie czynność C
nie jest wykonana. Schemat warunku pozwala wybrać jedną z dwóch czynności (rys.
1.6). Wykonanie czynności C1 zachodzi wtedy, gdy wartością wyrażenia logicznego p
jest prawda (tak); w przeciwnym razie, gdy wartością wyrażenia jest fałsz (nie) wy-
konana jest czynność C2.
Schemat wyboru
Schemat warunku pozwala na zrealizowanie jednego z dwóch możliwych wa-
riantów postępowania. W przypadku rozwiązywania problemu wymagającego wyboru
jednego z wielu wariantów postępowania bardziej czytelnym staje się schemat wybo-
ru (inaczej: przełącznik, węzeł wielowyjściowy, rozrzutnik). Schemat wyboru (rys. 1.7)
oznacza wykonanie czynności:
C1 - gdy wyrażenie W przyjmuje wartość W1;
C2 - gdy wyrażenie W przyjmuje wartość W2;
..........................................................................
..........................................................................
Dn - gdy wyrażenie W przyjmuje wartość Wn;
C - dla innych wartości W.
Wyrażenie W nazywane jest selektorem. Wartości W1, W2, ..., Wn - to stałe wyboru.
Przełącznik wybiera tę czynność (ścieżkę przebiegową) C, C1, ..., Cn, dla którego
stała wyboru W1, ..., Wn (etykieta) równa się wartości (selektora) W realizowanej
przez przełącznik.
C1
W1
C2
W2
.
.
.
.
W =
.
.
.
.
.
.
Wn Cn
W przeciwnym
C
razie
Rysunek 1.7. Symbol czynności decyzyjnej wielowariantowej
Symbol kontynuacji (połączeń)
Kontynuację połączeń oznacza okrąg, do którego (lub, z którego) prowadzi linia
zakończona strzałką. Wewnątrz figury umieszcza się identyfikator połączenia (rys.
1.8).
a
7
. . . .
8
. . . .
a
Rysunek 1.8. Symbol kontynuacji
4
Marian Urbanek Podstawy programowania.
Wprowadzenie do programowania w języku C.
Symbole kontynuacji ścieżek wykorzystywane są przy projektowaniu złożonych algo-
rytmów, których opis nie mieści się na jednej stronie stron.
Diagram przepływu danych
Innym sposobem opisu wykonywanych czynności (wykorzystywanym w struktu-
ralnej analizie systemów [5], [2], [3]) jest diagram przepływu danych - stanowiący
model3 funkcjonalny. Na diagramie tym przedstawia się wszystkie procesy zacho-
dzące w analizowanym systemie, przepływy danych pomiędzy tymi procesami, miej-
sca składowania danych oraz ich zródła i miejsca odbierania. Sformalizowana specy-
fikacja w postaci diagramów przepływu danych i precyzyjna definicja danych nosi
nazwę specyfikacji strukturalnej i stanowi punkt wyjścia do opracowania projektu.
Diagram przepływu danych (ang. DFD - Data Flow Diagram) jest graficzną  mapą
obrazującą (w systemie oraz między światem zewnętrznym, a systemem) przepływ
danych między procesami. Na diagramie DFD wyróżnia się:
1. Obiekty zewnętrzne (ang. external object) - reprezentują zródła danych lub
miejsca przeznaczenia informacji, które są zewnętrzne w stosunku do syste-
mu. Dostarczają one danych, które po przeanalizowaniu umożliwiają podjęcie
decyzji odnośnie wykonania pewnych procesów w systemie, względnie odbie-
rają informacje produkowane przez system.
2. Składnice, magazyny danych (ang. data store) - to miejsca gdzie dane są
przechowywane (łączą procesy, które na nich operują). Magazyny te są do-
stępne jedynie z procesów, które są uprawnione do działania na danych w
nich zawartych.
3. Procesy (ang. process) - odpowiadają tym składnikom systemu, które operu-
ją na danych. Procesy otrzymują i przesyłają dane za pośrednictwem prze-
pływów danych.
4. Przepływy danych - (ang. data flow) opisują strumienie danych określające
przepływające pomiędzy dwoma obiektami (zródłem i przeznaczeniem) na
diagramie. Przedstawia się je za pomocą linii ze strzałkami określającymi kie-
runek przesyłania danych np. od obiektów zewnętrznych do procesów, od
procesów do składnic danych, itp.
Można przyjąć, że symbolem graficznym procesu jest okrąg, zaś magazyn da-
nych symbolizują dwie poziome linie (rys. 1.9). Gałęzie mogą być uzupełniane opi-
sem informującym, jaka dana jest przekazywana po tej drodze.
1 2 3
Wsp. b Wsp. a delta
U
U
1
5 4
Oblicz.
x1 x2
x1, x2
Rysunek 1.9. Elementy graficzne diagramu DFD
3
Oprócz modelu funkcji w analizie strukturalnej i projektowaniu systemów informatycznych wykorzystuje się:
" model zdarzeń zachodzących w systemie - diagram historii życia obiektu (ang. ELH - Entity Life History),
" model danych - diagram związków obiektów (ang. ERD - Entity Relationship Diagram),
" model zmiany stanów - diagram zmiany stanów (ang. STD - State Transition Diagram),
" schematy strukturalne (ang. STC - Structure Charts).
Wydaje się, że przy projektowaniu programów opis można ograniczyć do modelu DFD oraz STC.
5
Marian Urbanek Podstawy programowania.
Wprowadzenie do programowania w języku C.
Język programowania
Język programowania [20] jest to zbiór symboli, reguł i prawideł stosowanych
przy formułowaniu i zapisie procesów rozwiązywania zadań za pomocą automatów.
Język programowania służy do wyrażania algorytmów przeznaczonych do wykonania
przez komputery. Języki programowania są językami4 sztucznymi, a ich wyrażenia
(instrukcje) muszą mieć formę możliwą do zaakceptowania przez komputer.
Podstawą każdego języka jest słownik. Elementy słownika są zazwyczaj nazy-
wane słowami. W językach formalnych nazywa się je symbolami (podstawowymi lub
kluczowymi).
Język programowania [20], jak każdy język, jest zbiorem słów (zdań) nad pew-
nym skończonym alfabetem (słownikiem). Przynależność słowa (zdania) do języka
nie zależy od przypisywanego mu znaczenia.
Cechą charakterystyczną języków jest to, że pewne ciągi słów są rozpoznawa-
ne jako poprawne, dobrze zbudowane zdania języka [20]. O innych ciągach mówi
się, że są zle zbudowane. O poprawności ciągu (zdania) decyduje gramatyka, mó-
wiąc inaczej - składnia lub struktura języka. Składnię definiuje się jako zbiór reguł
syntaktycznych lub formuł, określający zestaw (formalnie poprawnych) zdań. Taki
zbiór reguł pozwala decydować czy dany ciąg słów jest zdaniem, ale także dla kon-
kretnego zdania określa jego strukturę pomocną w rozpoznaniu znaczenia (semanty-
ka). Składnia i semantyka są ściśle ze sobą powiązane. Składnia języka to reguły
określające z jakich symboli dana konstrukcja się składa. Semantyka to reguły okre-
ślające znaczenie tej konstrukcji.
Podstawowe terminy dotyczące programowania
" program zródłowy- plan procesu automatycznego przetwarzania danych w
komputerze; pełny opis algorytmu wyrażony w języku programowania;
" instrukcja programu - ściśle określone działanie opisujące sekwencję czynno-
ści szczegółowych, które będą wykonywane przez procesor komputera;
" preprocesor - program realizujący przetwarzanie wstępne (włączanie zbiorów,
rozwijanie makrodefinicji);
" translator - program dokonujący przekładu programu zapisanego w określo-
nym języku programowania na dowolny inny język;
" kompilator - translator języka wysokiego poziomu - przetwarza program zró-
dłowy na postać  półskompilowaną;
" program półskompilowany - program wytworzony przez kompilator zawiera-
jący odwołania do funkcji bibliotecznych;
" konsolidator - program łączący jeden lub więcej zbiorów wyjściowych (pół-
skompilowanych) kompilatora z podanymi bibliotekami tworząc program wyko-
4
Formalnie język J definiowany jest jako [20]
J = J(T, N, P, S )
gdzie :
T  zbiór symboli - słownik (alfabet) języka.
N - zbiór symboli pomocniczych (kategorii gramatycznych).
P - zbiór produkcji (reguł syntaktycznych),
S - symbol początkowy.
Przykład. Niech będzie dana gramatyka ze słownikiem T = { a, b, c, d }; dwie kategorie gramatyczne
N = { S, F } gdzie S jest symbolem oznaczającym zdanie. Ponadto określone są dwie produkcje:
P = { S a | bFFd ; F bc | a }
Poprawnymi zdaniami w języku J są na przykład: a, bbcbcd, bbcad.
6
Marian Urbanek Podstawy programowania.
Wprowadzenie do programowania w języku C.
nywalny5 (zbiór wykonywalny);
" biblioteka - zbiór często używanych skompilowanych funkcji. Biblioteki zapew-
niają prosty sposób używania funkcji opracowanych przez innych;
" program wykonywalny - program (w języku wewnętrznym) wytworzony przez
konsolidator (linker) - gotowy do uruchomienia na komputerze.
Etapy tworzenia programu (w języku C) wykonywalnego przez procesor kom-
putera w sposób ogólny przedstawione są na rys. 1.10.
Zbiory
Program zródłowy
nagłówkowe
... .c/cpp
... .h
Pre-
procesor
Kompilator Program moduły
półskompilowany biblioteczne
... .obj ... .obj/lib
Konsolida-
Program
tor
wykonywalny...
.exe
Rysunek 1.9. Fazy tworzenia programu wykonywalnego [7]
Program zródłowy jest rezultatem opisu (przez programistę) algorytmu przy
pomocy języka programowania. Poprawność instrukcji (zdań) sprawdza kompilator.
Zaś wszystkie odwołania do obiektów programowych umieszczonych w bibliotekach
sprawdza i spełnia konsolidator. Jeżeli kompilacja i konsolidacja zakończą się sukce-
sem tworzony jest program wykonywalny.
Styl programowania
Nie wydaje się by styl programowania miał istotny wpływ na funkcjonalność i
efektywność realizacji projektowanego programu. Istotne znaczenie może mieć dla
projektanta - poprawia  czytelność" kodu zródłowego i czyniący program łatwiejszym
do modyfikacji. Stąd warto przestrzegać poniższych zaleceń6:
" tworzyć proste konstrukcje programowe;
" nie używać zmiennych globalnych;
" w złożonych wyrażeniach stosować nawiasy;
" w kodzie wstawiać komentarze;
5 Zbiory wyjściowe z kompilatora nie mogą być wykonywane, ponieważ zawierają odwołania do funk-
cji bibliotecznych, a także odwołania do funkcji zdefiniowanych w innych zbiorach. Zadanie konsoli-
datora polega na połączeniu (spełnieniu) tych odwołań
6 D. Van Tassel  Praktyka programowania WNT. Warszawa 1979.
7
Marian Urbanek Podstawy programowania.
Wprowadzenie do programowania w języku C.
" nie używać skomplikowanych wyrażeń logicznych;
" jeżeli są dostępne, korzystać z funkcji bibliotecznych;
" używać dobrze dobranych nazw zmiennych;
" nawiasy klamrowe umieszczać w oddzielnych wierszach;
" stosować wcięcia do uwypuklenia znaczenia sekwencji kodu;
" projektować krótkie i czytelne moduły programowe (funkcje);
" wyróżniać koniec funkcji;
" nie używać instrukcji skoku.
Ćwiczenia
1. Dla języka L = L(T, N, P, C)
gdzie:
N = { A, B, C, G },
P = { A c | G | B; C uA | B> ; G wp; B > | v | u },
Należy podać przykłady poprawnych zdań oraz określ alfabet języka T.
2. Jak nazywają się elementy T, N, P, C języka L = L(T, N, P, C)?
3. Zdefiniować termin  język programowania .
4. Wyjaśnić znaczenie pojęć: semiotyka, syntaktyka, pragmatyka, leksyka.
5. Wyjaśnij pojęcia: translator, kompilator, interpretator (interpreter), program zró-
dłowy, program wynikowy.
8


Wyszukiwarka

Podobne podstrony:
Wprowadzenie do programowania w języku C
Jezyk C Wprowadzenie do programowania jcwpro
lab 1 01 wprowadzenie do mathcada 1 3
01 wprowadzenie do teorii eksploatacji statkow powietrznych podstawowe pojecia i definicjeid)90
08 wprowadzenie do programowania grafikiidu39
Wykład 01 Wprowadzenie do sieci telekomunikacyjnych
01 wprowadzenie do przedmiotu
01 Wprowadzenie do Visual Studio cwiczenia przygotowujace

więcej podobnych podstron