background image

 
 
 
 
 
 
 
 
 
 
 
 
 

Podstawy  informatyki 

 
 
 
 
 

Elektrotechnika I rok 

 
 
 
 
 
 
 

Język  C 

Podstawy  programowania 

Instrukcja do ćwiczenia 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

© Katedra Automatyki Napędu i Urządzeń Przemysłowych AGH 

Kraków 2006 

background image

 
 

background image

JĘZYK  C  –  PODSTAWY  PROGRAMOWANIA 

Cel ćwiczenia 

Celem  ćwiczenia jest zapoznanie się z krokami tworzenia programów (edycją, 

kompilacją, konsolidacją i uruchamianiem) przy pomocy środowiska zintegrowanego 
Dev-C++. Środowisko Dev-C++ jest darmowym środowiskiem programistycznym

1

, którego 

można używać na warunkach licencji GNU – General Public License. Zadaniem studentów 
jest napisanie kilku prostych programów w języku C wykorzystujących standardowe funkcje 
wejścia/wyjścia języka C: scanf() i printf() oraz instrukcje warunkowe if 
i if/else. 

Wprowadzenie 

Tworzenie programu komputerowego składa się z kilku kroków: 
•  analizy problemu i projektu algorytmu, 

•  kodowania algorytmu (napisanie kodu źródłowego) w przyjętym języku prog-

ramowania, 

•  kompilacji kodu źródłowego, 
•  konsolidacji (ang.: linking) modułów skompilowanych i bibliotecznych, 

•  uruchamiania i testowania programu (ang.: debugging). 
Tok tworzenia programu komputerowego można również pokazać na schemacie 

blokowym przedstawionym na rysunku 1. 

Edytor

xx.cpp

Kompi-

lator

Konsoli-

dator

xx.o

xx.exe

yy.lib

Debugger

Biblioteka

funkcji

Kod

wykonywalny

Kod

relokowalny

Kod

źródłowy

Gdy występuję błędy

 

Rys. 1. Tworzenie programu komputerowego. 

Analiza problemu i projekt algorytmu ma na celu wyspecyfikowanie zadań danego 

programu, analizę możliwości i sposobów spełnienia tych zadań przez sprzęt, dla którego 
dane oprogramowanie jest projektowane oraz na opracowaniu i zapisie algorytmu 
rozwiązującego te zadania. Algorytm przedstawia się najczęściej w postaci sieci działania 
(ang.: flow chart) lub pseudokodu. Następnie należy wybrać właściwe narzędzia programis-
tyczne pozwalające na sprawne napisanie i uruchomienie programu. 

Kodowanie algorytmu programu polega na zapisie tego algorytmu w przyjętym języku 

programowania (assembler, C, C++, C#, Pascal, Java, Fortran itd). Do kodowania używa się 
programów do edycji tekstu zwanych edytorami. Edytory wykorzystywane do pisania tekstu 
programu muszą być edytorami nieformatującymi, to jest takimi, które nie zapisują w zbiorze 
wynikowym informacji o układzie tekstu (wielkości strony, wielkości marginesów, rodzaju 
                                                 

1

 Środowisko Dev–C++ można ściągnąć ze strony internetowej projektu: www.bloodshed.net

 Katedra 

Automatyki 

Napędu i Urządzeń Przemysłowych AGH, Kraków 2006

 1 

background image

JĘZYK  C  –  PODSTAWY  PROGRAMOWANIA 

i wielkości czcionki itp). W związku z tym nie należy używać edytorów tekstu takich jak 
Word z pakietu Microsoft Office czy Writer z pakietu Open Office. W środowisku 
MS-Windows do pisania tekstu programu wygodnie jest korzystać z edytora wbudowanego 
w środowisko zintegrowane. Można też stosować edytory programistyczne będące 
samodzielnymi programami np.: standardowy Notatnik (WordPad) lub TextPad w środowisku 
MS-Windows albo vijoe w środowisku UNIX. Wybór edytora należy do piszącego program 
i zależy od jego upodobań i przyzwyczajeń. 

Po edycji tekst programu zostaje zapisany jako zbiór na dysku. Zbiór ten jest nazywany 

zbiorem  źródłowym (ang.: source file). Dla zbiorów źródłowych programów w języku C 
przyjęto stosować rozszerzenie nazwy .c, dla zbiorów źródłowych programów w języku C++ 
– rozszerzenie .cpp,  .cp,  .cc,  .c++. Zbiorom nagłówkowym (ang.: header files) nadaje się 
rozszerzenie .h. Należy tylko pamiętać, że w systemach operacyjnych, w których rozróżniana 
jest wielkość liter w nazwach (np. UNIX, Linux, QNX) zasadniczo używa się małych liter. 

Kompilacja programu polega przetłumaczeniu kodu źródłowego programu na 

relokowalny kod maszynowy (binarny) za pomocą specjalnego programu zwanego 
kompilatorem (ang.: compiler). Kompilatory języka C/C++ dokonują tłumaczenia w dwóch 
etapach: 

•  etap wstępnego przetworzenia tekstu programu (ang.: preprocessing), którego 

zadaniem jest usunięcie komentarzy z tekstu programu i przetworzenie tekstu 
programu zgodnie z dyrektywami preprocesora tj. rozkazami rozpoczynającymi się 
znakiem # (np. #include, #define, #ifdef, itd). 

•  etap właściwej kompilacji mającej na celu wygenerowanie kodu maszynowego dla 

poszczególnych modułów programu. W tym etapie można wyróżnić dwa podetapy: 

analizę tekstu programu pod względem poprawności składni języka C/C++ 
i wyodrębnienie poszczególnych jednostek leksykalny języka, 

generację kodu dla poszczególnych instrukcji (bloków instrukcji) programu. 
Ten podetap kompilacji jest już zależny od sprzętu (m. in. od typu procesora), 
na którym program ma być wykonywany. Kod wynikowy może być dodatkowo 
optymalizowany przez kompilator pod kątem pewnych kryteriów, np. szybkości 
wykonywania programu albo wielkości kodu wynikowego. Możliwości 
optymalizacji kodu wynikowego są dostępne w bardziej zaawansowanych 
kompilatorach. 

W wyniku kompilacji otrzymuje się binarny zbiór zawierający relokowalny kod danego 

modułu programu (ang.: object file). Zbiór ten ma rozszerzenie .o lub .obj

W przypadku zgłoszenia przez kompilator błędów w kodzie źródłowym programu należy 

ten kod poprawić za pomocą edytora. 

Konsolidacja programu jest procesem polegającym na połączeniu ze sobą 

skompilowanych, relokowalnych modułów programu i modułów zawartych w zbiorach 
bibliotecznych (ang.: library files) w celu otrzymania zbioru z kodem wykonywalnym 
(ang.: executable file). Zbiory biblioteczne mają najczęściej rozszerzenia .lib lub .a, zbiory 
wykonywalne .exe (MS-Windows) lub nie mają rozszerzenia (UNIX). 

Do konsolidacji programu używa się specjalnego programu zwanego konsolidatorem 

(ang.: linker). 

W czasie konsolidacji mogą pojawić się  błędy, które są wynikiem błędu w tekście 

źródłowym programu lub skompilowaniu programu z użyciem niewłaściwych parametrów 
kompilacji. 

Uruchamianie i testowanie programu polega na sprawdzeniu poprawności działania 

programu zarówno pod kątem zgodności z założeniami działania programu jak i poprawności 
jego pracy w danym systemie (brak „zawieszania” się programu, prawidłowe reakcje 

Katedra Automatyki Napędu i Urządzeń Przemysłowych AGH, Kraków 2006

 

background image

JĘZYK  C  –  PODSTAWY  PROGRAMOWANIA 

programu w sytuacjach nietypowych itp.). Do wykrywania błędów w czasie testowania służą 
specjalne programy uruchomieniowe zwane odpluskwiaczami (ang.: debugger). Pozwalają 
one na monitorowanie wartości poszczególnych zmiennych, pracę krokową, ustawianie 
pułapek (ang.: breakpoint). 

W celu umożliwienia testowania programu za pomocą odpluskwiacza należy w czasie 

kompilacji i konsolidacji włączyć opcje, które powodują dodanie do zbioru wykonywalnego 
informacji o nazwach zmiennych i kolejnych instrukcjach programu. W środowisku Dev-C++ 
należy w menu otworzyć okno opcji projektu: Project  → Project options  → Compier 
→ Linker i opcję „Generate debugging information” ustawić na „Yes”. Używając kompilatora 
wywoływanego z linii poleceń należy użyć odpowiedniego parametru kompilacji (najczęściej 
–g, –g1, –g2 albo –g3). 

Zintegrowane środowisko programistyczne Dev-C++ pozwala na wykonywanie wyżej 

opisanych kroków tworzenia programu w wygodny sposób w obrębie jednego programu. 
Zwalnia ono programistę od pisania często bardzo złożonych poleceń w celu skompilowania 
i skonsolidowania programu. Środowisko Dev-C++ zawiera: 

•  edytor umożliwiający edycję kilku zbiorów jednocześnie, 
•  kompilator, 

•  konsolidator, 

•  odpluskwiacz, 
•  system aktualizacji zbioru wynikowego umożliwiający w razie poprawek 

w programie  kompilację tylko tych modułów, które zależą od niego. Skraca to 
znacznie czas kompilacji programu w fazie jego testowania. 

Poszczególne funkcje środowiska są dostępne z menu lub poprzez klawisze funkcyjne 

(lub kombinacje klawiszy) w celu szybszego dostępu do najczęściej używanych. 

W tabeli 1 zestawiono najczęściej wykorzystywane kombinacje klawiszy i przypisane im 

funkcje  środowiska Dev-C++, natomiast w tabeli 2 przedstawiono funkcje przypisane 
kombinacjom klawiszy edytora środowiska Dev-C++. 

 Katedra 

Automatyki 

Napędu i Urządzeń Przemysłowych AGH, Kraków 2006

 3 

background image

JĘZYK  C  –  PODSTAWY  PROGRAMOWANIA 

Program ćwiczenia 

1.  Uruchomić  środowisko Dev-C++ klikając na odpowiednią ikonę na pulpicie Windows 

i zapoznać się z jego elementami: 
•  menu, 

•  oknami, 
•  systemem pomocy. 

2.  Przeanalizować program przedstawiony poniżej. Słowa kluczowe języka C++ zostały 

wytłuszczone. Program ten zachęca użytkownika do wprowadzenia liczby całkowitej, 
czyta wprowadzoną liczbę, a następnie wyprowadza na ekran monitora liczbę o wartości 
dwukrotnie większej. Należy zwrócić uwagę na specyfikator formatu w funkcjach 
printf() i scanf(). Skrócony opis działania tych funkcji jest przedstawiony 
w dokumentach: C_Printf.pdf i C_Scanf.pdf. 
Aby móc wpisać kod źródłowy programu i następnie go kompilować, konsolidować 
i uruchamiać należy w środowisku Dev-C++ otworzyć nowy projekt (menu File → New 
→ Project). Jako typ projektu należy wybrać  „Console Application” i nadać nazwę 
projektowi według własnego uznania. Po zaakceptowaniu klawiszem „Ok”, pojawi się 
okno pozwalające wybrać miejsce na dysku, w którym projekt będzie zapisany. Należy 
wybrać katalog przeznaczony na prace studentów. Po zapisaniu projektu w oknie 
edycyjnym pojawi się szablon głównego modułu programu zawierający szkielet funkcji 
main(). Używając edytora należy tak zmodyfikować tekst modułu, aby uzyskać niżej 
przedstawiony kod źródłowy. 

 
#include <stdio.h> 

#include <conio.h> 
 
using

 namespace std; 

 
int

 main(int argc, char *argv[]) 

 

int

 liczba; 

 
 printf("Podaj 

liczbę całkowitą: "); 

 scanf("%d", 

&liczba); 

 printf("Dwukrotna 

wartość liczby wynosi %d\n", 

 

 

2 * liczba); 

 
 getch(); 

 

 

return

 0; 

Po wpisaniu należy zapisać tekst programu na dysku (menu File → Save lub kombinacja 
klawiszy  Ctrl+S). Otworzy się okno pozwalające nadać plikowi źródłowemu własną 
nazwę. W celu skompilowania programu należy wybrać w menu Execute → Compile lub 
nacisnąć kombinację klawiszy Ctrl+F9. Jeśli program skompiluje się bezbłędnie można 
go uruchomić (menu Execute  → Run lub naciskając  Ctrl+F10) i zobaczyć wynik 
działania programu w oknie. 

Katedra Automatyki Napędu i Urządzeń Przemysłowych AGH, Kraków 2006

 

background image

JĘZYK  C  –  PODSTAWY  PROGRAMOWANIA 

3.  Zobaczyć jak zmieni się sposób wyświetlania liczby całkowitej, jeśli specyfikator 

formatu %d zamieni się na: 

%6d 

%8d 

%-6d 

%+6d 

% 6d 

 

(spacja po znaku %) 

%06d 

%+d 

% d   

 

(spacja po znaku %) 

4.  Zmodyfikować program uruchomiony w punktach 2 i 3 tak, aby zachęcał do 

wprowadzenia dwóch liczb całkowitych, czytał je i wyprowadzał na ekran ich sumę, 
różnicę, iloczyn i iloraz każdy w innym wierszu. Zwrócić uwagę na wyniki dodawanie 
i mnożenia w przypadku wprowadzenia liczb o dużych wartościach bezwzględnych 
(których suma bądź iloczyn będzie przekraczał 2

31

). 

5.  Program uruchomiony w punkcie 4 zmodyfikować tak, aby uniemożliwiał wykonanie 

dzielenia przez 0 podczas obliczania ilorazu. 

6.  Napisać program służący do rozwiązywania równania kwadratowego w postaci: 

0

2

=

+

+

c

x

b

x

a

 

o zadanych współczynnikach ab i c
Program powinien zachęcać użytkownika do wprowadzenia współczynników równania, 
a następnie sprawdzić, czy opisują one równanie kwadratowe (≠ 0).  Jeżeli 
współczynniki są poprawne, program powinien obliczyć pierwiastki równania. Sposób 
obliczania i wyświetlania wyników musi być uzależniony od znaku wyróżnika równania. 
Jeżeli wprowadzone współczynniki nie opisują równania kwadratowego program 
powinien wyświetlić odpowiedni komunikat. 
 

 Katedra 

Automatyki 

Napędu i Urządzeń Przemysłowych AGH, Kraków 2006

 5 

background image

JĘZYK  C  –  PODSTAWY  PROGRAMOWANIA 

TABELA  1.  Ważniejsze  klawisze  funkcyjne  środowiska  Dev–C++ 

KLAWISZ(E) FUNKCJA 

Ctrl+F9 

Kompilacja oraz konsolidacja całego projektu (ang.: Make

Shift+Ctrl+F9 

Kompilacja modułu otwartego w oknie edycyjnym (ang.: Compile

Ctrl+F10 

Uruchomienie programu (ang.: Run

Alt+F2 

Ponowne inicjowanie programu (ang.: Reset

Shift+F4 

Wykonanie programu do miejsca kursora (ang.: Go to cursor

Shift+F7 

Praca krokowa z wejściami do wnętrz (ang.: Trace into

F7 

Praca krokowa bez wchodzenia do wnętrz funkcji (ang.: Step

Ctrl+W  
F4 

Monitorowanie wartości zmiennych (ang.: Inspect variable

Ctrl+F5 

Wstawianie / usuwanie pułapek dla debuggera (ang.: Toggle breakpoints)

Alt+F4 

Zamknięcie okna edycyjnego (ang.: Close window

TABELA  2.  Klawisze  funkcyjne  edytora  środowiska  Dev–C++ 

Funkcje przesuwania kursora 

KLAWISZ(E) FUNKCJA 

← Przesunięcie kursora o jeden znak w lewo 
→ Przesunięcie kursora o jeden znak w prawo 
Ctrl+ 

Przesunięcie kursora o jedno słowo w lewo 

Ctrl+ 

Przesunięcie kursora o jedno słowo w prawo 

↑ Przesunięcie kursora o jeden wiersz w górę 
↓ Przesunięcie kursora o jeden wiersz w dół 
PgUp 

Przesunięcie kursora o 1 stronę w górę 

PgDn 

Przesunięcie kursora o 1 stronę w dół 

Home 

Przesunięcie kursora do początku linii 

End 

Przesunięcie kursora do końca linii 

Ctrl+Home 

Przesunięcie kursora do początku tekstu 

Ctrl+End 

Przesunięcie kursora do końca tekstu 

Funkcje wstawiania i usuwania znaków i tekstu 

KLAWISZ(E) FUNKCJA 

Del 

Usunięcie znaku pod kursorem (ang.: Delete

Backspace 

Usunięcie znaku po lewej stronie kursora (ang.: Backspace

Ctrl+Y Usunięcie całego wiersza (ang.: Delete line
Ins 

Przełączanie trybu wstawiania i nadpisywania (ang.: Insert mode
Overwrite mode

Operacje na blokach tekstu 

KLAWISZ(E) FUNKCJA 

Shift+← 
Shift
+↑ 
Shift
+→ 
Shift
+↓ 

Zaznaczanie bloku tekstu (ang.: Mark text

Del 

Usuwanie zaznaczonego bloku (ang.: Delete

Katedra Automatyki Napędu i Urządzeń Przemysłowych AGH, Kraków 2006

 

background image

JĘZYK  C  –  PODSTAWY  PROGRAMOWANIA 

KLAWISZ(E) FUNKCJA 

Shift+Ctrl+I 

Zwiększenie wcięcia bloku (ang.: Indent

Shift+Ctrl+U 

Zmniejszenie wcięcia bloku (ang.: Unindent

Ctrl+C 
Ctrl+Ins
 

Kopiowanie bloku do schowka (ang.: Copy

Ctrl+X 
Shift+Del 

Przeniesienie bloku do schowka (ang.: Cut

Ctrl+V 
Shift+Ins 

Wstawianie zawartości schowka do tekstu (ang.: Paste

Różne 

KLAWISZ(E) FUNKCJA 

Ctrl+S 

Zapisanie tekstu do zbioru (ang.: Save

Ctrl+F12 

Zapisanie tekstu zbioru pod nową nazwą (ang.: Save as

Ctrl+O

 

Otwarcie zbioru do edycji (ang.: Open

Ctrl+F 

Szukanie (ang.: Find

Ctrl+R 

Zamiana (ang.: Replace

F3 

Ponowne szukanie (ang.: Find next

Ctrl+I 

Szukanie przyrostowe (ang.: Incremental search

Ctrl+G 

Przejdź do wiersza (ang.:  Go to line

Ctrl+Z 

Cofnięcie ostatniej operacji (ang.: Undo

Ctrl+Shift+Z 

Powtórzenie ostatnio cofniętej operacji (ang.: Redo

 

 Katedra 

Automatyki 

Napędu i Urządzeń Przemysłowych AGH, Kraków 2006

 7 


Document Outline