Programiranje 1 Uvod u programski jezik c

Slides:



Advertisements
Presentazioni simili
Corso di Fondamenti di Programmazione canale E-O
Advertisements

1 Automazione dellalgoritmo ricorsivo di permutazione eseguita da Mariano Melchiorri.
Uso avanzato di C.
Nel C non esiste un dato primario di tipo stringa; queste sono rappresentate con un array monodimensionale di caratteri (tipo char). Così per definire.
Introduzione al linguaggio C
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità F2 Selezione.
Introduzione al linguaggio C
La ricorsione Simulazione. Il Main /* Programma che usa una funzione ricorsiva*/ #include #define MAX_N 8 main() int valore, dato; printf(Introduci n:
ESERCITAZIONE N. 5 ESERCIZIO N. 1 Autore: Biagio Brattoli S I Corso.
INFORMATICA Strutture iterative
APPUNTI SUL LINGUAGGIO C
Strutture di controllo nel C
Politecnico di Milano Esercizi Preparazione alla prima prova intermedia.
Dichiarazioni e tipi predefiniti nel linguaggio C
Il Linguaggio C.
In molti casi è utile assegnare a degli identificatori dei valori che restino costanti durante tutto il programma e che non possano essere cambiati nemmeno.
void binario(int n); …………………
Università degli Studi di BresciaA.A. 2012/2013 Fondamenti di Programmazione Docente: Alessandro SaettiA.A. 2012/2013 Università degli Studi di Brescia.
1 Numeri interi e numeri in virgola mobile F. Bombi 2 6 novembre 2003.
Corso di Programmazione Grafica e Laboratorio Daniele Marini
ALGORITMI Un algoritmo è un insieme di istruzioni: -ordinate -non ambigue -effettivamente computabili.
#include void main() { int a,b,c,; float s, x,x1,x2,delta,alfa,beta; int num[3]; int i; printf("La forma classica dell'equazione di 2° grado è: a*x^2+b*x+c=0\n.
Linguaggio C: Le basi Stefano Cagnoni e Monica Mordonini
Linguaggio C: Le basi Stefano Cagnoni e Monica Mordonini
I numeri cardinali da 0 a 20 0 = zero 1 = uno 2 = due 3 = tre 4 = quattro 5 = cinque 6 = sei 7 = sette 8 = otto 9 = nove 10 = dieci 11 = undici 12 = dodici.
I pronomi diretti oggetto. i pronomi personali diretti zamjenjuju imenicu Odgovaraju na pitanje: chi? che cosa? Oggi compro il giornale Oggi compro il.
ITALIANO Lezione prima Benvenuti! ☻ ottobre, 2o14 Moodle.f.bg.ac.rs Strani jezici Italijanski jezik 1.
SALUTI Salve! Ciao! Buongiorno! Buonasera! Buonanotte! ArrivederLa!
Financiranje udruga/Finanziamento delle associazioni Novine u zakonodavstvu Novità legislative.
Un semplice programma C /* Programma che stampa un saluto */ #include main() { printf(“Hello World!\n”); }
ITALIANO Lezione prima
Financiranje udruga/Finanziamento delle associazioni
Mesolitico. Neolitico. Ana Knežević.
Introduzione al linguaggio C
Mesolitico. Neolitico. Ana Knežević.
ITALIANO Lezione prima
CICLO DO – WHILE LINGUAGGIO C.
Lezione 8 – A.A. 2016/2017 Prof. Giovanni Acampora
Lezione 9 – A.A. 2016/2017 Prof. Giovanni Acampora
KATOLIČKI SVEĆENIK Kreiran od :
TALIJANSKI SUSTAV NAKNADE NEIMOVINSKE ŠTETE
Kako programirati u jeziku C ?
Tipo Carattere Finora abbiamo lavorato con valori numerici.
Točka  Točka je oblik bez i jedne naglašene dimenzije: niti visine, niti širine, ni dužine.
a cura dei prof. Roberto Orsaria e Monica Secco
Italijanski jezik 1 prof. Bojana Prodanović Đorđević 26.mart 2018
VRHOVNO ZAPOVJEDNIŠTVO LUČKIH KAPETANIJA
Sigurnost koja se plaća nihilizmom vlastite osobnosti.
2. Samo ću danas posvetiti posebnu brigu svom ponašanju
Italijanski jezik 2 prof. Bojana Prodanović Đorđević 19.mart 2018
Programiranje 1 Uvod u programski jezik c
Programmazione e Laboratorio di Programmazione
PRISPODOBA O DOBROM PASTIRU I IZGUBLJENOJ OVCI
© 2007 SEI-Società Editrice Internazionale, Apogeo
Programmazione e Laboratorio di Programmazione
Antun Gustav Matoš ( ) - hrvatski književnik, pjesnik, putopisac, kritičar...
Trube “u raj” iz Rekvijema, dozivaju konačni susret s Bogom
Primjena članka 5 Direktive
Svetkovina presvetog Tijela i Krvi Kristove
Riječ života Prosinac 2009.
Riječ života Studeni 2009.
APPUNTI SUL LINGUAGGIO C
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
R O B.
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
PRISPODOBA O DOBROM PASTIRU I IZGUBLJENOJ OVCI
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Transcript della presentazione:

Programiranje 1 Uvod u programski jezik c Staša Vujičić v2

Algoritmi

Formiranje algoritma Konstruisati efikasan algoritam znači dati skup preciznih uputstava kako doći do rešenja zadatog problema Algoritmi se mogu opisivati: pseudo jezikom prirodnim jezikom dijagramom toka. 3

OPIS ALGORITAMA PRIRODNIM JEZIKOM Opisati prirodnim jezikom detaljno, precizno i nedvosmisleno korake pri rešavanju problema, vodeći računa o redosledu operacija koje se izvršavaju. 4

OPIS ALGORITAMA PSEUDO JEZIKOM Pseudo jezik je neformalna kombinacija prirodnog jezika i nekog programskoj jezika. Pri upotrebi pseudo jezika mora se voditi računa da se jezičke konstrukcije koriste uvek na isti način i da budu praćene objašnjenjima (ako je potebno). 5

OPISIVANJE ALGORITAMA dijagramom toka Za ovaj oblik opisa koriste se grafički simboli čiji je opis propisan ISO standardom. Tekst koji opisuje obradu se zapisuje unutar grafičkih simbola. Tok rada algoritma se opisuje linijama koje povezuju grafičke simbole koji reprezentuju obradu. 6

Primer dijagrama toka

Programski jezik C

Leksičke konvencije U upotrebi su velika i mala slova, cifre i specijalni simboli iz ASCII skupa Programski jezik C razlikuje velika i mala slova! Komentari se navode između sekvenci /* i */. Mogu se prostirati u više linija. Ne mogu biti ugnježdeni. int x, X; /*To su dve razlicite promenljive!!!*/ Zasnovano na primerima sa sajtova: http://www.matf.bg.ac.yu/~milan http://www.matf.bg.ac.yu/~jtomasevic

TOKENI Postoji šest vrsta tokena: identifikatori ključne reči operatori separatori stringovi i konstante. Tokeni se razdvajaju belinama, tabulatorima i novim redovima.

Identifikatori Identifikatori se sastoje iz slova, cifara i znaka _ pri čemu prvi karakter nije cifra. Koriste se za imena promenljivih, tipova, funkcija, itd.

ključne reči Ključne reči su rezervisane reči koje imaju posebnu ulogu, i ne mogu se koristiti kao identifikatori. Ključne reči se koriste za: definisanje jezičkih konstrukcija (if, while, for), imena tipova (int, float, char), itd.

Program u C-u Izvorni program (source code) u C-u je običan tekstualni fajl, kreiran u bilo kom editoru teksta (npr. Notepad). Program u C-u sastoji se iz definicija funkcija. Funkcija koja mora da postoji u svakom programu je main(). Izvršavanje programa se svodi na izvršavanje tela ove funkcije. Telo funkcije se navodi iza zaglavlja funkcije main(), između vitičastih zagrada { i }.

U telu funkcije se na početku navode deklaracije pomenljivih, nakon čega sledi proizvoljan niz naredbi . main() /* zaglavlje funkcije main */ { /* ovde pocinje telo */ /* deklaracije promenljivih */ /* naredbe */ } /* kraj tela */

Prvi primeri u C-u Napisati program koji na standardnom izlazu štampa ”Zdravo, svete!”. #include <stdio.h> main() { printf("Zdravo, svete!\n"); } Izlaz iz programa: Zdravo, svete!

Šta je izlaz iz sledećeg programa? #include <stdio.h> main() { printf("Zdravo, "); printf("svete!"); printf("\n"); }

Promenljive. Deklaracija i inicijalizacija Sve promenljive u C-u se moraju deklarisati. Time se za promenljivu u memoriji rezerviše potreban prostor, a ostatak programa postaje svestan postojanja promenljive i njenog tipa. Deklaracija se sastoji iz imena tipa za kojim slede imena promenljivih (identifikatori) koje se deklarišu, i koja su razdvojene zarezima. Deklaracija se završava simbolom ';'. Svako ime promenljive u deklaraciji može biti praćeno inicijalizatorom koji se sastoji iz karaktera '=' za kojim sledi inicijalna vrednost. 17 17

Prilikom deklaracije može se izvršiti i početna inicijalizacija. Dakle, da bi se promenljiva mogla upotrebljavati u programu ona se mora na početku programa deklarisati! Prilikom deklaracije može se izvršiti i početna inicijalizacija. int broj; /* Deklaracija celog broja */ int vrednost=5; /* Deklaracija i inicijalizacija celog broja */ Postoji i kvalifikator const koji može biti dodeljen deklaraciji bilo koje promenljive da bi označio da se ona neće menjati const double e=2.71828182845905 ; 18

Uvođenje promenljivih u program. #include <stdio.h> main() { /* Deklaracija vise promenljivih istog tipa */ int rez,pom1,pom2; pom1=20; pom2=15; rez=pom1-pom2; /* Ispisivanje rezultata */ printf("Rezultat je %d - %d = %d\n", pom1, pom2, rez); }

Izlaz iz programa: Rezultat je 20-15=5

Osnovni tipovi podataka u C-u Opis Uobičajena veličina char Mali ceo broj (ASCII kod karaktera) 1 bajt int Ceo broj 4 bajta float Realan broj double 8 bajtova 21

Funkcije ulaza i izlaza Ulaz i izlaz ostvaruju se posredstvom funkcija koje su definisane u standardnoj biblioteci stdio.h. Ove funkcije su obične C funkcije, koje se služe direktno servisima operativnog sistema prilikom svog rada. Zasnovano na primerima sa sajtova: http://www.matf.bg.ac.yu/~milan http://www.matf.bg.ac.yu/~jtomasevic

Za korišćenje ovih funkcija neophodno je uključiti zaglavlje stdio Za korišćenje ovih funkcija neophodno je uključiti zaglavlje stdio.h navođenjem direktive #include<stdio.h> pre definicije funkcije main(). Ovo zaglavlje je obilan tekstualni fajl u kome su navedene deklaracije funkcija ulaza i izlaza. Direktiva #include na mestu poziva uključuje kompletan sadržaj fajla koji je naveden, čime funkcije i podaci deklarisani u njemu postaju dostupni funkciji main().

Funkcija printf() Ovom funkcijom se ispisuje poruka zadata format stringom na standardni izlaz. Eventualni konverzioni specifikatori se zamenjuju vrednostima izraza koji u tom slučaju slede nakon format stringa, kao argumenti funkcije printf(), razdvojeni zarezima i u onom poretku u kome su odgovarajući konverzioni specifikatori navedeni. Tipovi izraza moraju biti u skladu sa tipovima koje određuju konverzioni specifikatori.

Konverzioni specifikatori Tip Napomena %d int Dekadni ispis %f float, double Ispis bez eksponenta %Lf long double %hd short %ld long %c char Ispis karaktera

Funkcija printf je bibliotečka funkcija koja prikazuje izlazne podatke u određenom formatu. Primer korišćenja funkcije printf je: printf("%d\t%d\n", broj1, broj2); Prvi argument ove funkcije je uvek između ” ” i određuje format u kome će se podaci ispisati na izlaz. Ova funkcija vraća kao vrednosti broj upisanih znakova na izlazu.

Sekvenca \n u okviru prvog argumenta funkcije printf je C oznaka za prelazak u novi red, \t je oznaka za tabulator, dok %d označava da će na tom mestu biti ispisana celobrojna vrednost argumenta koji je sa njim u paru. Svaka % konstrukcija je u paru sa odgovarajućim argumentom koji sledi. %% koristi se za ispis znaka % \\ koristi se za ispis znaka \ \” koristi se za ispis znaka ”

Postoji mogućnost da se precizira i širina polja u kome će se ispisati odgovarajuće vrednosti. Na primer, koristimo %3c za štampanje karaktera na tri pozicije poravnato zdesna. Koristimo %3d za štampanje broja na tri pozicije ili %6d za štampanje broja na 6 pozicija.

Važi: %f — štampaj kao realan broj %6f — štampaj kao realan broj širok najviše 6 znakova %.2f — štampaj kao realan broj sa dve decimale %6.2f — štampaj kao realan broj širok najviše 6 znakova pri čemu su 2 iza decimalne tačke. Da bi se izvršilo levo poravnanje, između % i odgovarajućeg karaktera dodaje se znak -.

Primer – printf() #include <stdio.h> main() { printf("Slova:\n%3c\n%5c\n", 'z' , 'Z'); } Izlaz iz programa: Slova: z Z

Funkcija scanf() Ovom funkcijom se učitavaju podaci sa standardnog ulaza. Prvi argument je format string u kome se navode konverzioni specifikatori kojima se definiše tip podatka koji se očekuje. Nakon format stringa slede adrese promenljivih, razdvojene zarezima, u koje treba upisati vrednosti učitane sa ulaza. Adresa promenljive a navodi se sa &a.

Adrese se navode u onom poretku u kom su odgovarajući konverzioni specifikatori navedeni u format stringu. Tipovi promenljivih moraju biti u skladu sa tipovima koje određuju konverzioni specifikatori.

Konverzioni specifikatori Tip Napomena %d int Opciono označeni dekadni broj %f float Realan broj sa opcionim eksponentom %lf double %Lf long double %hd short %ld long %c char Karakter iz ASCII skupa

Na primer, scanf("%d %d", &broj1, &broj2); Ova funkcija čita sa ulaza dva cela broja i smešta ih na adresu promenljivih broj1 i broj2, redom. Kao rezultat, ova funkcija vraća broj uspešno dodeljenih ulaznih vrednosti. Naredni poziv funkcije scanf nastavlja čitanje neposredno iza poslednjeg znaka koji je već pročitan.

Primer – scanf() Program prikazuje unos celog broja koristeći funkciju scanf("%d", &x). #include <stdio.h> main() { int x; printf("Unesi ceo broj : "); /* Obratiti paznju na znak & pre imena promenljive u funkciji scanf. */ scanf("%d",&x); /* U funkciji printf nije potrebno stavljati &. */ printf("Uneli ste broj %d\n", x); }

Kontrola toka - if if (izraz) naredba1 else naredba2 Naredba može biti prosta naredba a može biti i složena naredba (blok) koja se dobije kada se više prostih naredbi grupišu navođenjem vitičastih zagrada. 36

Primer - if Program ilustruje if i ispisuje ukoliko je uneti ceo broj negativan. #include <stdio.h> main() { int b; printf("Unesi ceo broj:"); scanf("%d", &b); if (b < 0) printf("Broj je negativan\n"); //prosta naredba } 37

Ulaz: Unesi ceo broj:-5 Izlaz: Broj je negativan Unesi ceo broj:5 38

if (izraz1) naredba1 //drugo if else naredba2 Else se odnosi na prvi neuparen if. Ako želimo drugačije moramo da navedemo vitičaste zagrade. if (izraz) //prvo if if (izraz1) naredba1 //drugo if else naredba2 Ovo else se odnosi na drugo if a ne na prvo if! 39

Tek sada se else odnosi na prvo if!!! if (izraz) { if (izraz1) naredba1 } else naredba2 Tek sada se else odnosi na prvo if!!! 40

Else-if if (izraz1) iskaz1 else if (izraz2) iskaz2 else if (izraz3) else iskaz 41

Primer – else-if if (a<5) printf("A je manje od 5\n"); else if (a==5) printf("A je jednako 5\n"); else if (a>10) printf("A je vece od 10\n"); else if (a==10) printf("A je jednako 10\n"); else printf("A je vece od pet i manje od 10\n"); 42

primer Program ispituje znak broja. #include <stdio.h> int main() { int b; printf("Unesi ceo broj : "); scanf("%d", &b); if (b < 0) printf("Broj je negativan\n"); else if (b == 0) printf("Broj je nula\n"); else printf("Broj je pozitivan\n"); } 43

Ulaz: Unesi ceo broj:-5 Izlaz: Broj je negativan Unesi ceo broj:5 Broj je pozitivan 44

Pogrešan program sa dodelom = umesto poređenja ==. #include <stdio.h> int main() { int b; printf("Unesi ceo broj : "); scanf("%d", &b); /* Obratiti paznju na = umesto == Analizirati rad programa*/ if (b = 0) printf("Broj je nula\n"); else if (b < 0) printf("Broj je negativan\n"); else printf("Broj je pozitivan\n"); } 45

Ne mešati ta dva operatora! Ulaz: Unesi ceo broj:-5 Izlaz: Broj je pozitivan Voditi računa o tome da je = operator dodele a == je operator poređenja na jednakost. Ne mešati ta dva operatora! 46

While petlja Uslov u zagradi se testira i ako je ispunjen telo petlje (naredba) se izvršava. Zatim se uslov ponovo testira i ako je ispunjen ponovo se izvršava telo petlje. I tako sve dok uslov ne postane neispunjen. Tada se izlazi iz petlje i nastavlja sa prvom sledećom naredbom u programu. while (uslov) telo petlje 47

Na primer, u sledećem fragmentu koda while (i<j) i=2*i; j++; Voditi računa o tome da li je naredba koja čini telo petlje prosta ili složena! Ako nema vitičastih zagrada onda se prva naredba iza while(uslov) tretira kao telo while petlje. Na primer, u sledećem fragmentu koda while (i<j) i=2*i; j++; samo naredba i=2*i; se ponavlja u okviru while petlje dok se naredba j++; izvršava tek nakon izlaženja iz while petlje. 48

Primer – while petlja #include <stdio.h> int main() { int x; while (x<10) printf("x = %d\n",x); x++; /* x++ je isto kao i x=x+1 */ } 49

Izlaz: x = 1 x = 2 x = 3 x = 4 x = 5 x = 6 x = 7 x = 8 x = 9 50