home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC World Komputer 2001 December
/
pcwk12201b.iso
/
Reklamy
/
CAD-Projekt
/
MegaCAD-4_5
/
CC
/
LEKCJA01.C_
/
LEKCJA01.C
Wrap
Text File
|
1995-09-01
|
9KB
|
239 lines
/* 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...
*/