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
Text File  |  1995-09-01  |  9KB  |  239 lines

  1. /*                      LEKCJA01.C
  2. //---------------------------------------------------------------------------
  3. Temat:
  4.         Budowa, uruchomienie programu i kilka pomysêów
  5. //---------------------------------------------------------------------------
  6.  
  7.     Kolejnoÿå przygotowania programu interpretera:
  8.     1. tworzymy plik ½ródêowy. 
  9.     2. przeprowadzamy preprocessing.
  10.     3. kompilujemy 
  11.     4. ewentualnie odpluskwiamy
  12.     5. ewentualne poprawienie pliku ½ródêowego
  13.     6. uruchomiamy program interpretera z poziomu MegaCAD-a
  14.     7. mo╛na te procedury uproÿciå ?
  15.  
  16.     Jeÿli ten opis nie wydaje si⌐ prosty to proponuj⌐ szczegóêowe omówienie
  17.     powy╛szych punktów.
  18.     
  19.  ad 1. Przy u╛yciu dowolnego edytora tekstu piszemy program w j⌐zyku C. 
  20.        Plik ½ródêowy w j⌐zyku 'C' tradycyjnie posiada rozszerzenie '*.c'.
  21.        Oto najprostrzy plik, który dziaêa choå jeszcze nic nie robi.
  22.        Nazwijmy go 'LENIUCH.C'.
  23.  
  24.        Przykêad:
  25. */
  26.     //-------------------program 'LENIUCH.C', bo nic nie robi----------------
  27.     #include "std.h"
  28.     #include "megatyp.h"
  29.     #include "megacad.h"
  30.     //------------------------main-------------------------------------------
  31.     short main(
  32.             char *filename,             // nazwa wêasna programu
  33.             char *args )                // êaΣcuch zawierajÑcy parametry
  34.     {
  35.         return(0);
  36.     }
  37.     //------------------------koniec-----------------------------------------
  38. /*
  39.      Rozkazy '#include' doêÑczajÑ pliki z koniecznymi definicjami:
  40.  
  41.       'std.h' :
  42.        Zawiera ogólne deklaracje i definicje u╛ywane w j⌐zyku 'C'.
  43.        Funkcje operacji na plikach (fopen,...) zastÑpiono ML-funkcjami,
  44.        co umo╛liwia (poza normalnym dziaêaniem na plikach) dost⌐p do plików
  45.        bibliotecznych '*.mtl'.
  46.  
  47.       'megatyp.h' :
  48.        Zawiera struktury i makra typów elementów MegaCAD-a.
  49.  
  50.       'megacad.h' :
  51.        Zawiera prototypy funkcji MegaCAD-a.
  52.  
  53.  
  54.  ad 2. przeprowadzamy preprocessing czyli przygotowujemy do kompilacji 
  55.        nasz plik ½ródêowy wprowadzajÑc definicj⌐ standardowych funkcji 
  56.        przy pomocy programu 'icpp.exe'.
  57.        syntaks:
  58.                         ICPP <½ródêo> <wynik>
  59.        przykêad:
  60.                         ICPP leniuch.c leniuch.pre
  61.  
  62.        Wynikiem poprawnego dziaêania jest plik w formacie ASCII. 
  63.        W przypadku bê⌐dnego zakoΣczenia pracy programu ICPP.EXE zostaje
  64.        wysêany kod EXIT = -2. Poprawne zakoΣczenie meldowane jest kodem 0.
  65.  
  66.  
  67.  ad 3. kompilujemy czyli zamieniamy na kod maszynowy czytelny dla MegaCAD-a
  68.        przy pomocy programu 'syn.exe'
  69.        syntaks:
  70.                         SYN <½ródêo> <wynik> [parametry]
  71.  
  72.        parametry:
  73.           /Sxxxx    - wielkoÿå stosu programowego - standard 5000 Bytów
  74.           /Hminxxxx - minimalna wielkoÿå pami⌐ci (Heap), która podczas startu
  75.                       programu zostaje mu przydzielona do dyspozycji
  76.                       - standard 5000 Bytów
  77.           /Hmaxxxxx - maksymalna wielkoÿå pami⌐ci (Heap), do której ma prowo
  78.                       odwoêywaå si⌐ programu podczas pracy 
  79.                       - standard 5000 Bytów
  80.           Rezerwacji pami⌐ci mo╛na tak╛e dokonaå w pliku ½ródêowym przez 
  81.           u╛ycie rozkazu '#pragma' (musi to byå pierwszy rozkaz programu)
  82.           np. : 
  83.                 #pragma HeapMin 10000
  84.  
  85.        przykêad:
  86.                         SYN leniuch.pre leniuch.cip
  87.  
  88.        Wynikiem poprawnego dziaêania jest plik w kodzie maszynowym zrozumiaêy
  89.        dla interpretera w MegaCAD-zie
  90.  
  91.  
  92.  ad 4. odpluskwianie
  93.        jeÿli w programie ½ródêowym sÑ bê⌐dy to kompilacja zostanie przerwana,
  94.        a na ekranie monitora zostanie opisany kod pierwszego znalezionego 
  95.        bê⌐du. Kody bê⌐dów sÑ pobierane z tekstowego pliku 'ERRORS.SYN'
  96.  
  97.        przykêad:
  98.           w pliku 'LENIUCH.C' zamiast poprawnego rozkazu
  99.             return(0);
  100.           jest
  101.             return(0;
  102.           na ekranie pojawi si⌐ napis zawierajÑcy nazw⌐ pliku, miejsce 
  103.           wystÑpienia bê⌐du (numer linii i szpalty), numer kodu bê⌐du, 
  104.           opis tekstowy bê⌐du. 
  105.           W naszym przypadku wyglÑda to tak: 
  106.           
  107.             leniuch.c(43/17): (1808) oczekiwany ')'
  108.  
  109.  ad 5. Poprawiamy plik ½ródêowy edytorem tekstu - czyli powrót do punktu 1.
  110.  
  111.  ad 6. Uruchamiamy nasz program z poziomu MegaCAD-a.
  112.        W pliku 'MEGACAD.INI' znajdujÑcym si⌐ w tym samym katalogu co MegaCAD
  113.        dopisujemy lini⌐ tekstowÑ:
  114.        CIP:c:\megacad\cip\*.cip
  115.        W pliku 'USERMENU.TXT' znajdujÑcym si⌐ w tym samym katalogu co MegaCAD
  116.        dopisujemy lini⌐ tekstowÑ:
  117.        INTERPRETER : InterP
  118.        Po wybraniu ikony 'USER' lub menu rozwijanego 'Wêasne' wskazujemy
  119.        klawisz 'INTERPRETER', a nast⌐pnie z wylistowanych programów wybieramy
  120.        ten który chcemy uruchomiå.
  121.  
  122.  
  123.  ad 7. Mo╛na to uproÿciå !
  124.        Oczywiÿcie ka╛dy ma prawo wykonywaå to na swój sposób. 
  125.        Przedstawiam tu swoje prywatne rozwiÑzanie (nie roszcz⌐ praw 
  126.        autorskich), ale ch⌐tnie zapoznam si⌐ z innymi pomysêami.
  127.  
  128.      Pomysê 1.
  129.        Przygotowanie plik BATCH wykonujÑcy punkt 2 i 3 w jednym kawaêku.
  130.        Mój plik nazywa si⌐ 'PC.BAT' znajduje si⌐ on w tym samym katalogu
  131.        co pliki ½ródêowe w j⌐zyku 'C' (C:\MEGACAD\CC\) tak on wyglÑda.
  132.  
  133. @echo off
  134. rem
  135. rem      PC.BAT plik pomocniczy do kompilacji aplikacji C 
  136. rem
  137. rem      dla Interpretera programu MegaCAD
  138. rem
  139. rem                                            'CAD-Projekt' Andrzej Setman
  140. rem
  141. if #%1==# goto syntaks
  142. if not exist %1.c goto zlanazwa
  143. cls
  144. if exist 0.pre del 0.pre > nul
  145. echo.
  146. echo.
  147. echo.
  148. echo           Preprocessing pliku  %1.C  do pliku  0.PRE 
  149. echo.
  150. icpp %1.c 0.pre
  151. if not exist 0.pre goto blondpre
  152. echo.
  153. echo           Kompilacja   0.PRE   do pliku  ..\CIP\%1.CIP
  154. echo.
  155. if exist ..\cip\%1.cip del ..\cip\%1.cip > nul
  156. if exist ..\cip\0.cip del ..\cip\0.cip > nul
  157. syn 0.pre ..\cip\%1.cip %2 %3 %4 > 0.err
  158. del 0.pre > nul
  159. if %1==0 goto zero
  160. if exist ..\cip\%1.cip copy ..\cip\%1.cip ..\cip\0.cip > nul
  161. :zero
  162. goto koniec
  163. :zlanazwa
  164. echo.
  165. echo        Nie istnieje plik o nazwie: "%1.C"  !!!
  166. echo.                     
  167. goto end
  168. :syntaks
  169. echo.
  170. echo        Plik do kompilacji aplikacji napisanych w 'C'
  171. echo            dla Interpretera programu MegaCAD.           
  172. echo.
  173. echo    syntaks:   PC [nazwa pliku 'C' bez kropki i rozszerzenia]
  174. echo.                     
  175. goto end
  176. :blondpre
  177. echo.
  178. echo  Blad preprocesingu pliku  %1.C  !!!
  179. echo.
  180. :koniec
  181. echo.
  182. echo.
  183. echo  Lista bledów kompilacji:
  184. echo.
  185. type 0.err
  186. :end 
  187. echo.
  188. echo on
  189.  
  190.        Mam nadziej⌐, ╛e wszystko jest zrozumiaêe.  
  191.        Oczywiÿcie mo╛na go poprawiå i udoskonaliå, ale jest on podr⌐cznym 
  192.        narz⌐dziem uêatwiajÑcym prac⌐ - dlatego przytaczam go w oryginale.
  193.        Pozostaje mi tylko wyjaÿniå po co tworzona jest za ka╛dym razem kopia
  194.        skompilowanego pliku o nazwie '0.CIP'.
  195.  
  196.  
  197.     Pomysê 2.
  198.        
  199.        Aby wystartowaå skompilowany program trzeba z poziomu MegaCAD-a
  200.        wykonaå 6 czynnoÿci:
  201.           - wybraå ikon⌐ USER lub Wêasne
  202.           - wyszukaå INTERPRETER
  203.           - wybraå INTERPRETER
  204.           - wyszukaå skompilowany plik
  205.           - wybraå skompilowany plik
  206.           - wybraå klawisz OK
  207.  
  208.        Poniewa╛ nale╛⌐ do ludzi omylnych i testowanie, poprawianie, 
  209.        testowanie, optymalizacja, testowanie, zmienianie, testowanie itd.
  210.        powoduje, ╛e program króry opracowuj⌐ niejednokrotnie uruchamiam
  211.        w czasie tworzenia kilkanaÿcie, kilkadziesiÑt lub wi⌐cej razy.
  212.        Dlatego te wymienione 6 czynnoÿci spakowaêem w jednÑ i doêÑczyêem
  213.        do 'gorÑcego klawisza'. "Guzikiem" 'F10' startuj⌐ interpreter 
  214.        aktualnie opracowywanego programu, a wêaÿciwie jego kopi⌐ o nazwie
  215.        '0.CIP'. 
  216.  
  217.      Przykêad:
  218.        W pliku 'MEGAHOT.KEY' dopisaêem (mi⌐dzy innymi) takÑ oto lini⌐ 
  219.        speêniajÑcÑ powy╛sze zadanie:
  220.  
  221. 324 'F10  ' : InterP C:\MegaCAD\cip\0.cip
  222.  
  223.        Szczególnie cz⌐sto u╛ywanym aplikacjÑ przydzieliêem te╛ klawisze
  224.        i tak np:
  225.  
  226. 389 'F11  ' : InterP C:\MegaCAD\cip\txt-3.cip
  227.  
  228.  
  229.      Pomysê 3.
  230.        Tradycyjnie przyjÑêem, ╛e wszystkie pliki (niezale╛nie z jakiego
  231.        zakresu, tematu, systemu czy rozszerzenia) których nazwa zaczyna si⌐
  232.        zerem ('0*.*') mo╛na kasowaå podczas sprzÑtania na dysku, bez 
  233.        pó½niejszego wyrywania wêosów z brody, po utracie jedynej wartoÿciowej
  234.        wersji. 
  235.        OK to byê truizm, ale mo╛e zostanie mi wybaczony...
  236. */
  237.  
  238.  
  239.