C Podstawy id 96636 Nieznany

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 vi, joe 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

2

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: ProjectProject optionsCompier
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 FileNew
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 FileSave 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 ExecuteCompile lub
nacisnąć kombinację klawiszy Ctrl+F9. Jeśli program skompiluje się bezbłędnie można
go uruchomić (menu ExecuteRun lub naciskając Ctrl+F10) i zobaczyć wynik
działania programu w oknie.

4

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 a, b 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 (a ≠ 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)

6

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


Wyszukiwarka

Podobne podstrony:
PODSTAWY(1) id 368892 Nieznany
intuicja podstawowa id 219277 Nieznany
podstawa id 366112 Nieznany
PODSTAWY id 366612 Nieznany
MES Podstawy id 293435 Nieznany
Poziom podstawowy(1) id 380128 Nieznany
acc podstawy id 50626 Nieznany
Podstawy 3 id 366629 Nieznany
fizyka podstawy id 177486 Nieznany
Programowanie Od podstaw id 39 Nieznany
forex podstawy id 179424 Nieznany
cwiczenia 4 podstawczaki id 124 Nieznany (2)
Elaboracja Podstawy id 157356 Nieznany
bulaj pojecia podstawowe id 951 Nieznany (2)
Programowanie podstawy id 39630 Nieznany
PODSTAWY(1) id 368892 Nieznany
intuicja podstawowa id 219277 Nieznany

więcej podobnych podstron