Programowanie w C.pdf

(441 KB) Pobierz
W YKŁAD :
P ROGRAMOWANIE W C
E LEMENTARNE ALGORYTMY I STRUKTURY
DANYCH
Paweł Ogniewski
Warszawa 2002
S PIS TREŚCI
1
W PROWADZENIE DO WYKŁADU
3
1.1
Programowanie i programy..............................................................................................3
1.2
Języki programowania.....................................................................................................3
1.3
Kompilatory i środowiska programistyczne......................................................................3
1.4
Język C...........................................................................................................................4
1.5
Algorytmy i struktury danych............................................................................................4
1.6
Literatura.........................................................................................................................5
2 O GÓLNE ZAPOZNANIE Z JĘZYKIEM C
6
2.1
Pierwszy program. Wypisywanie tekstu na ekranie.........................................................6
2.2
Zmienne i operacje arytmetyczne....................................................................................7
2.3
Pętla for i stała..............................................................................................................8
2.4
Formatowanie kodu.........................................................................................................9
3 P ODSTAWOWE ELEMENTY STRUKTURY JĘZYKA C
11
3.1
Identyfikatory.................................................................................................................11
3.2
Wyrażenia.....................................................................................................................12
3.3
Instrukcje.......................................................................................................................12
3.4
Zmienne i typy proste danych........................................................................................13
3.5
Stałe..............................................................................................................................15
3.6
Operatory i ich priorytety................................................................................................18
3.7
Przekształcenia typów...................................................................................................21
4
P RZEPŁYW STEROWANIA
23
4.1
Instrukcja if - else if - else ...................................................................................23
4.2
Instrukcja switch .........................................................................................................24
4.3
Pętle while , do - while i for .....................................................................................26
4.4
Etykiety i skoki...............................................................................................................27
5
S TRUKTURA PROGRAMU
29
5.1
Funkcje..........................................................................................................................29
5.2
Zasięg nazw..................................................................................................................31
1351889524.005.png 1351889524.006.png 1351889524.007.png 1351889524.008.png
 
5.3
Rekurencja.....................................................................................................................32
5.4
Preprocesor języka C: makra i kompilacja warunkowa...................................................33
5.5
Pliki nagłówkowe i projekty.............................................................................................36
5.6
Zmienne statyczne, stałe i rejestrowe.............................................................................38
6
W SKAŹNIKI I TABLICE
39
6.1
Wskaźniki i adresy.........................................................................................................39
6.2
Tablice...........................................................................................................................40
6.3
Tablice znaków - napisy.................................................................................................42
6.4
Allokacja pamięci...........................................................................................................44
6.5
Wskaźnikowe parametry funkcji.....................................................................................44
7
O PERACJE WEJŚCIA - WYJŚCIA
44
7.1
Formatowane wyjście i funkcja printf() .....................................................................44
7.2
Formatowane wejście i funkcja scanf() .......................................................................44
7.3
Obsługa plików...............................................................................................................44
7.4
Pochodne funkcji printf() i scanf() ........................................................................44
8
Z ŁOŻONE STRUKTURY DANYCH
44
8.1
Struktury........................................................................................................................44
8.2
Deklaracja typedef ......................................................................................................45
8.3
Listy...............................................................................................................................45
8.4
Drzewa...........................................................................................................................45
8.5
Unie i pola bitowe...........................................................................................................45
9
W YBRANE FUNKCJE STANDARDOWEJ BIBLIOTEKI
45
9.1
Funkcje matematyczne: nagłówek <math.h> ...............................................................45
9.2
Wykrywanie błędów: nagłówek <assert.h> ...............................................................45
9.3
Operacje na tekstach: nagłówek <string.h> .............................................................45
9.4
Czas systemowy: nagłówek <time.h> ........................................................................45
1351889524.001.png 1351889524.002.png 1351889524.003.png
 
1. W PROWADZENIE DO WYKŁADU - P ROGRAMOWANIE I PROGRAMY
1 W PROWADZENIE DO WYKŁADU
Wykład obejmuje swą treścią przede wszystkim naukę programowania w języku C dla początkujących.
Zawiera jednak opis kilku elementarnych algorytmów i struktur danych, bez których nie sposób chyba
zdobyte umiejętności programistyczne wykorzystywać w praktyce. Integralną częścią tego wykładu są
zajęcia laboratoryjne, do których nie rzadko będę nawiązywał, nie tracąc, jak myślę, ogólności tego
tekstu, gdyż jedynym sposobem na nauczenie się programowania są samodzielnie wykonywane
ćwiczenia – pisanie programów.
1.1 Programowanie i programy
Przed przystąpieniem do nauki warto jednak przyswoić sobie kilka podstawowych pojęć z zakresu
programowania w ogóle. Programowanie , jak sama nazwa wskazuje, jest czynnością mającą na celu
zestawienie kolejnych operacji, jakie ma wykonać pewna maszyna matematyczna, np. komputer.
Stworzony w wyniku programowania zestaw instrukcji zrozumiałych dla danej maszyny i podany jej
w takiej postaci, aby mogła rozpocząć ich wykonywanie, nazywamy programem . Uogólniając więc nieco
pojęcie programowania, możemy w skrócie powiedzieć, że programowanie – to tworzenie programów,
a programy – to zapisane w „języku maszyny” ciągi instrukcji, które ma ona wykonać.
1.2 Języki programowania
Skoro pojawiło się już pojęcie języka maszyny , wypada, aby zostało ono skomentowane, tym bardziej, że
bezpośrednio wiąże się z pojęciem języka programowania . Maszyny, które dziś są programowalne, to tak
zwane maszyny cyfrowe, albo mówiąc precyzyjniej zero-jedynkowe. Oznacza to tyle, że podczas
swojego działania, są w stanie rozróżniać jedynie dwa stany, którym zostały nadane nazwy: zero i jeden .
Maszyna cyfrowa, kiedy przetwarza przechodzące przez nią sygnały (które mogą być instrukcjami,
danymi, ...) posługuje się systemem binarnym. Dzięki temu wszystkie możliwe do wykonania przez taką
maszynę instrukcje mogły zostać ponumerowane i w ten sposób stworzyły cyfrowy język maszyny. (Aby
formalnie zdefiniować pojęcie języka maszyny należałoby wspomnieć o zasadach przekazywania
instrukcji, pomijam jednak tę część aby nie zaciemniać idei, którą pragnę przekazać.) Różne języki
maszynowe, szczególnie w odniesieniu do komputerów, zwykło nazywać się asemblerami danej
maszyny.
Jak łatwo domyśleć się nawet bardzo początkującemu programiście, tworzenie programów w asemblerze
jest czynnością dość nie wygodną i wymagającą od programisty dodatkowych umiejętności, a szczególnie
większej wyobraźni. W tym celu zostały stworzone tzw. języki wyższego poziomu . Spośród najbardziej
znanych języków programowania możemy wyróżnić w tej kategorii języki jak: Pascal, Fortran, C czy
C++. Są to języki, które w swojej składni zawierają dużo bogatszy zestaw instrukcji niż języki typu
asembler. Ponadto oferują wiele predefiniowanych wyrażeń czy nawet całych procedur znakomicie
ułatwiających pracę programiście. Nie wspominając już o samej składni języka – przede wszystkim dużo
przejrzystszej. Wszystko to powoduje, że programowanie w językach wyższego poziomu staje się
szybsze i wygodniejsze.
1.3 Kompilatory i środowiska programistyczne
Nie chciałbym jednak spowodować wrażenia zdecydowanej wyższości języków wysokiego poziomu nad
asemblerami, jest bowiem ogrom zastosowań, do których właśnie asemblery nadają się najlepiej.
Przydatne są one chociażby wszędzie tam, gdzie konieczna jest wysoka optymalizacja pisanych
programów. Każdy bowiem program napisany w dowolnym języku wysokiego poziomu, musi zostać
przetłumaczony na język maszyny, na której ma on być wykonany. Proces tłumaczenia kodu programu na
3
W YKŁAD : P ROGRAMOWANIE W C. E LEMENTARNE ALGORYTMY I STRUKTURY DANYCH
1351889524.004.png
 
Zgłoś jeśli naruszono regulamin