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 COCOM'u (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 Basic'a. 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-Tekst'a, czy Power
Point'a - 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 Basic'u - 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).
_______________________________________________________________
LEKCJA 2. Jak korzystać z kompilatora BORLAND C++?
________________________________________________________________
W trakcie tej lekcji poznasz sposoby rozwiązania typowych
problemów występujących przy uruchomieniu kompilatora Borland
C++.
________________________________________________________________
UWAGA:
Z A N I M rozpoczniesz pracę z dyskietką dołączoną do niniejszej
książki radzimy Ci SPORZĄDZIĆ ZAPASOWĄ KOPIĘ DYSKIETKI przy
pomocy rozkazu DISKCOPY, np.
DISKCOPY A: A: lub DISKCOPY B: B:
Unikniesz dzięki temu być może wielu kłopotów, których może Ci
narobić np. przypadkowy wirus lub kropelka kawy.
INSTALACJA DYSKIETKI.
Na dyskietce dołączonej do niniejszej książki, którą najlepiej
zainstalować na dysku stałym (z dyskiem pracuje się znacznie
szybciej, a prócz tego jest tam znacznie więcej miejsca), w jej
katalogu głównym znajduje się programik instalacyjny o nazwie:
INSTALUJ.BAT
napisany jako krótki plik wsadowy w języku BPL (Batch
Programming Language - język programowania wsadowego). Aby
zainstalować programy z dyskietki na własnym dysku powinieneś:
* sprawdzić, czy na dysku (C:, D:, H: lub innym) jest co
najmniej 2 MB wolnego miejsca,
* włożyć dyskietkę do napędu i wydać rozkaz:
<-- patrz tekst ksiazki
* po naciśnięciu [Entera] rozpocznie się nstalacja. O
zakończeniu instalacji zostaniesz poinformowany napisem na
ekranie.
UWAGI:
* Jeśli korzystasz z napędu dyskietek B:, lub chcesz
zainstalować programy z dyskietki na innym dysku niż C: -
wystarczy napisać rozkaz - np. B:\INSTALUJ AMC48 D: i nacisnąć
[Enter].
* Program instalacyjny zadziała poprawnie tylko wtedy, gdy masz
system operacyjny DOS 6+ (6.0 lub nowszy) na dysku C: w katalogu
C:\DOS.
* Możesz zainstalować programy z dyskietki z poziomu środowiska
Windows. W oknie Menedżera Programów:
- rozwiń menu Plik
- wybierz rozkaz Uruchom...
- do okienka wpisz <-- patrz tekst książki
Program instalacyjny utworzy na wskazanym dysku katalog
\C-BELFER
i tam skopiuje całą zawartość dyskietki oraz dokona dekompresji
(rozpakowania) plików. Jeśli chcesz skopiwać zawartość dyskietki
do własnego katalogu roboczego, wystarczy "wskazać" programowi
instalacyjnemu właściwy adres:
<-- patrz tekst książki
Zostanie utworzony katalog: F:\USERS\ADAM\TEKSTY\C-BELFER
UWAGA:
Prócz przykładów opisanych w książce dyskietka zawiera dodatkowo
kilka przykładowych aplikacji, na które zabrakło miejsca, między
innymi:
WYBORY95 - prosta gra zręcznościowa (dla Windows)
FOR*.CPP - przykłady zastosowania pętli
BGI*.CPP - przykłady grafiki DOS/BGI
oraz programik ułatwiający kurs - MEDYT.EXE wyposażony w
dodatkowe pliki tekstowe.
I. URUCHOMIENIE KOMPILATORA.
Aby uruchomić kompilator, powinieneś w linii rozkazu po
DOS'owskim znaku zachęty (zwykle C> lub C:\>) wydać polecenie:
BC
i nacisnąć [Enter].
(UWAGA: w różnych wersjach kompilatorów może to być np.:
BC, TC, a dla Windows np. BCW - sprawdź swoją wersję)
Jeśli Twój komputer odpowiedział na to:
Bad command or file name
* na Twoim komputerze nie ma kompilatora BORLAND C++:
ROZWIĄZANIE: Zainstaluj C++.
* w pliku AUTOEXEC.BAT nie ma ścieżki dostępu do katalogu, w
którym zainstalowany jest kompilator C++.
ROZWIĄZANIE:
1. Zmienić bieżący katalog (i ewentualnie dysk) na odpowiedni,
np.:
D:[Enter]
CD D:\BORLANDC\BIN[Enter]. //UWAGA: Podkatalog \BIN
Albo
2. Ustawić ścieżkę dostępu przy pomocy rozkazu np:
PATH C:\BORLANDC\BIN
(lub D:\TURBOC\BIN stosownie do rozmieszczenia plików na Twoim
komputerze; najlepiej zasięgnij rady lokalnego eksperta).
[???] NIE CHCE USTAWIĆ ŚCIEŻKI ?
________________________________________________________________
Tak czasem się zdarza - zwykle wtedy, gdy pracujesz w DOS-ie z
programem Norton Commander. Musisz pozbyć się "na chwilę"
programu NC. Naciśnij [F10] - Quit i potwierdź przez [Y] lub
[Enter]. Po ustawieniu ścieżek możesz powtórnie uruchomić NC.
________________________________________________________________
Albo
3. Dodać do pliku AUTOEXEC.BAT dodatkową ścieżkę. Jest to
wyjście najlepsze. Na końcu linii ustawiającej ścieżki - np.:
PATH C:\; C:\DOS; C:\NC; C:\WINDOWS
dodaj ścieżkę do kompilatora C++, np.:
PATH C:\; C:\DOS; C:\NC; D:\BORLANDC\BIN;
Załatwi to problem "raz na zawsze". Po uruchomieniu komputera
ścieżka będzie odtąd zawsze ustawiana automatycznie.
Ponieważ kompilator C++ wymaga w trakcie pracy otwierania i
łączenia wielu plików, różne wersje (program instalacyjny
INSTALL.EXE podaje tę informację w okienku pod koniec
instalacji) wymagają dodania do pliku konfiguracyjnego
CONFIG.SYS wiersza:
FILES = 20
(dla różnych wersji wartość ta wacha się w granicach od 20 do
50). Najbezpieczniej, jeśli nie masz pewności dodać 50. Jeśli
wybrałeś wariant trzeci i ewentualnie zmodyfikowałeś swój
CONFIG.SYS, wykonaj przeładowanie systemu [Ctrl]-[Alt]-[Del].
Teraz możesz wydać rozkaz
BC[Enter]
Mam nadzieję, że tym razem się udało i oto jesteśmy w IDE
Borland C++. Jeśli nie jesteś jedynym użytkownikiem, na ekranie
rozwinie się cała kaskada okienek roboczych. Skonsultuj z
właścicielem, które z nich można pozamykać a które pliki można
skasować lub przenieść. Pamiętaj "primo non nocere" - przede
wszystkim nie szkodzić!
€[S!] IDE = Integrated Development Environment,
IDE, czyli Zintegrowane Środowisko Uruchomieniowe. Bardziej
prozaicznie - połączony EDYTOR i KOMPILATOR. Zapewne znasz już
coś podobnego z Pascala lub Quick Basica. Od dziś będzie to
Twoje środowisko pracy, w którym będziesz pisać, uruchamiać i
modyfikować swoje programy.
€[???] DISK FULL!
________________________________________________________________
Co robić, jeśli przy próbie uruchomienia kompilator C++
odpowiedział Ci:
Disk full! Not enough swap space.
Program BC.EXE (TC.EXE) jest bardzo długi. Jeśli wydasz rozkaz
(wariant 1: Turbo C++ 1.0, niżej BORLAND C++ 3.1):
DIR TC.EXE
uzyskasz odpowiedź, jak poniżej:
C:>DIR TC.EXE
Directory of D:\TC\BIN
TC EXE 876480 05-04-90 1:00a
1 file(s) 876480 bytes
17658880 bytes free
C:>DIR BC.EXE
Directory of C:\BORLANDC\BIN
BC EXE 1410992 06-10-92 3:10a
1 file(s) 1410992 bytes
18926976 bytes free
Ponieważ plik kompilatora nie mieści się w 640 K pamięci musi
dokonywać tzw. SWAPOWANIA i tworzy na dysku dodatkowy plik
tymczasowy (ang. swap file). Na dysku roboczym powinno
pozostawać najmniej 500 KB wolnego miejsca. Jeśli możesz,
pozostaw na tym dysku wolne nie mniej niż 1 MB. Ułatwi to i
przyspieszy pracę.
________________________________________________________________
Tworzony tymczasowo plik roboczy wygląda tak:
Volume in drive D has no label
Directory of D:\SIERRA
TC000A SWP 262144 12-13-94 5:42p (13-XII to dziś!)
1 file(s) 262144 bytes
11696320 bytes free
€[!!!] UWAGA:
Kompilator C++ będzie próbował tworzyć plik tymczasowy zawsze w
bieżącym katalogu, tzn. tym, z którego wydałeś rozkaz
TC lub BC.
II. WNIOSKI PRAKTYCZNE.
* Lepiej nie uruchamiać C++ "siedząc" na dyskietce, ponieważ
może mu tam zabraknąć miejsca na plik tymczasowy.
* Dla użytkowników Novella: Uruchamiajcie kompilator C++ tylko
we własnych katalogach - do innych możecie nie mieć praw zapisu.
Plik .SWP jest tworzony tylko podczas sesji z kompilatorem C++ i
usuwany natychmiast po jej zakończeniu. Możesz go zobaczyć tylko
wychodząc "na chwilę" do systemu DOS przy pomocy rozkazu DOS
Shell (menu File).
€[S!] SWAP - Zamiana.
________________________________________________________________
Jeśli wszystkie dane, potrzebne do pracy programu nie mieszczą
się jednocześnie w pamięci operacyjnej komputera, to program -
"właściciel", (lub system operacyjny - DOS, OS2, Windows) może
dokonać tzw. SWAPOWANIA. Polega to na usunięciu z pamięci
operacyjnej i zapisaniu na dysk zbędnej w tym momencie części
danych, a na ich miejsce wpisaniu odczytanej z dysku innej
części danych, zwykle takich, które są programowi pilnie
potrzebne do pracy właśnie teraz.
________________________________________________________________
€[Z] - Propozycje zadań do samodzielnego wykonania.
----------------------------------------------------------------
1.1 Sprawdź ile bajtów ma plik .EXE w tej wersji kompilatora
C++, której używasz.
1.2. Posługując się rozkazem DOS Shell z menu File sprawdź gdzie
znajduje się i jakiej jest wielkości plik tymczasowy .SWP. Ile
masz wolnego miejsca na dysku ?
________________________________________________________________
LEKCJA 3. Główne menu i inne elementy IDE.
________________________________________________________________
W trakcie tej lekcji dowiesz się jak poruszać się w
zintegrowanym środowisku (IDE) Turbo C++.
________________________________________________________________
Najważniejszą rzeczą w środowisku IDE jest GŁÓWNE MENU (ang.
MENU BAR), czyli pasek, który widzisz w górnej części ekranu.
Działa to podobnie, jak główne menu w programie Norton Commander
(dostępne tam przez klawisz [F9]).
KRÓTKI PRZEGLĄD GŁÓWNEGO MENU.
Przyciśnij klawisz [F10].
Główne menu stało się aktywne. Teraz przy pomocy klawiszy
kursora (ze strzałkami [<-], [->]) możesz poruszać się po menu i
wybrać tę grupę poleceń, która jest Ci potrzebna. A oto nazwy
poszczególnych grup:
[S!]€GRUPY POLECEŃ - NAZWY POSZCZEGÓLNYCH "ROZWIJANYCH" MENU.
= Bez nazwy (menu systemowe).
File Operacje na plikach.
Edit Edycja plików z tekstami źródłowymi programów.
Search Przeszukiwanie.
Run Uruchomienie programu.
Compile Kompilacja programu.
Debug "Odpluskwianie", czyli wyszukiwanie błędów w
programie.
Project Tworzenie dużych, wielomodułowych programów.
Options Opcje, warianty IDE i kompilatora.
Window Okna (te na ekranie).
Help Pomoc, niestety po angielsku.
UWAGA:
__________________________________________________________
W niektórych wersjach kompilatora na pasku głównego menu pojawi
się jeszcze Browse - przeglądanie (funkcji, struktury klas i
obiektów). Zwróć uwagę, że w okienkowych wersjach niektóre
rozkazy "zmieniają" menu i trafiają do
Browse, Debug, Project.
W BC++ 4 menu Run brak (!). Tworzenie aplikacji sprowadza się
tam do następujących kroków:
Project | Open project lub | AppExpert
Debug | Run
ROZWIJAMY MENU.
Z takiego kręcenia się w kółko po pasku (a propos, czy
zauważyłeś, że pasek podświetlenia może być "przewijany w
kółko"?) jeszcze niewiele wynika. Robimy więc następny krok.
Wskaż w menu głównym nazwę "File" i naciśnij [Enter].
Rozwinęło się menu File zawierające listę rozkazów dotyczących
operacji na plikach. Po tym menu też możesz się poruszać przy
pomocy klawiszy kursora ze strzałkami górę lub w dół. Masz do
wyboru dwie grupy rozkazów rozdzielone poziomą linią:
€[S!]
______________________________________________________________
Open - Otwórz istniejący już plik z programem (np. w celu
dopisania czegoś nowego).
New - Utwórz nowy plik (zaczynamy tworzyć nowy program).
Save - Zapisz bieżący program na dysk. Pamiętaj: Pliki z
dysku nie znikają po wyłączeniu komputera. Zawsze
lepiej mieć o jedną kopię za dużo niż o jedną za mało.
oraz
Print - Wydrukuj program.
Get Info€€ - Wyświetl informacje o stanie IDE.
Dos Shell - Wyjście "na chwilę" do systemu DOS z możliwością
powrotu do IDE przez rozkaz EXIT.
Quit - Wyjście z IDE Turbo C++ i powrót do DOSa. Inaczej -
KONIEC PRACY.
_______________________________________________________________
Skoro już wiemy jak rozpocząć pracę nad nowym programem,
zacznijmy przygotowanie do uruchomienia naszego pierwszego
programu.
Wybierz z menu File rozkaz Open... (otwórz plik). Ponieważ
rozkaz taki jest niejednoznaczny, wymaga przed wykonaniem
podania dodatkowych informacji. Gdyby Twój komputer mówił,
zapytałby w tym momencie "który plik mam otworzyć?". Pytanie
zadać musi, będzie więc prowadził dialog z Tobą przy pomocy
OKIENEK DIALOGOWYCH. Jeśli wybrałeś z menu rozkaz OPEN i
nacisnąłeś [Enter], to masz właśnie na ekranie takie okienko
dialogowe. Okienko składa się z kilku charakterystycznych
elementów:
OKIENKO TEKSTOWE - (ang. Text Box lub Input Box) w którym możesz
pisać (klawisz BackSpace [<-] pozwoli Ci
skasować wprowadzony tekst, jeśli się
rozmyślisz). Okienko to zawiera tekst "*.C".
OKIENKO Z LISTĄ - (ang. List Box) zawiera listę plików, z której
możesz wybrać plik z programem.
KLAWISZE OPCJI/POLECEŃ - (ang. Command Button) kiedy już
dokonasz wyboru, to możesz wskazując
taki klawisz np. potwierdzić [OK],
zrezygnować [Cancel], otworzyć plik
[Open] itp..
Pomiędzy elementami okienka dialogowego możesz poruszać się przy
pomocy klawiszy kursora i klawisza [Tab] lub kombinacji klawiszy
[Shift]-[Tab] (spróbuj!).
Możesz także posługiwać się myszką.
Więcej o okienkach i menu dowiesz się z następnych lekcji, a na
razie wróćmy do naszego podstawowego zadania - tworzenia
pierwszego programu.
Zanim zaczniemy tworzyć program włóż do kieszeni napędu A: (lub
B:) dyskietkę dołączoną do niniejszej książki. Może ona stać się
Twoją dyskietką roboczą i pomocniczą zarazem na okres tego
kursu.
Jeżeli zainstalowałeś zawartość dyskietki na dysku - przejdź do
stosownego katalogu - C:\C-BELFER (D:\C-BELFER) i odszukaj tam
programy przykładowe. Jeśli nie - możesz nadal korzystać z
dyskietki (jest na niej trochę miejsca).
Wpisz do okienka tekstowego nazwę A:\PIERWSZY (lub odpowiednio
np. C:\C-BELFER\PIERWSZY). Rozszerzeniem możesz się nie
przejmować - zostanie nadane automatycznie. Plik roboczy z Twoim
programem zostanie utworzony na dyskietce w napędzie A:.
Wskaż klawisz [Open] w okienku dialogowym i naciśnij [Enter] na
klawiaturze.
UWAGA!
_________________________________________________________________
Dopóki manipulujesz okienkiem tekstowym i okienkiem z listą
klawisz polecenia [Open] jest wyróżniony (podświetlony) i
traktowany jako tzw. OPCJA DOMYŚLNA (ang. default). W tym
stadium aby wybrać [Open] WYSTARCZY NACISNĄĆ [Enter].
__________________________________________________________________
Wróciliśmy do IDE. zmieniło się tyle, że w nagłówku okna edytora
zamiast napisu
"NONAME00.CPP" (ang. no mame - bez nazwy)
jest teraz nazwa Twojego programu - PIERWSZY.CPP. Kursor miga w lewym
górnym rogu okna edytora. Możemy zaczynać.
Pierwsze podejście do programu zrobimy trochę "intuicyjnie".
Zamiast wyjaśniać wszystkie szczegóły posłużymy się analogią do
konstrukcji w Pascalu i Basicu (zakładam, że napisałeś już
choćby jeden program w którymś z tych języków). Szczegóły te
wyjaśnię dokładniej począwszy od następnej lekcji.
WPISUJEMY PROGRAM "PIERWSZY.CPP".
Wpisz następujący tekst programu:
/* Program przykładowy - [P-1] */
#include <stdio.h>
main()
{
printf("Autor: ..........."); /*tu wpisz imie Twoje!*/
printf(" TO JA, TWOJ PROGRAM - PIERWSZY.CPP");
printf("...achoj !!!");
}
I już. Jak widzisz nie jest to aż takie straszne. Gdyby nie to,
że zamiast znajomego PRINT"TO JA...", albo writeln(".."); jest
printf("...");, byłoby prawie całkiem zrozumiałe. Podobny
program w Pascalu mógłby wyglądać np. tak:
# include <stdio.h> uses Crt;
main() /* początek */ program AHOJ; {początek}
{ Begin
printf("Autor"); write('Autor');
printf("TO JA"); write('TO JA');
printf("ahoj"); write('ahoj');
} end.
a w BASICU:
10 PRINT "Autor" : REM Początek
20 PRINT "TO JA"
30 PRINT "ahoj"
40 END
€[!!!]UWAGA
______________________________________________________________
Zwróć uwagę, że działanie funkcji:
PRINT (Basic),
printf() (C++),
Write i Writeln (Pascal)
nie jest identyczne, a TYLKO PODOBNE.
________________________________________________________________
Sprawdzimy, czy program działa. Tam, gdzie są kropki wpisz Twoje
imię - np. Ewa, Marian, Marcin. Pamiętaj o postawieniu na końcu
znaków cudzysłowu ("), zamknięciu nawiasu i średniku (:[ na
końcu linii (wiersza).
Naciśnij kombinację klawiszy [Alt]-[R]. Jest to inny, niż
opisano poprzednio sposób dostępu do menu. Kombinacja klawiszy
[Alt]-[Litera] powoduje uaktywnienie tego menu, którego nazwa
zaczyna się na podaną literę. Przy takiej konwencji litera nie
musi być zawsze pierwszą literą nazwy opcji. Może to być także
litera wyróżniona w nazwie przez podkreślenie lub wyświetlenie
np. w innym kolorze. I tak:
[Alt]+[F] menu File (Plik)
[Alt]+[C] menu Compile (Kompilacja
[Alt]+[R] menu Run (Uruchamianie)
[Alt]+[W] menu Window (Okna)
itd., itd..
Kombinacja [Alt]+[R] wybiera więc menu Run (uruchomienie
programu). Menu Run daje Ci do wyboru następujące polecenia:
[S!]
________________________________________________________________
Run - Uruchomienie programu (Utwórz plik .EXE i Wykonaj).
Program Reset - "Wyzerowanie" zmiennych programu.
Go to Cursor - Wykonanie programu do miejsca wskazanego kursorem
w tekście.
Trace Into - Uruchom śledzenie programu.
Step Over - Śledzenie programu z możliwością pominięcia funkcji.
(dosł. tzw. "Przekraczanie" funkcji).
Arguments - Uruchom program z zadanymi argumentami.
________________________________________________________________
Wybierz "Run". Jeśli nie zrobiłeś żadnego błędu, program
powinien się skompilować z komentarzem "Success" i wykonać
(kompilacja zakończona sukcesem; napis mignie tak szybko, że
możesz tego nie zauważyć). Jeśli chcesz spokojnie obejrzeć
wyniki działania swojego programu powinieneś wykonać
następujące czynności:
1. Rozwiń menu Window naciskając klawisze [Alt]-[W].
2. Wybierz z menu rozkaz User screen (ekran użytkownika).
Możesz wykonać to samo bez rozwijania menu naciskając kombinację
klawiszy [Alt]-[F5].
3. Po przejrzeniu wydruku naciśnij [Enter]. Wrócisz do okna
edytora.
Jeśli zrobiłeś błędy - kompilacja się nie uda i program nie
zostanie wykonany, w okienku natomiast pojawi się napis "Errors"
(czyli "Błędy"). Jeśli tak się stało naciśnij [Enter]
dwukrotnie. Popraw ewentualne niezgodności i spróbuj jeszcze
raz.
Błędów zwykle bywa nie więcej niż dwa. Najczęściej jest to brak
lub przekłamanie którejś litery (w słowie main lub printf) i
brak średnika na końcu linii. W okienku komunikatów (Message)
mogą pojawić się napisy - np.:
Error: Statement missing ;
(Błąd: Zgubiony znak
€
Error Messages - Komunikaty o błędach.
________________________________________________________________
Najczęściej w komunikatach o błędach będą na początku pojawiać
się następujące słowa:
Error - błąd
Warning - ostrzeżenie
Syntax - składnia (składniowy)
Expression - wyrażenie
never used - nie użyte (nie zastosowane)
assign - przypisywać, nadawać wartość/znaczenie
value - wartość
statement - operator, operacja, wyrażenie
________________________________________________________________
€[???] Co z tym średnikiem?
________________________________________________________________
Zwróć uwagę, że po pdświetleniu komunikatu o błędzie (pasek
wyróżnienia podświetlenia możesz przesuwać po liście przy pomocy
klawiszy ze strzałkami w górę i w dół) i po naciśnięciu [Entera]
kompilator pokaże ten wiersz programu, w którym jego zdaniem
jest coś nie w porządku. Brak średnika zauważa zwykle dopiero po
przejściu do następnego wiersza (i tenże wiersz pokaże), co bywa
na początku trochę mylące.
________________________________________________________________
[???] CZEGO ON JESZCZE CHCE ?
________________________________________________________________
Nawet po usunięciu wszystkich błędów C++ nie "uspokoi się"
całkiem i będzie wyświetlał ciągle komunikat ostrzegawczy:
* w OKIENKU KOMPILACJI: (bardzo typowa sytuacja)
Errors: 0 (Błędy: 0)
Warnings: 1 (Ostrzeżenia: 1)
* W OKIENKU KOMUNIKATÓW - (Messages - tym w dolnej części
ekranu):
*WARNING A:\PIERWSZY.C 4: Function should return a value in
function main
(Uwaga: Funkcja main powinna zwrócić wartość.)
Na razie zadowolimy się spostrzeżeniem, że:
* Błędy UNIEMOŻLIWIAJĄ KOMPILACJĘ i powodują komunikat ERRORS.
* Ostrzeżenia NIE WSTRZYMUJĄ KOMPILACJI i powodują komunikat
WARNINGS.
Jaki jest sens powyższego ostrzeżenia i jak go uniknąć dowiesz
się z następnych lekcji.
________________________________________________________________
Pozostaje nam w ramach tej lekcji:
* Zapisać Twój pierwszy program na dysku i
* Wyjść z IDE C++.
JAK STĄD WYJŚĆ ?
Aby zapisać plik PIERWSZY.CPP z Twoim programem (końcową
ostateczną wersją) na dysk należy wykonać następujące czynności:
1. Naciśnij klawisz [F10].
W głównym menu pojawi się pasek wyróżnienia sygnalizując, że
menu stało się aktywne.
2. Naciśnij klawisz [F].
Pasek wyróżnienia przesunie się podświetlając menu File
(operacje na plikach). Rozwinie się menu File.
3. Naciśnij klawisz - wybierz polecenie Save (jeśli chcesz
zapisać program w bieżącym katalogu i pod bieżącą nazwą) lub
rozkaz Save As... (zapisz jako...), podaj nowy dysk/katalog i
nową nazwę pliku.
Tekst Twojego programu został zapisany na dysku/dyskietce. Teraz
możemy wyjść z C++.
Aby to zrobić, wykonaj następujące czynności:
1. Naciśnij klawisz [F10]. Uaktywni się główne menu.
2. Rozwiń menu File naciskając klawisz [F].
3. Wybierz z menu polecenie "Exit/Quit" i naciśnij [Enter].
€[!!!] SAVE szybciej.
________________________________________________________________
Zwróc uwagę, że zamiast rozwijać kolejne menu, możesz korzystać
z kombinacji klawiszy, które pozwalają Ci wydać rozkaz bez
rozwijania menu. Takie kombinacje klawiszy (ang. hot keys lub
shortcut keys) znajdziesz w menu obok rozkazu, np.:
[Alt]-[X] - Quit/Exit
[F2] - Save
[F3] - Open
[Alt]-[F5] - User screen (Podglądanie działania programu) itp.
________________________________________________________________
€[Z]
________________________________________________________________
1. Spróbuj napisać i uruchomić kilka własnych programów
wypisujących różne napisy. W swoich programach zastosuj funkcję
printf() według następującego wzoru:
printf("....tu wpisz napis do wydrukowania...");
zastosuj znaki przejścia do nowego wiersza według wzoru:
printf("...napis...\n");
porównaj działanie.
Swoim programom staraj się nadawać łatwe do rozpoznania nazwy
typu PIERWSZY, DRUGI, ADAM1, PRZYKLAD itp.
€[???] NIE CHCE DZIAŁAĆ ?
________________________________________________________________
Pamiętaj, że dla języka C i C++ (w przeciwieństwie np. do
Basica) PRINTF i printf to nie to samo! Słowa kluczowe i nazwy
standardowych funkcji
MUSZĄ BYĆ PISANE MAŁYMI LITERAMI !!!
________________________________________________________________
€[???] GDZIE MOJE PROGRAMY ?
________________________________________________________________
Bądź spokojny. Zapisz wersje źródłowe programów na dyskietkę
(dysk). Swoje programy skompilowane do wykonywalnej wersji *.EXE
znajdziesz najprawdopodobniej w katalogu głównym tego dysku, na
którym zainstalowany został C++ lub w katalogu
\BORLANDC\BIN\.... Jeśli ich tam nie ma, zachowaj zimną krew i
przeczytaj uważnie kilka następnych stron.
________________________________________________________________
€ PAMIĘTAJ:
________________________________________________________________
Jeśli masz oryginalny tekst programu, nazywany WERSJĄ ŹRÓDŁOWĄ
PROGRAMU, zawsze możesz uzyskać ten program w wersji "roboczej",
tzn. skompilować go na plik wykonywalny typu *.EXE (ang.
EXEcutable - wykonywalny).
________________________________________________________________
€[S!] printf() - PRINTing Function - Funkcja DRUKująca
________________________________________________________________
na ekranie (dokładniej - na standardowym urządzeniu wyjścia).
Odpowiednik PRINT w Basicu lub write w Pascalu. Dla ułatwienia
rozpoznawania nazw funkcji w tekście większość autorów pisząca o
języku C++ umieszcza zawsze po nazwie funkcji parę nawiasów (tak
też musi ją stosować programista w programach w C++). Ja także
będę stosować dalej tę zasadę.
________________________________________________________________
€[???] A JEŚLI NIE MA C++ ???
________________________________________________________________
W przeciwieństwie do INTERPRETERÓW (np. QBasic), które muszą być
obecne, by program zadziałał, KOMPILATORY tworzą wersje
wykonywalne programów, które mogą pracować niezależnie. W
katalogu głównym tego dysku, na którym jest zainstalowany Twój
BORLAND/Turbo C++ znajdziesz swoje programy PIERWSZY.EXE,
DRUGI.EXE itp. Aby te programy uruchomić nie musisz uruchamiać
kompilatora C++. Wystarczy:
1. Przejść na odpowiedni dysk przy pomocy polecenia:
D: (E: lub F:)
2. Przejść do odpowiedniego katalogu - np. głównego:
CD \
3. Wydać polecenie:
PIERWSZY[Enter]
________________________________________________________________
€[!!!]UWAGA:
________________________________________________________________
Jeśli nie jesteś jedynym użytkownikiem kompilatora C++ i na tym
samym komputerze pracuje jeszcze ktoś inny, sprawdź, czy inny
użytkownik nie ustawił inaczej katalogu wyjściowego (Options |
Directories | Output Directory). Katalog wyjściowy (ang. output
directory) to ten katalog, w którym C++ zapisuje pliki *.EXE po
wykonaniu kompilacji. Jeśli jesteś skazany na własne siły -
patrz - następne lekcje.
________________________________________________________________
SPECJALNE KLAWISZE, które warto poznać.
Oto skrócona tabela z najważniejszymi kombinacjami klawiszy
służącymi do "nawigacji" (czyli prościej - poruszania się) w
środowisku IDE kompilatorów BORLAND C++ i Turbo C++.
Przydatne w Borland C++ i Turbo C++ kombinacje klawiszy.
________________________________________________________________
Wybór rozkazów z menu:
Alt+F Rozwinięcie menu File (operacje na plikach)
Alt+E Rozwinięcie menu Edit (edycja tekstu programu)
Alt+S Rozwinięcie menu Search (przeszukiwanie)
Alt+R Rozwinięcie menu Run (uruchamianie programu)
Alt+C Rozwinięcie menu Compile (kompilacja)
Alt+D Rozwinięcie menu Debug (diagnostyka i błędy)
Alt+P Rozwinięcie menu Project (program wielomodułowy)
Alt+O Rozwinięcie menu Option (opcje, konfiguracja)
Alt+W Rozwinięcie menu Window (zarządzanie oknami)
Alt+H Rozwinięcie menu Help (pomoc)
Alt+B Rozwinięcie menu przeglądarki - Browse (Win)
Alt+X Wyjście z kompilatora DOS'owskiego - Exit
Alt+F4 Wyjście z kompilatora dla Windows
________________________________________________________________
Rozkazy w trybie edycji tekstu programu:
________________________________________________________________
Shift+Delete Wytnij wybrany blok tekstu (Cut) i umieść w
przechowalni (Clipboard)
Shift+Insert Wstaw blok tekstu z przechowalni (Paste)
Ctrl+Insert Skopiuj zaznaczony blok tekstu do przechowalni
(Copy)
Ctrl+Y Skasuj wiersz tekstu (Delete a line)
Ctrl+Delete Skasuj zaznaczony blok tekstu
Shift+[-->] Zaznaczanie bloku tekstu w prawo
Shift+[<--] Zaznaczanie bloku tekstu w lewo
Shift+[Down Arrow] Zaznaczanie bloku tekstu w dół (strzałka w
dół)
Shift+[Up Arrow] Zaznaczanie bloku tekstu w górę (strzałka w
górę)
Alt+Backspace Anuluj ostatnią operację (Undo)
Ctrl+L Powtórz przeszukiwanie (Repeat search)
________________________________________________________________
Rozkazy ogólnego przeznaczenia:
________________________________________________________________
F1 Wyświetl pomoc - Help screen
F2 Zapisz bieżący stan tekstu na dysk (Save)
F3 Otwórz nowy plik (Open)
F4 Uruchom i wykonaj program do pozycji wskazanej
kursorem
F5 Powiększ (maximize) bieżące aktywne okno
F6 Przejdź do następnego okna (next window)
F7 Wykonaj program krok-po-kroku
F8 Wykonaj program krok-po-kroku z pominięciem
śledzenia funkcji
F9 Skompiluj i skonsoliduj program (Compile/Make)
F10 Uaktywnij pasek głównego menu
Shift+F1 Wyświetl spis treści Help - tzw. Help index
Shift+F2 Wybierz rozkaz Arguments... z menu Run
(uruchamianie programu z parametrami w
DOS'owskim wierszu rozkazu)
Ctrl+F1 Podpowiedzi kontekstowe (help topic search)
Ctrl+F2 Wyzeruj bieżący program
Ctrl+F5 Zmień pozycję aktywnego okna
Ctrl+F7 Wyświetl okienko dialogowe "Add Watch"
Ctrl+F8 Zaznacz punkt krytyczny (Toggle breakpoint)
Ctrl+F9 Uruchom program (Run)
Ctrl+PgUp Skocz na początek pliku
Ctrl+PgDn Skocz na koniec pliku
Alt+F1 Pokaż poprzedni ekran Help
Alt+F2 Zmniejsz okno
Alt+F3 Zamknij aktywne okno
Alt+F4 Dokonaj inspekcji (inspect)
Alt+F5 Pokaż DOS'owski ekran roboczy (User screen)
Alt+F7 Przejdź do poprzedniego błędu (previous error)
Alt+F8 Przejdź do następnego błędu (next error)
________________________________________________________________
LEKCJA 4. Jeszcze o IDE C++ .
_______________________________________________________________
W trakcie tej lekcji:
1. Dowiesz się więcej o menu i okienkach w środowisku IDE.
2. Poznasz trochę technik "myszologicznych".
3. Napiszesz i uruchomisz swój drugi program.
________________________________________________________________
W dolnej części ekranu jest podobny pasek do paska menu,
niemniej ważny, choć o innym przeznaczeniu. Pasek ten jest to
tzw. WIERSZ STATUSOWY (ang. Status Line). Jak wynika z nazwy w
tym wierszu wyświetlane są informacje dotyczące bieżącego stanu
(i bieżących możliwości) środowiska IDE. Zaryzykuję tezę, że
często jeden prosty, własny eksperyment może być więcej wart niż
wiele stron opisów. Poeksperymentujmy zatem chwilę z wierszem
statusowym.
[???] NIE CHCE SIĘ URUCHOMIĆ ???
________________________________________________________________
Jeśli przy starcie kompilatora C++ nastąpi komunikat:
System Message
Disk is not ready in drive A
[Retry] [Cancel]
(Komunikat systemu C++: Dyskietka w napędzie A nie gotowa do
odczytu; Jeszcze raz? Zrezygnować?)
to znaczy, że C++ nie może odtworzyć ostatniego ekranu
roboczego, ponieważ nie udostępniłeś mu dyskietki z programami,
nad którymi ostatnio pracowałeś.
________________________________________________________________
W wierszu statusowym wyjaśnione jest działanie klawiszy
funkcyjnych F1, F2, itd. Mogą tam również pojawiać się
krótkie napisy-wyjaśnienia dotyczące np. rozkazu wyróżnionego
właśnie w menu. Powinien tam być napis:
F1 Help F2 Save F3 Load AltF9 Compile F9 Make F10 Menu
znaczy to:
[F1] - Pomoc
[F2] - Zapamiętanie bieżącego pliku na dysku pod bieżącą nazwą
(nawet jeśli tą nazwą jest NONAME01.CPP, tzn. została nadana
automatycznie i znaczy - o ironio - "BEZNAZWY01.CPP") i w
bieżącym katalogu.
[F3] - Załadowanie do okienka edycyjnego nowego pliku tekstowego
(np. nowego programu).
[Alt]-[F9] - Kompilacja w trybie "Compile".
[F9] - Kompilacja w trybie "Make" (jednoczesnej kompilacji i
konsolidacji).
[F10] - Uaktywnienie głównego menu.
JAK ZROBIĆ PORZĄDEK?
W trakcie uruchamiania kompilator korzysta z plików
zewnętrznych. C++ stara się być USER FRIENDLY (przyjazny wobec
użytkownika) i odtworzyć taki stan ekranu, w jakim ostatnio
przerwałeś pracę, co nie zawsze jednak jest korzystne. W wierszu
statusowym pojawiają się napisy informujące o tym (np:
Loading Desktop File . . .
- ładuję plik zawierający konfigurację ostatniego ekranu
roboczego...). Jeśli chcesz by na początku
sesji z C++ ekran był "dziewiczo" czysty, powinieneś:
* zmienić nazwę pliku [D:]\BORLANDC\BIN\TCDEF.DSK
na dowolną inną, np. STARY.DSK lub STARY1.DSK, stosując
polecenie systemu DOS RENAME. [D:] oznacza odpowiedni dla
Twojego komputera dysk. C++ wystartuje wtedy z czystym ekranem i
utworzy nowy plik TCDEF.DSK.
* Plików TCDEF nie należy usuwać. Kiedy nabierzesz trochę wprawy
pliki te znacznie przyspieszą i ułatwią Ci pracę z C++.
Aby zamknąć zbędne okna możesz zastosować również rozkaz Close
(ang. Close - zamknij) z menu Window (okna). Zwróć uwagę, że
polecenie Close odnosi się do bieżącego okna wyróżnionego przy
pomocy podwójnej ramki. Aby zamknąć bieżące okno, powinieneś:
1. Nacisnąć klawisze [Alt]-[W]
Rozwinie się menu Windows.
2. Wybrać z menu rozkaz Close - [C].
Może pojawić się okienko z ostrzeżeniem:
WARNING: A:\PIERWSZY.CPP not saved. Save?
(UWAGA: plik A:\PIERWSZY.CPP nie zapisany na dysku. Zapisać ?).
[???] ZNIKNĄŁ PROGRAM ???
________________________________________________________________
C++ chce Cię uchronić przed utratą programu, ale uważaj! Jeśli
odpowiesz Yes - Tak ([Y] lub [Enter]), to nowa wersja programu
zostanie nadpisana na starą!
________________________________________________________________
[!!!] ZAMYKANIE OKIEN.
________________________________________________________________
Możesz szybciej zamknąć okno naciskając kombinację klawiszy
[Alt]-[F3].
________________________________________________________________
[!!!]UWAGA
________________________________________________________________
Bądź ostrożny podejmując decyzję o zapisie wersji programu na
dysk. Okienko z ostrzeżeniem pojawi się za każdym razem przed
zamknięciem okna edycyjnego z tekstem programu. Jeśli przy
zamykaniu okna nie pojawi się ostrzeżenie, to znaczy, że program
w tej wersji, którą widzisz na ekranie został już zapisany na
dysk.
________________________________________________________________
A JEŚLI NIE CHCĘ ZAMYKAĆ OKIEN?
W porządku, nie musisz. W menu Window ([Alt]-[W]) masz do
dyspozycji rozkaz Next (następne okno). Możesz go wybrać albo
naciskając klawisz [N], albo przy pomocy klawiszy kursora. Każde
z okien na Twoim roboczym ekranie ma nazwę - nagłówek - np.
NONAME00.CPP, PIERWSZY.CPP, ale nie tylko. Pierwsze dziesięć
okien ma również swoje numery - podane blisko prawego - górnego
rogu okna w nawiasach kwadratowych - np. [1], [2] itd.
Posługując się tym rozkazem możesz przechodzić od okna do okna
nie zamykając żadnego z okien. Spróbuj!
Jest jeszcze inny sposób przejścia od okna do okna. Jeśli chcesz
przejść do okna o numerze np. [1], [2], [5] itp. powinieneś
nacisnąć kombinację klawiszy [Alt]-[1], [Alt]-[5] itp..
Niestety, tylko pierwsze 9 okien ma swoje numerki.
Możesz korzystać z listy okien (Window | List) lub klawisza
funkcyjnego [F6].
ACTIVE WINDOW - AKTYWNE OKNO.
________________________________________________________________
Na ekranie może się znajdować jednocześnie wiele okien, ale w
danym momencie tylko jedno z nich może być AKTYWNE. Aktywne
okno, to to, w którym miga kursor i w którym aktualnie
pracujesz. Aktywne okno jest dodatkowo wyróżnione podwójną
ramką.
________________________________________________________________
[???] Robi "na szaro"?
________________________________________________________________
Zwróć uwagę, że dopóki bieżącym aktywnym oknem jest okienko
komunikatów (Message - to w dolnej części ekranu), nie możesz
np. powtórzyć kompilacji programu. Rozkazy Compile | Compile i
Run | Run będą "zrobione na szaro" (ang. grayed out) - czyli
nieaktywne. Najpierw trzeba przejść do okna edycji tekstu
programu (np. poprzez kliknięcie myszką).
________________________________________________________________
Rozwiń menu Options (opcje).
Możesz to zrobić na wiele sposobów. Najszybciej chyba naciskając:
[Alt]+
Rozwinęło się menu, udostępniając następującą listę poleceń:
FULL MENUs - Pełne Menu ("s" oznacza, że chodzi o "te" menu w
liczbie mnogiej, a nie o pojedyncze menu).
COMPILER - Kompilator.
MAKE... - dosł. "ZRÓB", dotyczy tworzenia "projektów" (zwróć
uwagę na wielokropek [...]).
DIRECTORIES... - KATALOGI (znów wielokropek !).
ENVIRONMENT... - OTOCZENIE lub inaczej ŚRODOWISKO.
SAVE - ZAPAMIĘTAJ (UWAGA: To jest zupełnie inne SAVE niż
w menu File. Nie wolno mylić tych poleceń.
Pomyłka grozi utratą tekstu programu!).
Popatrz na linię statusową. Jeśli będziesz poruszać się po menu
Option, podświetlając kolejne rozkazy, w wierszu statusowym
będzie wyświetlany krótki opis działania wskazanego rozkazu. I
tak, powinieneś zobaczyć kolejno następujące napisy:
Full Menus [Off/On]- Use or don't use full set of menu commands.
(Stosuj lub nie stosuj pełnego zestawu rozkazów w menu -
domyślnie przyjmowane jest Off/Nie).
Compiler - Set compiler defaults for code generation, error
messages and names.
(Ustaw domyślne parametry pracy kompilatora dotyczące
generowania kodu programu, komunikatów o błędach i nazw).
Make... - Set condition for project-makes.
(Ustawianie warunków do tworzenia projektu).
Directories... - Set path for compile, link and executable
files.
(Wybierz katalogi i ustaw ścieżki dostępu dla kompilacji,
konsolidacji i WSKAŻ MIEJSCE - GDZIE ZAPISAĆ PLIK TYPU *.EXE po
kompilacji).
Environment... - Make environment wide settings (eg, mouse
settings).
(Ustawienie parametrów rozszerzonego otoczenia, np. parametrów
pracy myszki).
Save - Save all the settings you've made in the Options menu.
(Powoduje zapamiętanie na dysku wszystkich zmian parametrów
roboczych IDE, które ustawiłeś, korzystając z rozkazów
dostępnych za pośrednictwem menu Options.).
Ten rozkaz pozwala Ci ustawić konfigurację IDE "raz na zawsze".
Przygotujmy się do powtórzenia kompilacji programu PIERWSZY.CPP.
Jeśli masz na ekranie rozwinięte menu Options, wybierz z menu
polecenie Directories... .
KOMPILACJA ZE WSKAZANIEM ADERSU.
1. Wskaż w menu polecenie Directories i naciśnij [Enter].
Po poleceniu umieszczony jest wielokropek. Znaczy to, że rozkaz
nie zostanie wykonany, zanim komputer nie uzyska od Ciebie
pewnych dodatkowych informacji. Wiesz już, że praktycznie
oznacza to dla Ciebie konieczność "wypełnienia" okienka
dialogowego. Po wybraniu polecenia Directories ukazało się
okienko dialogowe już "wstępnie wypełnione". Takie "wstępne
wypełnienie" okienka daje Ci pewne dodatkowe informacje. Wynika
z niego mianowicie JAKIE PARAMETRY SĄ PRZYJMOWANE DOMYŚLNIE
(default).
W okienku dialogowym masz trzy okienka tekstowe:
* Include Directories (Katalog zawierający pliki nagłówkowe, np.
STDIO.H, CONIO.H, GRAPHICS.H itp. dołączane do programów).
* Library Directories (Katalog zawierający gotowe biblioteki,
zawarte w plikach typu *.LIB,).
* Output Directory (Katalog wyjściowy, w którym po kompilacji
będą umieszczane Twoje programy w wersji *.EXE).
Pierwsze dwa zostawimy w spokoju.
2. Naciśnij dwukrotnie klawisz [Tab]. Kursor wskazuje teraz
okienko tekstowe Output Directory.
3. Wpisz do okienka tekstowego Output Directory:
A:\ lub C:\C-BELFER
znaczy to, że od teraz po wykonaniu kompilacji i utworzeniu
pliku wykonywalnego typu *.EXE, plik taki zostanie zapisany we
wskazanym katalogu i na wskazanym dysku/dyskietce.
UWAGA:
________________________________________________________________
* Jeśli zainstalowałeś zawartość dyskietki na dysku i wolisz
posługiwać się własnym katalogiem roboczym - wpisz tam
odpowiednią ścieżkę dostępu - np. C:\C-BELFER. Jeśli Twój
katalog zagnieżdżony jest głębiej (np. w przypadku użytkowników
sieci Novell) - podaj pełną ścieżkę dostępu - np.:
F:\USERS\ADAM\C-BELFER
* Wszędzie, gdzie w treści książki odwołuję się do dyskietki A:
możesz konsekwentnie po zainstalowaniu stosować odpowiedni
katalog na dysku stałym, bądź na dysku sieciowym.
________________________________________________________________
4. Naciśnij [Enter].
Spróbuj teraz, znaną z poprzedniej lekcji metodą, wczytać do
okienka edytora Twój pierwszy program. Musisz wykonać
następujące czynności:
1. Włóż do napędu A: dyskietkę z programem PIERWSZY.CPP (jeśli
jeszcze jej tam nie ma).
2. Rozwiń menu File, naciskając kombinację klawiszy [Alt]-[F].
3. Wybierz z menu rozkaz Open, naciskając klawisz
Pojawi się znane Ci okienko dialogowe. Zwróć uwagę na wiersz
statusowy. Napis:
Enter directory path and file mask
znaczy:
Wpisz ścieżkę dostępu do katalogu i "wzorzec" nazwy pliku.
Użyte słowo "wzorzec" oznacza, że wolno Ci wpisać do okienka
tekstowego także nazwy wieloznaczne, zawierające znaki "*" i
"?", np.:
*.C
A:\???.C
D:\BORLANDC\SOURCE\P*.*
itp. (Spróbuj!, zawsze możesz się wycofać lub zmienić zdanie,
posługując się klawiszami [BackSpace], [Shift], [Tab] i [Esc].).
Klawisz [Tab] umożliwia Ci skok od okienka do okienka "do
przodu", a [Shift]-[Tab] - "do tyłu". Zgodnie z nazwą (ang.
ESCape - uciekać), klawisz [Esc] pozwala Ci wycofać się z
niewygodnych sytuacji - np. zamknąć okienko dialogowe lub zwinąć
rozwinięte menu bez żadnej akcji.
Jeśli wpiszesz wzorzec nazwy, to w okienku z listą zobaczysz
wszystkie pliki wybrane z podanego dysku i z podanego katalogu
według zadanego wzorca. Aby wybrać plik z listy należy klawiszem
[Tab] przejść do okienka z listą, klawiszami kursora wskazać
potrzebny plik i nacisnąć [Enter].
4. Wpisz do okienka tekstowego
A:\PIERWSZY.CPP
5. Naciśnij [Enter].
[!!!]FAST START - SZYBKI START.
________________________________________________________________
Jeśli chcesz by C++ automatycznie wczytał Twój program do
okienka edytora, to możesz zadać nazwę pliku z tekstem programu
jako parametr w wierszu polecenia, uruchamiając C++ np. tak:
BC A:\PIERWSZY.CPP
Jeśli korzystasz z programu Norton Commander, to możesz dodać do
pliku NC.EXT następujący wiersz:
C: TC !.!
cpp: bc !.!
wówczas wystarczy tylko wskazać odpowiedni plik typu *.C lub
.CPP z tekstem programu i nacisnąć [Enter].
________________________________________________________________
Kompilatory Borlanda mogą w różnych wersjach nazywać się różnie:
TC.EXE, BC.EXE, BCW.EXE (dla Windows), itp.. Sprawdź swoją
wersję kompilatora i wpisz właściwe nazwy dodając ewentualnie
ścieżki dostępu - np.:
C: D:\BORLANDC\BIN\BC !.!
CPP: WIN C:\BORLANDC\BIN\BCW !.!
[!!!]UWAGA
________________________________________________________________
Rozkazy uruchamiające kompilator mogą być złożone nawet z 4
parametrów - np.:
WIN /3 C:\BORLANDC\BIN\BCW C:\C-BELFER\PROGRAMY\P027.CPP
spowoduje:
* uruchomienie Windows w trybie rozszerzonym 386
* uruchomienie kompilatora w wersji dla Windows - BCW.EXE
* załadowanie pliku z programem - P27.CPP z wskazanego katalogu
________________________________________________________________
[P002.CPP]
Dokonaj w swoim programie następujących zmian:
________________________________________________________________
#include (stdio.h>
#include <conio>
main()
{
printf("\n");
printf("Autor: np. Antoni Kowalski\n");
printf("program: PIERWSZY.CPP \n - wersja II \n");
getch();
}
________________________________________________________________
******Uwaga: Jeśli pracujesz w Windows - Z TEGO MIEJSCA********
przy pomocy rozkazów Edit | Copy
możesz przenieść program do okna kompilatora
poprzez schowek Windows (Clipboard).
W oknie kompilatora należy:
1. Otworzyć nowe okno edytora tekstowego:
File | New
2. Wstawić plik ze schowka:
Edit | Paste
--- To okno (AM-Edit) i całego BELFRA możesz w tym czasie zredukować
--- Do ikonki.------------------------------------------------------
********************************************************************
Dzięki dodaniu do tekstu programu funkcji getch(), program nie
powinien już tak szybko mignąć na ekranie i zniknąć. Zatrzyma
się teraz i zaczeka na przyciśnięcie klawisza. Funkcja getch(),
działa podobnie do:
10 IF INKEY$="" GOTO 10
w Basicu lub Readln w Pascalu.
Nazwa pochodzi od GET CHaracter (POBIERZ ZNak, z klawiatury).
Skompiluj program PIERWSZY.CPP. Aby to zrobić, powinieneś:
1. Rozwinąć menu Compile - [Alt]-[C].
2. Wybrać z menu rozkaz Compile - [C].
Ostrzeżenie WARNING na razie ignorujemy.
Wykonaj kompilację programu powtórnie przy pomocy rozkazu Run z
menu Run. Naciśnij kolejno klawisze:
[Alt]-[R], [R]
lub
[Alt]-[R], [Enter]
Ten sam efekt uzyskasz naciskając kombinację klawiszy
[Ctrl]-[F9].
Uruchom program powtórnie naciskając kombinację klawiszy
[Alt]-[R], [R]. Zwróć uwagę, że teraz kompilacja nastąpi
znacznie szybciej. Tak naprawdę C++ stwierdzi tylko, że od
ostatniej kompilacji nie dokonano żadnych zmian w programie i
odstąpi od zbędnej kompilacji. Takie właśnie znaczenie ma
komunikat "Checking dependences" (sprawdzam zależności, który
mignie w okienku kompilacji. Po korekcie programu napisy
wyglądają znacznie przyzwoiciej, prawda? Po obejrzeniu napisów
naciśnij [Enter].
Możemy teraz wyjść z programu C++. Rozwiń menu File naciskając
klawisze [Alt]-[F] i wybierz z menu rozkaz Quit. Pojawi się
okienko z ostrzeżeniem:
WARNING: A:\PIERWSZY.CPP not saved. Save?
(UWAGA: plik A:\PIERWSZY.CPP nie zapisany na dysku. Zapisać ?).
W ten sposób C++ ZNOWU chce Cię uchronić przed utratą programu,
ale uważaj! Jeśli odpowiesz Tak ([Y] lub [Enter]), to nowa
wersja programu zostanie nadpisana na starą! Jeśli odpowiesz Nie
[N]
na dysku pozostanie stara wersja programu a nowa
zniknie.
Po wyjściu z C++ znajdziesz się w jego katalogu roboczym, lub w
tym katalogu bieżącym, z którego wydałeś rozkaz uruchomienia
kompilatora C++. Aby uruchomić swój program musisz zatem wydać