home *** CD-ROM | disk | FTP | other *** search
- /* LEKCJA01.C
- //---------------------------------------------------------------------------
- Temat:
- Budowa, uruchomienie programu i kilka pomysêów
- //---------------------------------------------------------------------------
-
- Kolejnoÿå przygotowania programu interpretera:
- 1. tworzymy plik ½ródêowy.
- 2. przeprowadzamy preprocessing.
- 3. kompilujemy
- 4. ewentualnie odpluskwiamy
- 5. ewentualne poprawienie pliku ½ródêowego
- 6. uruchomiamy program interpretera z poziomu MegaCAD-a
- 7. mo╛na te procedury uproÿciå ?
-
- Jeÿli ten opis nie wydaje si⌐ prosty to proponuj⌐ szczegóêowe omówienie
- powy╛szych punktów.
-
- ad 1. Przy u╛yciu dowolnego edytora tekstu piszemy program w j⌐zyku C.
- Plik ½ródêowy w j⌐zyku 'C' tradycyjnie posiada rozszerzenie '*.c'.
- Oto najprostrzy plik, który dziaêa choå jeszcze nic nie robi.
- Nazwijmy go 'LENIUCH.C'.
-
- Przykêad:
- */
- //-------------------program 'LENIUCH.C', bo nic nie robi----------------
- #include "std.h"
- #include "megatyp.h"
- #include "megacad.h"
- //------------------------main-------------------------------------------
- short main(
- char *filename, // nazwa wêasna programu
- char *args ) // êaΣcuch zawierajÑcy parametry
- {
- return(0);
- }
- //------------------------koniec-----------------------------------------
- /*
- Rozkazy '#include' doêÑczajÑ pliki z koniecznymi definicjami:
-
- 'std.h' :
- Zawiera ogólne deklaracje i definicje u╛ywane w j⌐zyku 'C'.
- Funkcje operacji na plikach (fopen,...) zastÑpiono ML-funkcjami,
- co umo╛liwia (poza normalnym dziaêaniem na plikach) dost⌐p do plików
- bibliotecznych '*.mtl'.
-
- 'megatyp.h' :
- Zawiera struktury i makra typów elementów MegaCAD-a.
-
- 'megacad.h' :
- Zawiera prototypy funkcji MegaCAD-a.
-
-
- ad 2. przeprowadzamy preprocessing czyli przygotowujemy do kompilacji
- nasz plik ½ródêowy wprowadzajÑc definicj⌐ standardowych funkcji
- przy pomocy programu 'icpp.exe'.
- syntaks:
- ICPP <½ródêo> <wynik>
- przykêad:
- ICPP leniuch.c leniuch.pre
-
- Wynikiem poprawnego dziaêania jest plik w formacie ASCII.
- W przypadku bê⌐dnego zakoΣczenia pracy programu ICPP.EXE zostaje
- wysêany kod EXIT = -2. Poprawne zakoΣczenie meldowane jest kodem 0.
-
-
- ad 3. kompilujemy czyli zamieniamy na kod maszynowy czytelny dla MegaCAD-a
- przy pomocy programu 'syn.exe'
- syntaks:
- SYN <½ródêo> <wynik> [parametry]
-
- parametry:
- /Sxxxx - wielkoÿå stosu programowego - standard 5000 Bytów
- /Hminxxxx - minimalna wielkoÿå pami⌐ci (Heap), która podczas startu
- programu zostaje mu przydzielona do dyspozycji
- - standard 5000 Bytów
- /Hmaxxxxx - maksymalna wielkoÿå pami⌐ci (Heap), do której ma prowo
- odwoêywaå si⌐ programu podczas pracy
- - standard 5000 Bytów
- Rezerwacji pami⌐ci mo╛na tak╛e dokonaå w pliku ½ródêowym przez
- u╛ycie rozkazu '#pragma' (musi to byå pierwszy rozkaz programu)
- np. :
- #pragma HeapMin 10000
-
- przykêad:
- SYN leniuch.pre leniuch.cip
-
- Wynikiem poprawnego dziaêania jest plik w kodzie maszynowym zrozumiaêy
- dla interpretera w MegaCAD-zie
-
-
- ad 4. odpluskwianie
- jeÿli w programie ½ródêowym sÑ bê⌐dy to kompilacja zostanie przerwana,
- a na ekranie monitora zostanie opisany kod pierwszego znalezionego
- bê⌐du. Kody bê⌐dów sÑ pobierane z tekstowego pliku 'ERRORS.SYN'
-
- przykêad:
- w pliku 'LENIUCH.C' zamiast poprawnego rozkazu
- return(0);
- jest
- return(0;
- na ekranie pojawi si⌐ napis zawierajÑcy nazw⌐ pliku, miejsce
- wystÑpienia bê⌐du (numer linii i szpalty), numer kodu bê⌐du,
- opis tekstowy bê⌐du.
- W naszym przypadku wyglÑda to tak:
-
- leniuch.c(43/17): (1808) oczekiwany ')'
-
- ad 5. Poprawiamy plik ½ródêowy edytorem tekstu - czyli powrót do punktu 1.
-
- ad 6. Uruchamiamy nasz program z poziomu MegaCAD-a.
- W pliku 'MEGACAD.INI' znajdujÑcym si⌐ w tym samym katalogu co MegaCAD
- dopisujemy lini⌐ tekstowÑ:
- CIP:c:\megacad\cip\*.cip
- W pliku 'USERMENU.TXT' znajdujÑcym si⌐ w tym samym katalogu co MegaCAD
- dopisujemy lini⌐ tekstowÑ:
- INTERPRETER : InterP
- Po wybraniu ikony 'USER' lub menu rozwijanego 'Wêasne' wskazujemy
- klawisz 'INTERPRETER', a nast⌐pnie z wylistowanych programów wybieramy
- ten który chcemy uruchomiå.
-
-
- ad 7. Mo╛na to uproÿciå !
- Oczywiÿcie ka╛dy ma prawo wykonywaå to na swój sposób.
- Przedstawiam tu swoje prywatne rozwiÑzanie (nie roszcz⌐ praw
- autorskich), ale ch⌐tnie zapoznam si⌐ z innymi pomysêami.
-
- Pomysê 1.
- Przygotowanie plik BATCH wykonujÑcy punkt 2 i 3 w jednym kawaêku.
- Mój plik nazywa si⌐ 'PC.BAT' znajduje si⌐ on w tym samym katalogu
- co pliki ½ródêowe w j⌐zyku 'C' (C:\MEGACAD\CC\) tak on wyglÑda.
-
- @echo off
- rem
- rem PC.BAT plik pomocniczy do kompilacji aplikacji C
- rem
- rem dla Interpretera programu MegaCAD
- rem
- rem 'CAD-Projekt' Andrzej Setman
- rem
- if #%1==# goto syntaks
- if not exist %1.c goto zlanazwa
- cls
- if exist 0.pre del 0.pre > nul
- echo.
- echo.
- echo.
- echo Preprocessing pliku %1.C do pliku 0.PRE
- echo.
- icpp %1.c 0.pre
- if not exist 0.pre goto blondpre
- echo.
- echo Kompilacja 0.PRE do pliku ..\CIP\%1.CIP
- echo.
- if exist ..\cip\%1.cip del ..\cip\%1.cip > nul
- if exist ..\cip\0.cip del ..\cip\0.cip > nul
- syn 0.pre ..\cip\%1.cip %2 %3 %4 > 0.err
- del 0.pre > nul
- if %1==0 goto zero
- if exist ..\cip\%1.cip copy ..\cip\%1.cip ..\cip\0.cip > nul
- :zero
- goto koniec
- :zlanazwa
- echo.
- echo Nie istnieje plik o nazwie: "%1.C" !!!
- echo.
- goto end
- :syntaks
- echo.
- echo Plik do kompilacji aplikacji napisanych w 'C'
- echo dla Interpretera programu MegaCAD.
- echo.
- echo syntaks: PC [nazwa pliku 'C' bez kropki i rozszerzenia]
- echo.
- goto end
- :blondpre
- echo.
- echo Blad preprocesingu pliku %1.C !!!
- echo.
- :koniec
- echo.
- echo.
- echo Lista bledów kompilacji:
- echo.
- type 0.err
- :end
- echo.
- echo on
-
- Mam nadziej⌐, ╛e wszystko jest zrozumiaêe.
- Oczywiÿcie mo╛na go poprawiå i udoskonaliå, ale jest on podr⌐cznym
- narz⌐dziem uêatwiajÑcym prac⌐ - dlatego przytaczam go w oryginale.
- Pozostaje mi tylko wyjaÿniå po co tworzona jest za ka╛dym razem kopia
- skompilowanego pliku o nazwie '0.CIP'.
-
-
- Pomysê 2.
-
- Aby wystartowaå skompilowany program trzeba z poziomu MegaCAD-a
- wykonaå 6 czynnoÿci:
- - wybraå ikon⌐ USER lub Wêasne
- - wyszukaå INTERPRETER
- - wybraå INTERPRETER
- - wyszukaå skompilowany plik
- - wybraå skompilowany plik
- - wybraå klawisz OK
-
- Poniewa╛ nale╛⌐ do ludzi omylnych i testowanie, poprawianie,
- testowanie, optymalizacja, testowanie, zmienianie, testowanie itd.
- powoduje, ╛e program króry opracowuj⌐ niejednokrotnie uruchamiam
- w czasie tworzenia kilkanaÿcie, kilkadziesiÑt lub wi⌐cej razy.
- Dlatego te wymienione 6 czynnoÿci spakowaêem w jednÑ i doêÑczyêem
- do 'gorÑcego klawisza'. "Guzikiem" 'F10' startuj⌐ interpreter
- aktualnie opracowywanego programu, a wêaÿciwie jego kopi⌐ o nazwie
- '0.CIP'.
-
- Przykêad:
- W pliku 'MEGAHOT.KEY' dopisaêem (mi⌐dzy innymi) takÑ oto lini⌐
- speêniajÑcÑ powy╛sze zadanie:
-
- 324 'F10 ' : InterP C:\MegaCAD\cip\0.cip
-
- Szczególnie cz⌐sto u╛ywanym aplikacjÑ przydzieliêem te╛ klawisze
- i tak np:
-
- 389 'F11 ' : InterP C:\MegaCAD\cip\txt-3.cip
-
-
- Pomysê 3.
- Tradycyjnie przyjÑêem, ╛e wszystkie pliki (niezale╛nie z jakiego
- zakresu, tematu, systemu czy rozszerzenia) których nazwa zaczyna si⌐
- zerem ('0*.*') mo╛na kasowaå podczas sprzÑtania na dysku, bez
- pó½niejszego wyrywania wêosów z brody, po utracie jedynej wartoÿciowej
- wersji.
- OK to byê truizm, ale mo╛e zostanie mi wybaczony...
- */
-
-
-