Microsoft PowerPoint - Programski_Jezik_C_Organizacija_Izvornog_Programa_I_Greske [Compatibility Mode]

Слични документи
Microsoft PowerPoint - Programski_Jezik_C_Organizacija_Izvrsnog_Programa [Compatibility Mode]

Funkcije predavač: Nadežda Jakšić

Razvoj programa, Code::Blocks, struktura programa, printf, scanf, konverzioni karakteri predavač: Nadežda Jakšić

P1.3 Projektovanje makroasemblera

Microsoft PowerPoint - Datoteke [Compatibility Mode]

Funkcije predavač: Nadežda Jakšić

Programski jezik C

PowerPoint Presentation

Uvod u računarstvo 2+2

Programski jezik C

Microsoft PowerPoint - 13-Funkcije_2.ppt [Compatibility Mode]

Uvod u računarstvo 2+2

Programiranje za UNIX Okruženje unix procesa

Uvod u računarstvo 2+2

P11.2 Izbor instrukcija, IBURG

Računarski praktikum I - Vježbe 01 - Uvod

Logicko projektovanje racunarskih sistema I

PROMENLJIVE, TIPOVI PROMENLJIVIH

Računarski praktikum I - Vježbe 03 - Implementacija strukture string

P1.2 Projektovanje asemblera

Programski jezici i strukture podataka

Microsoft Word - 11 Pokazivaci

Slide 1

RAČUNARSKI SISTEM Ne postoji jedinstvena definicija pojma računarski sistem. Računarski sistem predstavlja skup mašina i pridruženih metoda (realizova

P11.3 Analiza zivotnog veka, Graf smetnji

Računarski softver Da bi računarski sistem mogao da radi, pored hardvera mora biti opremljen i odgovarajućim programima koji će njime upravljati.ova k

Uvod u računarstvo 2+2

Microsoft PowerPoint - MR - Vjezbe - 03.ppt [Compatibility Mode]

Grananje u programu predavač: Nadežda Jakšić

07_PJISP_II_Predavanja

Microsoft PowerPoint - OOPpredavanja05 [Compatibility Mode]

P9.1 Dodela resursa, Bojenje grafa

070-ALIP2-udzbenik.indb

3.Kontrlne (upravlja~ke) strukture u Javi

Programiranje 1 5. predavanje dodatak Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2018, 5. predavanj

Konverzije, operatori, matematičke funkcije predavač: Nadežda Jakšić

Programiranje 2 0. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog2 2019, 0. predavanje p. 1/4

Programiranje II Beleške sa vežbi Smer Informatika Matematički fakultet, Beograd Sana Stojanović 1

P1.0 Uvod

Microsoft PowerPoint - 03-Slozenost [Compatibility Mode]

Programiranje u C-u ili C++-u Pseudo-slučajni brojevi; Dinamička alokacija memorije 1 ZADACI SA ČASA Zadatak 1 Napraviti funkciju koja generišlučajan

Tutoring System for Distance Learning of Java Programming Language

Datoteke predavač: Nadežda Jakšić

Generated by Foxit PDF Creator Foxit Software For evaluation only. Operativni sistem U računarstvu, operativni sistem (OS

12 Stanje

Osnovni programiranja I

I grupa 1. Napisati program koji izračunava i ispisuje zbir 4 najveća od pet brojeva unetih sa standardnog ulaza. ulaz izlaz Analiza: 1.

Microsoft PowerPoint - 12-Funkcije_1.ppt [Compatibility Mode]

Računarski praktikum I - Vježbe 07 - Podstrukture, const, reference

Classroom Expectations

Писање и превођење модула

Sveucilište u Zagrebu

Microsoft PowerPoint - PRI2014 KORIGOVANO [Compatibility Mode]

Microsoft PowerPoint - Bitovi [Compatibility Mode]

Tutoring System for Distance Learning of Java Programming Language

Microsoft PowerPoint - 07-DinamickeStrukturePodataka

PowerPoint Presentation

Microsoft PowerPoint - Topic02 - Serbian.ppt

Microsoft PowerPoint - Topic02 - Serbian.ppt

VEŽBA 5: KLASE I OBJEKTI U C# Cilj ove vežbe je upoznavanje sa osnovama rada sa klasama i objektima u programskom jeziku C#. Pored toga, bide demonstr

Programiranje 1 Beleške sa vežbi Školska 2007/2008 godina Matematički fakultet, Beograd Jelena Tomašević December 5, 2007

Strukture predavač: Nadežda Jakšić

P2.1 Formalne gramatike

Algoritmi i arhitekture DSP I

PowerPoint Presentation

RACUNARSKA ELEKTRONIKA – VEŽBE 3

Inženjering informacionih sistema

Microsoft PowerPoint - 10-Jednodimenzionalni nizovi.ppt [Compatibility Mode]

Microsoft PowerPoint - 11.Programski_Jezik_C_ulaz-izlaz [Compatibility Mode]

Microsoft PowerPoint - 13 PIK (Mentor Graphic ASIC).ppt

PowerPoint Presentation

Microsoft PowerPoint - LB7-2_WCCF_2010.ppt

Класе комбинација презентације (Хортона) и к о бајаги скрипте (Ово је прича коју врло радо причам) нови тип података: дефинишу могуће вредности подата

ELEKTROTEHNIČKI FAKULTET, UNIVERZITET U BEOGRADU KATEDRA ZA ELEKTRONIKU UVOD U ELEKTRONIKU - 13E041UE LABORATORIJSKA VEŽBA Primena mikrokontrolera

Programiranje 2 popravni kolokvij, 15. lipnja Ime i prezime: JMBAG: Upute: Na kolokviju je dozvoljeno koristiti samo pribor za pisanje i brisanj

Oblikovanje i analiza algoritama 5. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb OAA 2017, 5. pr

Objektno orjentirano programiranje

Univerzitet u Novom Sadu Tehnički fakultet Mihajlo Pupin Zrenjanin Seminarski rad Predmet: Konkuretno programiranje doc. dr Dejan Lacmanovic Zorica Br

Pojačavači

OPIS RAČUNARSKOG SISTEMA Računarski sistem se sastoji od procesora, operativne memorije, tajmera i terminala. Sve komponente računarskog sistema su me

Programiranje predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog2 2019, 12. predavanje p. 1

MIP-heuristike (Matheuristike) Hibridi izmedu metaheurističkih i egzaktnih metoda Tatjana Davidović Matematički institut SANU

Slide 1

Podela ra~unarskih sredtava

PowerPoint Presentation

Рачунарска интелигенција

Увод у организацију и архитектуру рачунара 1

Računarski praktikum I - Vježbe 11 - Funktori

Zbirka resenih zadataka iz arhitekture racunara

RAČUNALO

Microsoft PowerPoint - LB7-2_WCCF_2012.ppt

PowerPoint Presentation

Apache Maven Bojan Tomić

PROGRAMIRANJE Program je niz naredbi razumljivih računalu koje rješavaju neki problem. Algoritam je postupak raščlanjivanja problema na jednostavnije

P2.1 Projektovanje paralelnih algoritama 1

Microsoft Word - CAD sistemi

PowerPoint Presentation

PowerPoint Presentation

Osnove inženjerske informatike II. Uvod u programiranje Vaš prvi program K. F. & V. B.

Microsoft PowerPoint - C-4-1

Транскрипт:

Programski jezik C organizacija izvornog programa

Prevođenje Pisanje programa izvorni program Prevođenje programa izvršni program Izvršavanje programa rezultat Faze prevođenja Pretprocesiranje Kompilacija Povezivanje Greške 2

Pretprocesiranje Pripremna faza kompilacije Omogućava da se izvorni kod pogodno organizuje u više ulaznih datoteka Pretprocesor formira i prosleđuje kompilatoru jedinice prevođenja Na primer, u program.c uključuje se datoteka zaglavlja stdio.h Rezultat pretprocesora, na primer: gcc E program.c 3

Pretprocesiranje Pretprocesor ne koristi znanje o C jeziku Analizira samo pretprocesorske direktive Najčešće korišćene direktive su #include i #define #include uključuje sadržaj druge datoteke #define zamenjuje neki tekst, makro, drugim tekstom Makro može da sadrži i argumente Direktiva uslovnog prevođenja Određeni deo programa se prevodi samo ako su ispunjeni određeni uslovi 4

include U datoteku koja se prevodi uključuje sadržaj druge datoteke: #include ime_datoteke ili #include <ime_datoteke> U prvom slučaju, datoteka koja se uključuje traži se u okviru direktorijuma u kojem se nalazi datoteka u koju se vrši uključivanje (kao i u posebnom skupu direktorijuma include path) U drugom slučaju, datoteka se traži u sistemskom include direktorijumu u kojem se nalaze standardne datoteke zaglavlja Njegova lokacija zavisi od sistema i od C prevodioca koji se koristi 5

define Omogućava zamenu jednog teksta (niza karaktera, makroa) drugim tekstom (nizom karaktera), pre samog prevođenja #define originalni_tekst novi_tekst Originalni_tekst se zove i simboličko ime U najjednostavnijem obliku, ova direktiva koristi se za zadavanje vrednosti nekom simboličkom imenu, na primer: #define MAX_LEN 80 6

define Simboličko ime se lako menja Razlikuje se od konstantne promenljive (const) Ne rezerviše se prostor tokom izvršavanja programa već se svako pojavljivanje zamenjuje zadatim novim tekstom (vrednošću) PRE prevođenja 7

define Zamene se ne vrše u konstantnim stringovima niti u okviru drugih simboličkih imena Na primer, #define MAX_LEN 80 ne utiče na naredbu printf( "MAX_LEN is 80"); niti na simboličko ime MAX_LEN_VAL 8

define Moguće je definisati i pravila zamene sa argumentima od kojih zavisi tekst zamene Na primer, sledeća definicija #define max(a,b) ((A)>(B)? (A) : (B)) definiše tekst zamene za max(a, B) koji zavisi od argumenata Tekst max(x+2, 3*y) biće zamenjen tekstom ((x+2)>(3*y)? (x+2) : (3*y)) 9

define Tekst max(2, 3) ne predstavlja poziv funkcije i nema nikakvog prenosa argumenata kao kod pozivanja funkcija Šta se dešava za max(a++, b++)? 10

define Tekst max(2, 3) ne predstavlja poziv funkcije i nema nikakvog prenosa argumenata kao kod pozivanja funkcija Šta se dešava za max(a++, b++)? ((a++)>(b++)? (a++) : (b++)) 11

define Zagrađivanje je veoma važno zbog prioriteta operacija Na primer, makro #define kvadrat(x) x*x kvadrat(a+2) #define kvadrat(x) (x)*(x) a/kvadrat(b) #define kvadrat(x) ((x)*(x)) 12

Kompilacija leksička analiza: izdvajanje leksema, osnovnih jezičkih elemenata; sintaksička analiza: kreiranje sintaksnog stabla; semantička analiza: provera semantike ili kontekst-osetljiva analiza (npr. provera tipova, deklarisanje pre korišćenja); generisanje međukoda: generisanje koda na jeziku interne reprezentacije; optimizacija međukoda: optimizovanje generisanog koda; generisanje koda na mašinskom jeziku: prevođenje optimizovanog koda u objektne module 13

Kompilacija Kompilacijom se od svake jedinice prevođenja gradi zasebni objektni modul (engl. object module) Objektni moduli sadrže programe na mašinskom jeziku i podatke (memorijski prostor rezervisan za promenljive) Objektni moduli još ne mogu da se izvršavaju (iako su u mašinskom obliku) 14

Povezivanje Povezivanje je proces kreiranja jedinstvene izvršne datoteke od jednog ili više objektnih modula Moduli su nastali kompilacijom izvornog koda programa ili sadrže mašinski kod i podatke standardne biblioteke ili neke nestandardne biblioteke Statičko povezivanje: posle kompilacije Dinamičko povezivanje: tokom izvršavanja programa (u stvari na početku) Opcijama kompilatora moguće je izvršiti samo kompilaciju (-C) ili sačuvati rezultat svih faza prevođenja: $ gcc -save-temps main.c $ ls a.out main.c main.i main.o main.s 15

Punilac Posle uspešnog prevođenja program može da se izvršava Izvršni programi smešteni su u datotekama na disku i pre pokretanja učitavaju se u glavnu memoriju Za ovo je zadužen program koji se naziva punilac (engl. loader) koji je obično integrisan u operativni sistem Proverava da li korisnik ima pravo da izvrši program, prenese program u glavnu memoriju, prekopira argumente komandne linije u odgovarajući deo memorije inicijalizuje određene registre u procesoru i na kraju da pozove početnu funkciju programa 16

Greške u fazi pretprocesiranja #Include<stdio.h> int main() { int a = 9; if (a == 9) printf("9"); return 0; } primer.c:1:2: error: invalid preprocessing directive #Include 17

Greške kompilacija leksička analiza #include<stdio.h> int main() { int a = 09; if (a == 9) printf("9"); return 0; } error: invalid digit "9" in octal constant 18

Greške kompilacija sintaksna analiza #include<stdio.h> int main() { int a = 9; if a == 9 printf("9"); return 0; } error: expected ( before a 19

Greške kompilacija semantička analiza #include<stdio.h> int main() { int a = 9; if ("a" * 9) printf("9"); return 0; } error: invalid operands to binary * (have char * and int ) 20

Greške kompilacija semantička analiza #include<stdio.h> int main() { int a = 9; if ("a" * 9) printf("9"); return 0; } error: invalid operands to binary * (have char * and int ) 21

Greške povezivanje #include<stdio.h> int main() { int a = 9; if (a == 9) print("9"); return 0; } undefined reference to print collect2: ld returned 1 exit status 22

Upozorenja - primer #include<stdio.h> int main() { } int a = 9; if (a = 9) return 0; printf("9"); warning: suggest parentheses around assignment used as truth value 23

Upozorenja - primer #include<stdio.h> int main() { int a = 9; if (a / 0) printf("9"); return 0; } warning: division by zero 24

Upozorenja - primer #include<stdio.h> int main() { int a = 9; if (9 == 9) printf("9"); return 0; } warning: unused variable a 25

Greške pri izvršavanju programa Prekid izvršavanja programa Nesmetano izvršavanje programa Korektnost Dokazivanje Testiranje Alati za testiranje Debageri 26