C_Podstawy.doc

(124 KB) Pobierz
Tematyka i cel ćwiczenia

JĘZYK C, ĆWICZENIE 1 – PODSTAWY PROGRAMOWANIA              4

Cel ćwiczenia

Celem ćwiczenia jest zapoznanie się z krokami tworzenia programów (edycją, kompilacją, konsolidacją i uruchamianiem) przy pomocy środowiska zintegrowanego Borland C/C++ wer. 3.1 na przykładzie prostego programu w języku C wykorzystującego standardowe funkcje wejścia/wyjścia w języku C: scanf() i printf() oraz instrukcję warunkową 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 następującym schemacie blokowym:

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 (flow chart'u) 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++, Pascal, 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 (marginesów, wielkości strony itp). W związku z tym nie należy używać edytorów tekstu takich jak Word z pakietu Microsoft Office czy Ami Pro firmy Lotus. W środowisku MS–DOS do pisania tekstu programu wygodnie jest korzystać z edytora wbudowanego w środowisko zintegrowane Borland C/C++. Można też stosować edytory będące samodzielnymi programami np.: Norton Editor, MultiEdit, Brief w środowisku MS–DOS, vi, joe w środowisku UNIX. Wybór edytora należy do piszącego program i zależy od jego upodonań i przyzwyczajeń.

Po edycji tekst programu zostaje zapisany jako zbiór na dysku. W środowisku MS–DOS dla tekstów programów w języku C przyjęto stosować rozszerzenie nazwy .C, dla tekstów programów w języku C++ – rozszerzenie .CPP, a zbiorom nagłówkowym nadaje się rozszerzenie .H. W środowisku UNIX dla tekstów programów w języku C przyjęto stosować sufiks nazwy .c, dla tekstów programów w języku C++ – sufiks .cpp lub .cc, a zbiorom nagłówkowym nadaje się sufiks .h.

Kompilacja programu polega przetłumaczenia kodu źródłowego programu na relokowalny kod maszynowy (binarny) za pomocą specjalnego programu zwanego kompilatorem. Kompilatory języka C/C++ dokonują tłumaczenia w dwóch etapach:

·            etap wstępnego przetworzenia tekstu programu (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ę binarne zbiory zawierające relokowalny kod danego modułu programu (ang.: object file). W środowisku MS–DOS mają one rozszerzenie .OBJ, natomiast w środowisku systemu UNIX – .o.

W przypadku zgłoszenia przez kompilator błędów w tekście źródłowym programu należy ten tekst poprawić za pomocą edytora.

W celu umożliwienia testowania programu za pomocą debuggera należy w czasie kompilacji włączyć opcje kompilatora, które powodują dodanie do zbioru wykonywalnego informacji o nazwach zmiennych i kolejnych instrukcjach programu. Gdy używa się kompilatora wbudowanego w środowisko zintegrowane należy wybrać z menu: Options | Debbuger i w polu „Source Dubugging” ustawić opcję „On”. Używając kompilatora wywoływanego z linii poleceń (bcc) należy użyć parametru –v.

Konsolidacja programu jest procesem polegającym na połączeniu ze sobą skompilowanych, relokowalnych modułów programu i modułów zawartych w bibliotekach w celu otrzymania zbioru wykonywalnego. Do konsolidacji programu używa się specjalnego programu zwanego konsolidatorem (linkerem). 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 programu w sytuacjach nietypowych itp.). Do wykrywania błędów w czasie testowania służą specjalne programy uruchomieniowe zwane debuggerami. Pozwalają one na monitorowanie wartości poszczególnych zmiennych, pracę krokową, ustawianie pułapek (ang.: breakpoint).

Zintegrowane środowisko programistyczne Borland C/C++ wer. 3.1 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 Borland C/C++ zawiera:

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

·            kompilator,

·            konsolidator (linker),

·            debugger,

·            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 Borland C/C++, natomiast w tabeli 2 przedstawiono funkcje przypisane kombinacjom klawiszy edytora środowiska Borland C/C++.


Program ćwiczenia

  1. Uruchomić środowisko Borland C/C++ poleceniem bc i zapoznać się z jego elementami:

·            menu

·            oknami: edycyjnym (edit window), komunikatów (message window), wyjściowym (output window), ekranem użytkownika (user screen), rejestrów procesora (register window), projektu (project window).

·            systemem pomocy

  1. Przeanalizować program przedstawiony poniżej. Program ten zachęca użytkownika do wprowadzenia liczby całkowitej, czyta wprowadzoną liczbę, a następnie wyprowadza na terminal liczbę o wartości dwukrotnie większej.  Zwrócić uwagę na specyfikator formatu w funkcjach printf() i scanf(). Skrócony opis działania tych funkcji jest przedstawiony w dokumentach „Funkcja printf( )” i „Funkcja scanf( )”.

Wpisać kod tego programu używając edytora środowiska Borland C/C++, skompilować go i uruchomić.

 

#include <stdio.h>

 

int main()

{

              int liczba;

 

              printf("Podaj liczbę całkowitą: ");

              scanf("%d", &liczba);

              printf("Dwukrotna wartość liczby wynosi %d\n",

                            2 * liczba);

 

              return 0;

}

  1. 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 %)

  1. Zmodyfikować program uruchomiony w punkcie 1 tak, aby zachęcał do wprowadzenia dwóch liczb całkowitych, czytał je i wyprowadzał na terminal ich sumę, różnicę, iloczyn i iloraz każdy w innym wierszu. Zwrócić uwagę na wyniki w przypadku wprowadzenia liczb o dużych wartościach bezwzględnych (20000 ÷ 32000).
  2. Program uruchomiony w punkcie 4 zmodyfikować tak, aby uniemożliwiał wykonanie dzielenia przez 0 podczas obliczania ilorazu.
  3. Napisać program służący do rozwiązywania równania kwadratowego o zadanych współczynnikach. Uzależnić sposób rozwiązania i wyświetlania wyników od znaku wyróżnika równania.


TABELA  1.  Ważniejsze  klawisze  funkcyjne  środowiska  BORLAND C/C++

KLAWISZ(E)

FUNKCJA

Alt+X

Wyjście ze środowiska do DOS’u

F1

Pomoc (Help)

Shift+F1

Indeks pomocy (spis treści)

F9

Kompilacja oraz konsolidacja całego projektu (make)

Alt+F9

Kompilacja modułu otwartego w oknie edycyjnym

Ctrl+F9

Uruchomienie programu

Ctrl+F2

Ponowne inicjowanie programu (reset)

F4

Wykonanie programu do miejsca kursora (debugger)

F7

Praca krokowa z wejściami do wnętrz funkcji (debugger)

F8

Praca krokowa bez wchodzenia do wnętrz funkcji (debugger)

Ctrl+F4

Monitorowanie wartości zmiennych (debugger)

Ctrl+F8

Wstawianie / usuwanie pułapek (break point’ów) dla debuggera

F6

Przełączanie okien

F5

Zwiększanie / zmniejszanie okna

Alt+F3

...
Zgłoś jeśli naruszono regulamin