• Nie Znaleziono Wyników

Rozdział 3. PROGRAMOWANIE W JĘZYKU C++

N/A
N/A
Protected

Academic year: 2022

Share "Rozdział 3. PROGRAMOWANIE W JĘZYKU C++"

Copied!
6
0
0

Pełen tekst

(1)

Definicja

Rozdział 3.

PROGRAMOWANIE W JĘZYKU C++

Rozdział ten omawia podstawy języka programowania C++ niezbędne do realizacji zagadnień algorytmicznych zawartych w podręczniku. Sta ­ nowi on uzupełnienie rozdziałów 1., „Wprowadzenie do algorytmiki", i 2., „Algorytmy i ich zastosowanie", w których stosowany jest język C++.

Zgromadzenie w jednym miejscu wszystkich informacji na temat języka programowania na pewno ułatwi pracę z podręcznikiem i stanowić bę­

dzie skuteczną pomoc przy pisaniu programów.

Napisanie programu w języku programowania wysokiego poziomu stanowi jeden ze sposobów przedstawiania algorytmów (patrz podrozdział 1.3,

„Sposoby reprezentowania algorytmów"). Ta reprezentacja wymaga jed­

nak znajomości języka programowania. Rozdział ten powinien więc mieć charakter pomocniczy. Należy się do niego odwoływać wtedy, gdy zaist­

nieje zapotrzebowanie na kolejne narzędzia programistyczne.

3.1. Języki programowania

— pojęcia, klasyfikacja, przykłady

Języki programowania to specjalne języki przeznaczone do formułowania algoryt­

mów w taki sposób, aby były one zrozumiałe dla komputera. Możemy je podzielić na dwie grupy:

. języki wewnętrzne — języki ściśle związane ze sprzętem, stanowią jedyny zro­

zum iały przez m aszynę język poleceń, każde słowo zapisywane jest w postaci ciągu 0 i 1 o ustalonej długości, słowo może być interpretowane jako liczba lub rozkaz, liczby reprezentow ane są w postaci stałopozycyjnej lub zm iennopozy­

cyjnej, co zostało opisane w punkcie 2.3.6, „Reprezentacja danych liczbowych w komputerze”;

. języki zewnętrzne — języki stworzone z myślą o zapisywaniu algorytmów przez człowieka w sposób zrozum iały dla kom putera; dzielimy je na języki niskiego i wysokiego poziomu.

Informatyka

Europejczyka 3.1. Języki programowania — pojęcia, klasyfikacja, przykłady 203

(2)

Konieczność pow stania języków zew nętrznych została podyktow ana tym , że zapisy­

wanie algorytm ów bezpośrednio w języku w ew nętrznym z wykorzystaniem systemu binarnego jest uciążliwe. Dlatego program ista zapisuje algorytm w postaci program u w wybranym języku zewnętrznym, który następnie jest tłumaczony na język wewnętrzny komputera.

Do języków zewnętrznych niskiego poziomu zaliczamy języki zorientowane maszynowo, czyli ściśle związane z określonym typem procesora, a więc również językiem wewnętrz­

nym komputera. Należą do nich asemblery, których używa się zwykle do konstruowania

„wstawek” w programach pisanych w językach wysokiego poziomu.

Języki zewnętrzne wysokiego poziomu są językami, które służą do pisania programów przez programistów. Ich struktura jest czytelna dla człowieka i pozwala w prosty spo­

sób zapisywać konstrukcje algorytmiczne pojawiające się w rozwiązywanym problemie.

Najbardziej znane języki należące do tej grupy przedstawiono w tabeli 3.1.

Tabela 3.1. Przykłady języków wysokiego poziomu Język

programowania wysokiego poziomu

Cechy języka

Algol 60

• Pierwszy język wysokiego poziomu, powstał na przełomie lat pięćdziesiątych i sześćdziesiątych

• Przeznaczony do obliczeń numerycznych (realizacja złożonych obliczeń matematycznych przy niewielkiej liczbie danych)

• Obecnie nie jest używany

Fortran

• Wykorzystywany do obliczeń numerycznych

• Istnieje biblioteka programów o charakterze numerycznym napisanych w tym języku

• Obecnie wychodzi z użycia

Cobol

• Przeznaczony do przetwarzania danych (realizacja prostych obliczeń matematycznych przy dużej liczbie danych)

• Wykorzystywany w zarządzaniu i informacji w bankach, ad­

ministracji itp.

• Obecnie wychodzi z użycia

Pascal

• Twórcą języka jest Niklaus Wirth (1969)

• Dodano nowe struktury danych: rekordy, pliki, zbiory, obiekty, co wpłynęło na uniwersalność jego stosowania

• Stworzony dla celów naukowych i dydaktycznych

• Uważany za wzorcowy („pierwszy”) język programowania

• Obecnie stosowany przede wszystkim w dydaktyce C/C++, C#, Java, Python, PHP • Profesjonalne języki programowania

Kolejnym etapem rozwoju języków jest pojawienie się narzędzi nazywanych generatorami aplikacji, które umożliwiają konstruowanie prostych aplikacji przez złożenie ich z gotowych elementów (czyli komponentów). Programy te bazują na istniejących językach program o­

wania, jednak wzbogacają je o biblioteki gotowych narzędzi i elementów. Przykładem może być Delphi dla języka Pascal czy też Visual Basic dla języka Basic.

(3)

Definicja

Translacja to proces tłumaczenia programu z języka źródłowego (na przykład języka zewnętrznego wysokiego poziomu) na język wynikowy (na przykład język wewnętrzny) zrozumiały przez procesor.

Istnieją dwa typy program ów realizujących tłumaczenie:

• kompilatory — najpierw cały program napisany w języku programowania jest tłum a­

czony na język wewnętrzny, a następnie wykonywany;

• interpretery — każde polecenie jest kolejno tłumaczone na język wewnętrzny i wy­

konywane przez komputer.

W początkowym okresie rozwoju języków program owania korzystano zarówno z kom ­ pilatorów, jak i interpreterów. Obecnie najczęściej stosuje się kompilatory. Przykładem m oże być język Basic, dla którego powstało wiele interpreterów, co spowodowało n ie­

stabilność tego języka. Polegała ona na różnej interpretacji jego poleceń.

Przedstawione powyżej języki program ow ania zaliczane są do języków statycznych (czyli imperatywnych). Pisanie programów w tych językach polega na podawaniu ciągu instrukcji, które są wykonywane w odpowiedniej kolejności. Istnieją również języki p ro ­ gramowania, w których program y składają się ze zbioru form uł logicznych. Realizacja program ów zapisanych w takich językach, zwanych językami logicznymi (czyli dekla­

ratywnymi), polega na znalezieniu elementów spełniających formuły zawarte w progra­

mie. Przykładem takiego języka jest Prolog, którego twórcą jest Robert Kowalski (1974).

Języki te wykorzystywane są przede wszystkim w zakresie sztucznej inteligencji, syste­

mów eksperckich i innych pokrewnych dziedzin.

3.2. Wprowadzenie do programowania

Rozwój projektowania i program owania w kierunku obiektowym spowodował zmiany w zakresie języka C. Rozszerzono go o elem enty umożliwiające program ow anie zo ­ rientow ane obiektowo. C++ stanowi więc nadzbiór języka C. Różnica pom iędzy tym i językami jest znacząca, jednak wszystkie popraw ne program y napisane w języku C są również poprawne w C++.

W podręczniku będziemy korzystać z międzynarodowego standardu języka C++ stwo­

rzonego przez kom itet ASC (Accredited Standards Committee), który działa w ram ach ANSI (American National Standards Institute). Standard ten określany jest najczęściej m ianem ANSI/ISO.

Standard ANSI C++ stara się zapewnić przenośność tego języka. Oznacza to, że kod pro­

gramu powinien być poprawny dla różnego typu kom puterów pracujących w wielu sy­

stemach. Ponadto standard ten powinien być czytelny dla różnych kompilatorów.

Informatyka

i Europejczyka 3.2. Wprowadzenie do programowania 205

(4)

Rozdział 3., „Programowanie w języku C ++”, poświęcony jest elem entom języka C++.

Nie jest to szczegółowy opis języka, zawiera jedynie charakterystykę tych jego elem en­

tów, które są niezbędne do konstruowania program ów zawartych w podręczniku.

3.2.1. Struktura programu

Program w języku C++ zbudowany jest z dwóch części:

• część deklaracyjna,

• część operacyjna.

Część deklaracyjna obejmuje wszystkie deklarowane elementy programu, które mogą zostać wykorzystane w części operacyjnej. Ta część służy do definiowania bądź dekla­

rowania różnych elementów, jednak nie można ich w tym miejscu uruchomić. Do tego wykorzystuje się część operacyjną.

Część operacyjna to program główny, który w tym języku jest funkcją o nazwie main().

Po uruchom ieniu programu wykonywane są wszystkie polecenia zawarte w funkcji main ( ) . W tej części program u korzystamy ze zdefiniowanych lub zadeklarowanych przez nas ele­

mentów znajdujących się w części deklaracyjnej.

W początkowym etapie nauki języka C++ będziemy korzystać z uproszczonej budowy pro ­ gramu. W następnych podrozdziałach poznasz bardziej zaawansowane możliwości kon­

struowania programu.

Przykład 3.1.'>

Przyjrzyjmy się konstrukcji pierwszego programu (prog3_ l.cpp), który został przedstawiony w tabeli 3.2. Komentarze umieszczone z prawej strony wyjaśniają znaczenie poszczegól­

nych elementów implementacji. W języku C++ rozróżniane są małe i wielkie litery, kod program u należy więc zapisywać dokładnie tak, jak podano w podręczniku.

Tabela 3.2. Pierwszy program w języku C++

Kod programu Komentarz

CZĘŚĆ DEKLARACYJNA

# in c lu d e <iostream >

Dyrektywa preprocesora — preprocesor to pro­

gram dokonujący wstępnego przeglądu kodu źródłowego programu

Deklaracja bibliotek (czyli plików nagłówko­

wych), z których korzystamy w programie Biblioteka io stre a m zawiera definicje stan­

dardowego strumienia wejścia c in i standar­

dowego strumienia wyjścia cout

u sin g namespace s td j

Deklaracja korzystania z przestrzeni nazw standardowych std (czyli biblioteki standar­

dowej)

Rozdział 3. Programowanie w języku C++

(5)

Wskaż

CZĘŚĆ OPERACYJNA

in t m ain() Nagłówek funkcji głównej

{

in t a, b, c; Deklaracja zmiennych lokalnych a, b, c

a = 2; Przypisanie zmiennej a wartości 2

cout<<"podaj w artość zm iennej b :" j Komunikat wypisany na ekranie „podaj war­

tość zmiennej b:”

cin > >b ; Wczytanie z klawiatury wartości zmiennej b

c = a + bj Przypisanie zmiennej c sumy zmiennych a i b

cout<<a<<" + "<<b<<" = "<<c<<endl; Wypisanie wyniku na ekranie

re tu rn 0; Przypisanie funkcji m ain() wartości 0

}

Nagłówek funkcji głównej in t m ain() w pełnej postaci zapisywany jest następująco:

int main (void), gdzie:

• in t oznacza, że typ wartości zwracanej z funkcji m ain() jest całkowity, funkcji tej przypisywana jest więc wartość typu in t , pominięcie typu w nazwie funkcji ozna­

cza, że jest ona typu in t ;

• main to nazwa funkcji;

• v o id oznacza „pusty”, a w tym przypadku brak parametrów, które wpisuje się w n a­

wiasie, pusty nawias jest równoważny void.

Program y przedstaw ione w tym podręczniku napisane zostały w trybie konsolowym (czyli tekstowym). Z tego wynika, że po uruchom ieniu program u w środowisku Windows, otwarte zostanie okienko konsoli, w którym wykonywany jest program. Aby okienko kon­

soli nie zamknęło się zaraz po zakończeniu programu, musimy zastosować odpowiednie działania. Poniżej podano polecenia, które w tej sytuacji m ożna wykorzystać.

Jeśli pracujemy w systemie Windows, wystarczy w funkcji m ain () przed zakończeniem program u wpisać polecenie sy ste m ("p au se "), co spowoduje uruchom ienie funkcji sy­

stemowej pause. Program będzie wyglądał wówczas następująco (prog3_2.cpp):

# in c lu d e <iostream >

# in c lu d e < c s t d lib >

u sin g namespace s td ; in t m ain()

{

in t a, b, c;

a = 2;

cout<<"podaj w artość zm iennej b :" ; cin > >b ;

Informatyka

; Europejczyka 3.2. Wprowadzenie do programowania 207

(6)

c = a + b;

cout<<a<<" + "<<b<<" = "<<c<<endl;

sy ste m ("p a u se ");

return 0;

}

Można skorzystać również z polecenia c i n . g e t () (patrz tabela 3.5). Jednak aby ta funkcja działała poprawnie, należy wcześniej zignorować znaki znajdujące się w strum ieniu wej­

ściowym poleceniem c in .ig n o r e Q (patrz tabela 3.5). Przedstawiony program m a więc następującą postać (prog3_3.cpp):

# in c lu d e <iostream >

using namespace std ; int m ain()

{

int a, b, c;

3 = 2;

cout<<"podaj w artość zm iennej b :" j cin > >b ;

c = a + b;

cout<<a<<" + "<<b<<" = "<<c<<endl;

- c in . ig n o r e ( ) j c i n . g e t ( ) ; return 0;

}

W przypadku pominięcia deklaracji przestrzeni nazw standardowych s td operacje wej­

ścia i wyjścia dostępne są dopiero po podaniu nazwy klasy std , czyli s t d :: cout, s t d : : cin.

Program z takim i zmianami przedstawiono poniżej (prog3_4.cpp):

# in c lu d e <iostream >

int m ain() {

int a, b, c j a = 2;

s t d : : cout<<"podaj w artość zm iennej b :" j s t d : : cin > > b j

c = a + b;

std : :cout<<a<<" + "<<b<<" = "< < c < < std : : e n d lj return 0;

}

Cytaty

Powiązane dokumenty

Proces automatycznego tłumaczenia kodu z języka programowania wyższego poziomu na język programowania niższego poziomu c.. Proces automatycznego tłumaczenia kodu z

 Aby program był zrozumiały dla komputera, musi zostać przetłumaczony z języka wysokiego poziomu na język wewnętrzny komputera. Proces tłumaczenia nazywamy

Wyjaśnienie znaczenia związku frazeologicznego na podstawie działania, charakteru postaci z którejś z lektur konkursowych (przyznajemy punkt także za wskazanie postaci z

Przekazanie parametru przez wskazanie na zmienną (wskaźnik) umożliwia dokonania modyfikacji tej zmiennej wewnątrz funkcji.. Struktury I. • Struktura jest obiektem złożonym z

• ‌uruchamia się automatycznie na rzecz obiektu tuż przed jego likwidacją. • ‌nie

tu mamy do czynienia z wahaniami w pisowni e/a &lt; *ę, w których [e] jest regularnym zachodnioruskim refleksem nieakcentowanego [a] kontynuującego psł.

Mogłoby się wydawać, że angielskie tłumaczenie słowa wiedźmin jako witcher jest bardziej prawidłowe z tego względu, że sufiksu -er w języku angielskim używa się, aby

as a matter of fact, the analysis of the original Pavol dobšinský collection of Slovak fairy tales showed that there are certain stylistic features (pronouns, particles,