On-line učionica

8. februar 2012.

Kompilacija programa u C-u

Filed under: C posle Pascal-a,Programiranje — jelena100janovic @ 3:33 pm

Ovu seriju lekcija ćemo započeti uputstvom za kompajliranje (prevođenje) Vašeg C programa. Onda ćemo formalno opisati kako C podržava dodatne biblioteke.

Pisanje, kompajliranje i pokretanje Vašeg programa

Uzećemo ovaj jednostavan primer:

/* Primer prvog programa */
#include<stdio.h>
int main()
{   printf(„Da nema ovog teksta, ekran bi bio prazan\n“);
    system(„PAUSE“);
    return 0;
}

Vaš C program prolazi kroz sledeće faze:

Pisanje programa

Napravite fajl koji sadrži ceo program, kao što je gornji primer. Možete koristiti bilo koji tekst-editor u kome umete da snimite fajl. Jedan takav primer je i Notepad, koji sigurno imate na računaru. Naravno, najlakše je kucati direktno u editor koji ide uz kompajler koji koristite.

U svakom slučaju, ime fajla se mora završavati ekstenzijom „.c“, npr. program.c ili prviprimer.c. Sadržaj mora poštovati sintaksu jezika C.

Kompilacija

Postoji mnogo kompajlera za C. Mi na našim računarima u školi imamo Borland-ov C-kompajler koji se startuje sa Start -> C u vrhu liste. Njegova prednost je u tome što se ne instalira, već prosto možete iskopirati ceo folder na svoj kućni računar. Ima i mane… Za sada nemamo verziju koja bi radila na 64bitnim operativnim sistemima, a, sudeći po reakcijama nekih učenika, i vrlo zastarelo deluje.

Takođe postoje C++ kompajleri koji „umeju“ da kompajliraju i kod u C-u. Na primer, mi koristimo DevCpp.

Postoji još mnogo C/C++ kompajlera. Svi oni suštinski rade na isti način i dele mnoge zajedničke osobine. Trudiću se da tekst ostalih lekcija ne zavisi od toga koji kompajler koristite.

Da biste kompajlirali svoj program jednostavno zadajte naredbu Compile iz odgovarajućeg menija.

Ako postoje očigledne greške u Vašem programu (u kucanju, pogrešnom pisanju ključnih reči ili nedostatak znaka ; ), kompajler će ih pronaći i prijaviti.

Moguće je, naravno, da u programu ostanu logičke greške koje kompajler ne može otkriti. Možda „govorite“ računaru da vrši pogrešne operacije.

Kada kompajler uspešno „svari“ Vaš program, kompajlirana verzija, ili izvršna, će se naći u fajlu koji ima isto ime kao izvorni program, samo sa ekstenzijom „.exe“.

Pokretanje programa

Sledeća faza je da pokrenete svoj izvršni program. Da biste to uradili, jednostavno možete double-click-nuti na fajl, kao bilo koji drugi .exe fajl na svom računaru. Takođe, možete zadati naredbu iz kompajlera Run. (za C++ kompajler postoji u istom meniju i naredba Compile and Run koja sukcesivno zadaje obe naredbe)

Ovo izvršava vaš program, dajući rezultate na ekran. U ovoj fazi mogu se pojaviti run-time greške, kao što su deljenje nulom, ili postaje očigledno da postoji greška ako program ispiše pogrešan rezultat.

Ako se to desi, morate ponovo editovati izvorni program, popraviti greške, ponovo kompajlirati i ponovo pokrenuti.

Formalni proces kompilacije programa

Pretprocesor

Učićemo o ovom delu procesa kompilacije detaljnije kasnije. Međutim, sada nam trebaju osnovne informacije za neke programe u C-u.

Pretprocesor čita Vaš izvorni kod i odgovoran je za uklanjanje komentara i interpretaciju specijalnih pretprocesorskih direktiva koje se označavaju sa #.

Na primer

  • #include – uključuje sadržaj imenovanog fajla. Npr. #include <math.h> uključuje standardnu biblioteku sa matematičkim funkcijama, #include <stdio.h> uključuje standardnu biblioteku za upravljanje ulazom i izlazom
  • #define – definiše simboličko ime ili konstantu. Npr. #define MAX 100 definiše konstantu MAX=100

Kompajler

Kompajler prevodi izvorni kod u asemblerski. Izvorni kod dobija od pretprocesora.

Asembler

Asembler pravi objektni kod. To je fajl sa ekstenzijom .obj.

Linker

Ako se u izvornom kodu pozivaju bibliotečke funkcije ili funkcije definisane u nekom drugom izvornom fajlu linker kombinuje ove funkcije (sa funkcijom main()) da bi napravio izvršni program. Pozivanje spoljnih promenljivih se takođe rešava ovde. Više o tome kasnije.

Korišćenje biblioteka

C je ekstremno mali jezik. Mnoge funkcije drugih jezika nisu uključene u C. Npr. nema funkcija za učitavanje podataka sa tastature, ispis na ekran, rad sa stringovima, ili matematičkih funkcija.

Čemu onda služi C?

C omogućava rad kroz bogatu zbirku biblioteka sa funkcijama.

Rezultat toga je što mnogi kompajleri uključuju standardne biblioteke funkcija za mnoge namene (Ulaz/izaz, …). Iz mnogih praktičnih razloga o njima razmišljamo kao da su deo C-a. Međutim one se mogu razlikovati od mašine do mašine.

Programer može takođe razviti svoje biblioteke sa funkcijama i uključiti neke druge specijalne biblioteke drugih ljudi.

Pronalaženje informacija o bibliotečkim funkcijama

U help sekciji editora možete pretraživati po funkcijama koje su Vam potrebne da biste našli u kojoj biblioteci se nalaze.

Ako ne znate ime funkcije koja Vam je potrebna, možete naći spisak svih biblioteka pod „header files“. Tu ima oko 700 opisanih funkcija. Ovaj broj ima tendenciju rasta sa svakom nadogradnjom kompajlera.

Zadaci za vežbu

1. Unesite, kompajlirajte i pokrenite sledeći program:

#include <stdio.h>
int main()

{ int i;
    printf(„\t Broj \t\t Kvadrat broja\n\n“);
    for (i=0; i<=25;++i)
        printf(„\t %d \t\t\t %d \n“,i,i*i);
    system(„PAUSE“);
    return 0;
}

2. Sledeći program koristi biblioteku math. Unesite, kompajlirajte i pokrenite ga ispravno.

#include <stdio.h>
#include <math.h>

int main()
{   int i;
    printf(„\t Broj \t\t Koren broja\n\n“);
    for (i=0; i<=36; ++i)
        printf(„\t %d \t\t\t %6.2f \n“,i, sqrt(i));
    system(„PAUSE“);
    return 0;
}

3. Pronađite kako biste izračunali sinus broja kroz biblioteke.

4. Nađite u spisku biblioteka neku koja je Vama interesantna i opišite je.

2 komentara »

  1. Није лош ни овај C/C++ IDE, можда им се више свиди: http://www.codeblocks.org/ .

    Komentar od Синиша Бубоња — 9. februar 2012. @ 7:30 pm | Odgovor


RSS feed for comments on this post. TrackBack URI

Ostavite odgovor

Popunite detalje ispod ili pritisnite na ikonicu da biste se prijavili:

WordPress.com logo

Komentarišet koristeći svoj WordPress.com nalog. Odjavite se / Promeni )

Slika na Tviteru

Komentarišet koristeći svoj Twitter nalog. Odjavite se / Promeni )

Fejsbukova fotografija

Komentarišet koristeći svoj Facebook nalog. Odjavite se / Promeni )

Google+ photo

Komentarišet koristeći svoj Google+ nalog. Odjavite se / Promeni )

Povezivanje sa %s

Create a free website or blog at WordPress.com.

%d bloggers like this: