Aktualizacja: 23.06.2005  Wersja: 0.4.48
Szukaj ::..
Temat ::..

..:: HOME ::..

  ::..:: INTERNETOWY SERWIS PROGRAMISTYCZNY ::..::

 

 

LEKCJA 1


LEKCJA 1. Co o C i C++ każdy wiedzieć powinien. 

________________________________________________________________ 

W trakcie tej lekcji dowiesz się, dlaczego pora na C++. 
________________________________________________________________ 


Język C++ jest uniwersalnym, nowoczesnym językiem programowania. 
Stosowane przez USA i inne kraje wobec Polski wieloletnie 
embargo COCOMu (przeszkody w dostępie do nowoczesnej 
technologii) sprawiły m. in., że popularność OS2, UNIXa i C/C++ 
jest w Polsce do dziś nieproporcjonalnie mała, a Basica, Pascala 
i DOSa nieproporcjonalnie duża. W USA C++ już od kilku lat 
stanowi podstawowe narzędzie programistów. 

Już słyszę oburzenie (A co mnie obchodzi historia 
"komputerologii" i koligacyjki!). Otóż obchodzi, bo wynikają z 
niej pewne "grzechy pierworodne" języka C/C++, a dla Ciebie, 
szanowny Czytelniku - pewne wnioski praktyczne. 

Grzech Pierwszy: 
* Kompilator języka C/C++ jest standardowym wyposażeniem systemu 
operacyjnego UNIX. 

Skutki praktyczne: 

Każdy PC jest w momencie zakupu (co często wchodzi w cenę zakupu 
komputera) wyposażany w system operacyjny DOS - np. DR DOS, PC 
DOS, PTS DOS lub MS DOS. Standardowo w zestaw systemu MS DOS 
wchodzi interpreter języka BASIC (w MS-DOS - QBasic.EXE). Możesz 
więc być pewien, że jeśli jest DOS, to musi być i BASIC. 
Podobnie rzecz ma się z C/C++. Jeśli jest na komputerze system 
UNIX (za wyjątkiem najuboższych wersji systemu XENIX), masz tam 
do dyspozycji kompilator C/C++, za to BASICA ani Pascala prawie 
na pewno tam nie ma. Podobnie coraz popularniejszy OS/2 
wyposażony jest w kompilator (całkiem niezły) C++ i dodatkowo 
jeszcze w pewne gotowe-firmowe biblioteki. 

Grzech drugi: 
* Język C/C++ powstał jeszcze zanim wymyślono PC, DOS, GUI 
(Graficzny Interfejs Użytkownika), Windows i inne tym podobne. 

Dwa najważniejsze skutki praktyczne: 

I. W założeniach twórców język C++ miał być szybki (i jest) i 
zajmować mało miejsca w pamięci (bo ówczesne komputery miały jej 
bardzo mało!). Zawiera więc różne, niezrozumiałe dla nas z 
dzisiejszego punktu widzenia skróty. Np. to co w Pascalu czy 
Basicu wygląda zrozumiale: 

i:=i+1; (Pascal) 
10 I=I+1 lub inaczej NEXT I (Basic) 

to w języku C++ wygląda dziwacznie: 

i++; albo jeszcze dziwniej ++i; 

Tym niemniej zwróć uwagę, że w Pascalu zajmuje to 7 znaków, w 
Basicu - 8 znaków (spacja to też znak!), a w C++ tylko 4. 

Inny przykład: 

X=X+5 (Basic, 5 znaków), 
X:=X+5 (Pascal, 6 znaków), 
X+=5 (C++, tylko 4 znaki). 

Z takiej właśnie filozofii wynika i sama nazwa - najkrótsza z 
możliwych. Jeśli bowiem i++ miało znaczyć mniej więcej tyle samo 
co NEXT I (następne I) to C++ znaczy mniej więcej tyle samo co 
"NASTĘPNA WERSJA C". 

II. Nie ma nic za darmo. W języku C/C++, podobnie jak w 
samochodzie wyścigowym formuły I, za szybkość i skuteczność 
płaci się komfortem. Konstrukcje stosowane w języku C/C++ są 
maksymalnie dostosowane do "wygody" komputera. Pozwala to na 
uzyskiwanie ˙niezwykle szybkich "maszynowo-zorientowanych" kodów 
wykonywalnych programu, ale od programisty wymaga 
przyzwyczajenia się do "komputerowo-zorientowanego sposobu 
myślenia". 

Grzech Trzeci (i chyba najcięższy): 
* Jest najlepszy. Ostrożniej - jest najchętniej stosowanym 
narzędziem profesjonalnych programistów. 

Ma oczywiście konkurentów. Visual Basic (do małych aplikacji 
okienkowych), Turbo Pascal (do nauki podstaw - elementów 
programowania sekwencyjnego, proceduralno-strukturalnego), 
QuickBasic (programowanie strukturalne w środowisku DOS), 
Fortran 90, ADA, SmallTalk, itp, itd. 

Sam wielki Peter Norton przyznaje, że początkowe wersje swojego 
słynnego pakietu Norton Utilities pisał w Pascalu, ale dopiero 
przesiadka na C/C++ pozwoliła mu doprowadzić NU do dzisiejszej 
doskonałości. Jakie są programy Petera Nortona - każdy widzi... 

Zapewne masz na swoim komputerze kilka różnych aplikacji (np. 
TAG, QR-Tekst, Word, itp.) - jeśli zajrzysz do nich do środka 
(View), możesz sam przekonać się, że większość z nich została 
napisana właśnie w C++ (Kompilatory C++ pozostawiają w kodzie 
wynikowym .EXE swoją wizytówkę zwykle czytelną przy pomocy 
przeglądarki; przekonasz się o tym także zaglądając przez [View] 
do własnych programów); stosowane narzędzia możesz rozpoznać 
także po obecności dynamicznych bibliotek - np. BWCC.DLL - 
biblioteka elementów sterujących - klawiszy, itp - Borland 
Custom Controls for Windows). 

Skutki praktyczne: 

Nauczywszy się języka C/C++ możesz nie bać się ani systemu 
UNIX/XENIX a ich środowiska okienkowego - X Windows, ani OS2, 
ani Windows 95 (dotychczasowe testy starych 16-bitowych 
aplikacji wykazały b. wysoki stopień kompatibilności), ani 
stacji roboczych, ani dużych komputerów klasy mainframe. Język 
C/C++ dosłużył się bowiem ogromnej ilości tzw. implementacji 
czyli swoich odmian, przeznaczonych dla różnych komputerów i dla 
różnych systemów operacyjnych. Windows NT i Windows 95 również 
zostały napisane w C++. 
Czytając prasę (np. Computer World, PC-Kurier i in.) zwróć 
uwagę, że najwięcej ofert pracy jest właśnie dla programistów 
posługujących się C++ (i tak zapewne będzie jeszcze przez kilka 
lat, póki nie wymyślą czegoś lepszego - np. jakiegoś C+++). 
Z Grzechu Trzeciego (choć nie tylko) wynika także pośrednio 
Grzech Czwarty. 

Języka C++ Grzech Czwarty - ANSI C, C++, czy Turbo C++, Visual 
C++, czyli mała wieża BABEL. 

Nie jestem pewien, czy "wieża BABEL" jest określeniem 
trafniejszym niż "kamień filozoficzny", bądź "perpetuum mobile". 
To co w ciągu ostatnich lat stało się z językiem C++ ma coś 
wspólnego z każdym z tych utopijnych symboli. A w dużym 
uproszczeniu było to tak. 

Podobnie, jak mechanikom od zarania dziejów marzyło się 
perpetuum mobile, tak informatykom zawsze marzyło się stworzenie 
jednego SUPER-UNIWERSALNEGO języka programowania. Takiego, który 
byłby zupełnie niezależny od sprzętu tzn., aby program napisany 
w takim języku mógł być przeniesiony BEZ ŻADNYCH ZMIAN na 
dowolny komputer I DZIAŁAŁ. Do takiej roli pretendowały kolejno 
FORTRAN, Algol a potem przyszła pora na C/C++. Gdyby informatycy 
nie okazali się zbyt zachłanni, może coś by z tego wyszło. Ale, 
jak to w życiu, programiści (podobnie jak żona rybaka z bajki "O 
rybaku i złotej rybce") chcieli wszystkiego naraz: 

* żeby program dał się przenieść na komputer innego typu i 
działał, 
* żeby działał szybko i optymalnie wykorzystywał sprzęt, 
* żeby umiał wszystko, co w informatyce tylko wymyślono (tj. i 
grafika, i obiekty, i obsługa peryferii i...). 

I stało się. W pomyślanym jako uniwersalny języku zaczęły 
powstawać odmiany, dialekty, mutacje, wersje itp. itd. 

Jeśli C++ nie jest Twoim pierwszym językiem, z pewnością 
zauważyłeś Czytelniku, że pomiędzy GW Basic a Quick Basic są 
pewne drobne różnice. Podobnie Turbo Pascal 7.0 trochę różni się 
od Turbo Pascala 5.0. Mimo to przykład poniżej pewnie Cię trochę 
zaskoczy. Dla zilustrowania skali problemu przedstawiam poniżej 
dwie wersje TEGO SAMEGO PROGRAMU napisanego w dwu różnych 
wersjach TEGO SAMEGO JĘZYKA C++. . Obydwa programy robią 
dokładnie to samo. Mają za zadanie wypisać na ekranie napis 
"Hello World" (czyli "Cześć świecie!"). 

Program (1) 

main() 

printf("Hello World\n"); 



Program (2) 

#include <windows.h> 
#include <iostream.h> 

LPSTR p = "Hello World\n"; 

main(void) 

cout << "Hello World" << endl; 
MessageBox(0, p, "Aplikacja dla Windows", MB_OK); 
return (0); 


Cóż za uderzające podobieństwo, prawda? Ale żarty na bok. Jeśli 
zaistnieje jakiś problem, zawsze mamy co najmniej trzy wyjścia. 
Możemy: 

1. Udawać, że go nie ma. 
Tak postępuje wielu autorów podręczników na temat C/C++. 
2. Krzyczeć, że nam się to nie podoba. 
Mamy pełne prawo obrazić się i wrócić do Basica lub Pascala. 
3. Spróbować poruszać się w tym gąszczu. 

Wyjście trzecie ma jedną wadę - jest najtrudniejsze, ale i 
efekty takiego wyboru są najbardziej obiecujące. 

Jeśli chcesz zaryzykować i wybrać wyjście trzecie, spróbujmy 
zrobić pierwszy krok w tej "dżungli". Wyjaśnijmy kilka nazw, 
pojęć i zasad gry obowiązujących w tym obszarze. 

Języki programowania posługują się pewnymi specyficznymi grupami 
słów i symboli. Są to m. in.: 

* słowa kluczowe 
(tu pomiędzy wersjami C++ rozbieżności są niewielkie), 

* operatory (po prostu znaki operacji - np. +), 
(tu zgodność jest niemal 100 %-owa) 

* dyrektywy 
(polecenia dla kompilatora JAK tworzyć program wynikowy; 
tu już jest gorzej, szczególnie dyrektywa #pragma w każdej 
wersji kompilatora C++ jest inna) 

* nazwy funkcji 
(z tym gorzej, bo każdy producent ma własne funkcje i własne 
upodobania) 

* nazwy stałych 
(gdyby chodziło tylko o PI i e - wszystko byłoby proste) 

* nazy zasobów (FILE, PRN, CONSOLE, SCREEN itp. itd) 
(tu jest lepiej, ale też rozbieżności są zauważalne) 

Autor programu może jeszcze nadawać zmiennym (liczbom, zmiennym 
napisom, obiektom, itp.) własne nazwy, więc czasem nawet 
wytrawny programista ma kłopoty ze zrozumieniem tekstu 
żródłowego programu... 

W języku C a następnie C++ przyjęto pewne maniery nadawania nazw 


- identyfikatorów ułatwiające rozpoznawanie tych grup słów: 

* nazwa() - funkcja 
* słowa kluczowe i nazwy zmiennych - małymi literami 
* STAŁE - nazwy stałych najczęściej dużymi literami 
* long/LONG - typy danych podstawowe/predefiniowane dla Windows 
_NAZWA - nazwy stałych predefiniowanych przez producenta 
__nazwa lub __nazwa__ - identyfikatory charakterystyczne dla 
danej wersji kompilatora 

itp., których to zwyczajów i ja postaram się przestrzegać w 
tekście książki. 

Amerykański Instytut Standardów ANSI od lat prowadzi walkę z 
wiatrakami. Stoi na straży jednolitego standardu języka, który 
nazywa się standardem ANSI C i ANSI C++. Wielcy producenci od 
czasu do czasu organizują konferencje i spotkania gdzieś w 
ciepłych krajach i uzgadniają niektóre standardy - czyli wspólne 
dla nich i zalecane dla innych normy, ale niektórzy bywają 
zazdrośni o własne tajemnice i nie publikują wszystkich 
informacji o swoich produktach. Dlatego wszelkie "słuszne i 
uniwersalne" standardy typu ODBC, Latin 2, Mazovia, LIM, OLE, 
DDE, BGI, itp., itd. mają niestety do dziś ograniczony zakres 
stosowalności a wszelkie zapewnienia producentów o całkowitej 
zgodności ich produktu z... (tu wpisać odpowiednie) należy 
niestety nadal traktować z pewną rezerwą. 

W niniejszej książce zajmiemy się kompilatorem Borland C++ w 
jego wersjach 3.0 do 4.5, jest to bowiem najpopularniejszy w 
Polsce kompilator języka C/C++ przeznaczony dla komputerów IBM 
PC. Nie bez znaczenia dla tej decyzji był także fakt, że Borland 
C++ i Turbo C++ bez konfliktów współpracuje z: 

* Turbo Pascal i Borland Pascal; 
* Assemblerami: TASM, BASM i MASM; 
* Turbo Debuggerem i Turbo Profilerem; 
* bibliotekami Turbo Vision, ObjectVision, Object Windows 
Library, Database Tools, itp. 
* pakietami innych producentów - np. Win/Sys Library, Object 
Professional, CA-Visual Objects, Clipper, itp. 

i in. produktami "ze stajni" Borlanda popularnymi wśród 
programistów. Programy TASM/BASM, Debugger, Profiler a także 
niektóre biblioteki (np. Object Windows Library, Turbo Vision 
Library, itp. wchodzą w skład pakietów instalacyjnych BORLANDA, 
ale UWAGA - niestety nie wszystkich). Borland C++ 4+ pozwala, 
dzięki obecności specjalnych klas VBX w bibliotece klas i 
obiektów Object Windows Library na wykorzystanie programów i 
zasobów tworzonych w środowisku Visual Basica. Podobnie 
kompilatory C++ firmy Microsoft (szczególnie Visual C++) 
bezkonfliktowo współpracują z zasobami innych aplikacji - np. 
Access, Excel, itp.. 

Warto tu zwrócić uwagę na jeszcze jeden czynnik, który może stać 
się Twoim, Czytelniku atutem. Jeśli znasz już kompilatory Turbo 
Pascal, bądź Borland Pascal, zwróć uwagę, że wiele funkcji 
zaimplementowanych w Turbo Pascal 6.0. czy 7.0 ma swoje 
odpowiedniki w BORLAND C++ i Turbo C++. Odpowiedniki te zwykle 
działają dokładnie tak samo, a różnią się najczęściej 
nieznacznie pisownią nazwy funkcji. Wynika to z błogosławieństwa 
"lenistwa" (ponoć homo sapiens najwięcej wynalazków popełniał 
właśnie ze strachu, bądź z lenistwa...). Firmie Borland "nie 
chciało się" wymyślać od nowa tego, co już sprawdziło się 
wcześniej i do czego przyzwyczaili się klienci! I odwrotnie. 
Poznawszy Borland/Turbo C++ z łatwością zauważysz te same 
funkcje w Borland/Turbo Pascalu. 

[!!!]UWAGA! 
________________________________________________________________ 

O Kompilatorach BORLAND C++ 4 i 4.5 napiszę nieco póżniej, 
ponieważ są bardziej skomplikowane i wymagają trochę większej 
znajomości zasad tworzenia i uruchamiania programów (projekty). 

To prawda, że zawierają narzędzia klasy CASE do automatycznego 
generowania aplikacji i jeszcze kilka innych ułatwień, ale miej 
trochę cierpliwości... 
________________________________________________________________ 

[???] C.A.S.E. 
________________________________________________________________ 

CASE - Computer Aided Software Engineering - inżynieria 
programowa wspomagana komputerowo. Najnowsze kompilatory C++ 
wyposażone są w narzędzia nowej generacji. W różnych wersjach 
nazywają się one AppExpert, ClassExpert, AppWizard, VBX 
Generator, itp. itd, które pozwalają w dużym stopniu 
zautomatyzować proces tworzenia aplikacji. Nie można jednak 
zaczynać kursu pilotażu od programowania autopilota - a kursu 
programowania od automatycznych generatorów aplikacji dla 
Windows... 
________________________________________________________________ 


Zaczynamy zatem od rzeczy najprostszych, mając jedynie tę 
krzepiącą świadomość, że gdy już przystąpimy do pisania 
aplikacji konkurencyjnej wobec Worda, QR-Teksta, czy Power 
Pointa - może nas wspomagać system wspomaganina CASE dołączony 
do najnowszych wersji BORLAND C++ 4 i 4.5. Jeśli mamy już gotowe 
aplikacje w Visual Basicu - Borland C++ 4+ pozwoli nam 
skorzystać z elementów tych programów (ale pracować te aplikacje 
po przetransponowaniu do C++ będą od kilku do kilkuset razy 
szybciej). 
_______________________________________________________________ 



 


DZIAŁ C&C++
...

TYP I NAZWA PLIKÓW  DO POBRANIA:
.....
...
... LEKCJA1.txt 15kB
FORMAT ARCHIWUM:
...
...

 

 

Strona poœwięcona jest technologiom programowania C++ z wykorzystaniem pakietu Visual C++, Pascal, DELPHI, C oraz technologiom tworzenia grafiki komputerowej z wykorzystaniem OpenGl i innych technik.
Wszelkie materiały zamieszczone zostały na stronie w celach dydaktycznych. Autor nie ponosi odpowiedzialnoœci za treœci materiałów oraz skutki wywołane ich wykorzystaniem.

(c) P.PARDEL 2001-2005 gg:1991389

Serwis znajduje się na serwerze www.friko.pl ..::..::..