Rozdziaª 2 Kompilowanie programów 2.1 Wst p 2.2 Kompilatory, IDE Zacznijmy od podania kilku podstawowych informacji: ˆ Program - to ci g polece«(instrukcji) do wykonania dla komputera ˆ Program to algorytm zapisany w j zyku programowania ˆ Program mo»e wyst powa w dwóch postaciach: kod ¹ródªowy - to zapis programu komputerowego w pewnym j zyku programowania, jest to posta programu zrozumiaªa dla programisty (bez konieczno±ci jego uruchamiania) kod wynikowy - to rezultat pracy translatora (kompilatora, interpretera), nadaj cy si do bezpo±redniego wykonywania przez procesor ˆ Kompilacja to proces przeksztaªcania kodu ¹ródªowego na kod wynikowy (maszynowy) ˆ Kompilator to translator j zyka wysokiego poziomu, którego programy wynikowe mog by wprowadzone do pami ci i wykonane dopiero po zako«czeniu tªumaczenia (w odró»nieniu od interpretera, w którym instrukcje wynikowe s wykonywane na bie» co) Proces tworzenia programu wykonywalnego na podstawie kodu ¹ródªowego w j zyku C przedstawia poni»szy schemat: 25
Korzystaj c z systemu Windows i Linuks, nasze programy mo»emy kompilowa za pomoc IDE (Zintegrowane ±rodowisko programistyczne (ang. Integrated Development Environment, IDE)) o nazwie Code::Blocks. IDE jest zestawem wszystkich programów, których potrzebuje programista, najcz ±ciej z interfejsem gracznym. IDE zawiera : ˆ kompilator, ˆ linker ˆ edytor ˆ debugger ( zwykle ) Dzi ki niemu otrzymujemy : Kolorowanie skªadni Automatyczne formatowanie kodu Inteligentne uzupeªnianie kodu Wsparcie dla debuggera Przegl danie kodu Mo»liwo± rozszerzenia IDE (wªasne snippety, generacj kodu) Wszystkie przykªady dost pne w skrypcie zostaªy skompilowane przy u»yciu kompilatora gcc w systemie Linux. Na zaj ciach do kompilowania programów u»ywa b dziemy kompilatora GNU C ( gcc, w systemie Linux), lub MinGW (jego odpowiednika dla systemu Windows). W praktyce program zapisany w pliku ¹ródªowym program.c kompilowa b dziemy poleceniem (korzystaj c z kompilatora GNU, gcc): gcc -o mojanazwaprogramu program.c w wyniku którego powstanie program wykonywalny w pliku mojanazwaprogramu, który mo»na nast pnie uruchomi poleceniem:./mojanazwaprogramu [parametry] (oczywi±cie parametry s opcjonalne i ich wyst powanie zale»y od wymaga«uruchamianego programu). Tak wi c, nasze pierwsze, proste programy b dziemy uruchamia za pomoc polecenia:./mojanazwaprogramu Skompilujmy przykªadowy program, a nast pnie go uruchommy: 26
27
2.3 Zatrzymanie ekranu w systemie Windows Gdy korzystamy z systemu operacyjnego Windows, po skompilowaniu i uruchomieniu programu, okno aplikacji od razu si zamyka i nie mo»emy zobaczy efektu jej dziaªania. Dzieje si tak, poniewa» program po zako«czonej pracy po prostu si zaka«cza. Aby temu zaradzi, mo»emy napisa specjaln funkcj, oczekuj c na wci±ni cie dowolnego klawisza, któr wywoªamy na ko«cu programu, tu» przed wstawieniem linijki return 0;. Jest to najlepszy, przeno±ny (dziaªaj cy zarówno w systemie Windows i Linux) sposób zatrzymania ekranu. Nie wymaga on zaª cznia dodatkowych plików nagªówkowych (które mog by domy±lnie niedost pne w systemie, jak na przykªad conio.h) oraz nie zmusza nas do korzystania z zewn trznych programów (takich jak pause, b d cym zewn trznym programem w systemie Windows, które cz sto spotykamy w programach w postaci wywoªania system("pause");). 1 #include <s t d i o. h> 2 3 void zatrzymaj_ekran ( ) 4 { 5 char c ; 6 scanf ( "%c", &c ) ; 7 } 8 9 i n t main ( i n t argc, char ** argv ) 10 { 11 zatrzymaj_ekran ( ) ; 12 13 return 0 ; 14 } 28
2.4 Korzystanie z konsoli i edytora pico Uruchamiamy konsol : 29
Za pomoc polecenia touch prog1.c tworzymy nowy, pusty plik, w którym b dziemy zapisywa tre± naszego programu: W konsoli wydajemy polecenie pico prog1.c aby uruchomi edytor tekstowy, który pozwoli nam zapisa w pliku tre± programu: 30
Plik utworzony za pomoc polecenia touch prog1.c jest pusty, widzimy to po otwarciu go przez edytor pico: Wpisujemy kod programu do pliku prog1.c 31
Za pomoc kombinacji klawiszy CTRL+O zapisujemy plik (podaj c now nazw, lub wciskaj c enter, aby zatwierdzi bie» c ): Natomiast za pomoc CTRL+X wychodzimy z edytora, wracamy z powrotem do konsoli: 32
Kompilujemy plik (tªumaczymy za pomoc kompilatora gcc program z j zyka C na j zyk zrozumiaªy przez procesor). U»ywamy polecenia: gcc prog1.c -o app1, gdzie prog1.c to nazwa pliku z kodem j zyka C (naszym programem), natomiast app1 to nazwa pliku wykonywalnego, który mo»emy uruchomi : 33
Uruchamiamy program za pomoc polecenia./app1. Program wy±wietli napis - sprawd¹my: Je±li podczas kompilacji kompilator nie wy±wietli»adnych komentarzy, informacji - jest du»a szansa na to,»eby nasz program dziaªaª :) 34
2.5 Korzystanie z konsoli i edytora mcedit Uruchamiamy konsol, tworzymy plik z rozszerzeniem.c, a nast pnie otwieramy go za pomoc mcedita: Przy pomocy klawisza F2 mo»emy zapisa zmiany wprowadzone w kodzie: 35
Za pomoc F10 mo»emy wyj± z edytora: F9 pozwala na u»ycie opcji z bardziej rozbudowanego zestawu funkcji, po których mo»emy porusza si strzaªkami i zatwierdza wybór enterem: 36
2.6 Zadania do wykonania Zadanie 1 Napisz program Pole trójk ta. Program powinien pobra z klawiatury dwie liczby b d ce dªugo±ci podstawy i wysoko±ci trójk ta, a nast pnie wydrukowa na ekranie liczb wyra»aj c pole powierzchni danego trójk ta. Program powinien by czytelny dla u»ytkownika (tzn. powinien przedstawi si oraz ka»d liczb wczytywan z klawiatury lub drukowan na ekranie poprzedzi stosownym komunikatem). Zwró uwag,»e pole nie musi by liczb caªkowit. Zadanie 2 Zmodykuj program z poprzedniego zadania tak, aby wczytywaª liczby zmiennoprzecinkowe. Zadanie 3 Zmodykuj program z poprzedniego zadania tak, aby wczytywaª liczby zmiennoprzecinkowe b d ce dªugo±ciami boków trójk ta i nadal wypisywaª pole trójk ta. Skorzystaj ze wzoru Herona. (a+b+c)(a+b c)(a b+c)( a+b+c) S = p(p a)(p b)(p c) = 4 Niech p = 1 2 (a + b + c) oznacza poªow obwodu trójk ta. Zadanie 4 Napisz program Pole kwadratu. Zadanie 5 Napisz program Zamiana cali na centymetry. Program powinien pobra od u»ytkownika jedn liczb rzeczywist oznaczaj c dªugo± wyra»on w calach (np. 1) po czym wydrukowa na ekranie podan dªugo± po zmianie jednostki dªugo±ci na centymetry (np. 2,54). Program powinien si ªadnie przedstawi tzn. wydrukowa na ekranie czytelne informacje kto i kiedy program napisaª. Ka»da drukowana na ekranie oraz wczytywana z klawiatury liczba powinna by poprzedzona odpowiednim opisem (np. PODAJ DŠUGO WYRA ON W CENTYMETRACH DL=). Zadanie 6 Napisz program Zamiana zªotówek na dolary. Program ma sªu»y do przeliczenia kwoty pieni dzy wyra»onej w zªotówkach na kwot dolarów. Bie» cy kurs dolara znajdziesz w Internecie. 1 PLN = 3.2964 USD Zadanie 7 Napisz program przeliczaj cy temperatur wyra»on w stopniach Celsjusza na temperatur wyra»on w skali Fahrenheita. t [ C] = 5/9 ( t [ F] - 32 ) t [ F] = 9/5 t [ C] + 32 Zadanie 8 Napisz program przeliczaj cy obj to± wyra»on w litrach na galony. 1 litr = 0.264172052 galona Zadanie 9 Napisz program przeliczaj cy mas wyra»ona w kilogramach na funty. 1kg = 2.20 funty Zadanie 10 Napisz program przeliczaj cy wielko± k ta wyra»on w stopniach na radiany. Zadanie 11 Napisz program Pole koªa. radiany = (π stopnie) / 180 P = π r 2 37
Zadanie 12 Napisz program Pole prostok ta. Zadanie 13 Napisz program wyznaczaj cy obj to± sto»ka. V = 1 3 S h S - pole podstawy sto»ka h - wysoko± sto»ka Zadanie 14 Napisz program wyznaczaj cy warto± funkcji kwadratowej y = 2 x 2 + 2 x 3 w zadanym punkcie. 38