slide1 n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Predavači: Prof. dr Gojko Joksimović Prof. dr Radovan Stojanović Asistenti: doc. dr Nikola Žarić PowerPoint Presentation
Download Presentation
Predavači: Prof. dr Gojko Joksimović Prof. dr Radovan Stojanović Asistenti: doc. dr Nikola Žarić

Loading in 2 Seconds...

play fullscreen
1 / 52

Predavači: Prof. dr Gojko Joksimović Prof. dr Radovan Stojanović Asistenti: doc. dr Nikola Žarić - PowerPoint PPT Presentation


  • 170 Views
  • Uploaded on

Programski jezik I (C) Univer z itet Crne Gore, Elektrotehnički fakultet Studije primijenjenog računarstva (SPR), III semestar. Predavači: Prof. dr Gojko Joksimović Prof. dr Radovan Stojanović Asistenti: doc. dr Nikola Žarić mr Ana Zogović. Programski jezik C.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Predavači: Prof. dr Gojko Joksimović Prof. dr Radovan Stojanović Asistenti: doc. dr Nikola Žarić' - gus


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
slide1

Programski jezik I (C)Univerzitet Crne Gore, Elektrotehnički fakultetStudije primijenjenog računarstva (SPR), III semestar

Predavači: Prof. dr Gojko Joksimović

Prof. dr Radovan Stojanović

Asistenti: doc. dr Nikola Žarić

mr Ana Zogović

programski jezik c
Programski jezik C
  • Prije početka pogledati ECTS katalog koji opisuje kurs (na sajtu www.etf.ac.me).
  • • Literatura

– M. Ostojić, B. Marković, B. Biberdžić: "Programski jezik C -skripta".

– Dražen Brđanin, Uvod u jezik C++, prezentacije, ETFBanjaluka.

–Uvod u jezik C, prezentacije, Matematički fakultet BG.

– Programski jezik C, Brian Kernighan i Dennis Ritchie, CET,Beograd, 2003.

– Programski jezik C - rešenja zadataka, Clovis Tondo, ScottGimpel, CET, Beograd, 2004.

– Programski jezik C sa rešenim zadacima, Laslo Kraus,Akademska misao, Beograd, 2004.

– Resursi na Internetu

slide3
Uvod
  • Podjela programskih jezika.
  • Programski jezik C, uopšte.
  • Postupak pisanja programa uWindowsu.
  • Pojam algoritma.
  • Opšta struktura C programa.
  • Jednostavni primjeri programa.
podjela programskih jezika
Podjela programskih jezika
  • Mašinski jezik—izvršni program, instrukcije ubinarnom kodu.
  • Asembler —izvorni program (tekst kojeg trebaprevesti), jezik prilagodjen arhitekturi računara (tekstje direktna zamjena za binarne instrukcije i lako seprevodi u njih).
  • Viši programski jezici—izvorni program, program jetekst sastavljen od naredbi, jezik je prilagodenposebnim zadacima za koje je namijenjen.Najpoznatiji viši programski jezici su: C, FORTRAN, Pascal, C++, Java ...
ma inski kod i asembler
Mašinski kod i asembler
  • Primjer mašinskih instrukcija i Assemblera (8086)
  • Primjer sa prastarog Intelovog procesora 8086 za IBM XT. (Toje 16 bitni procesor, instrukcije se pišu byte po byte).
  • Mašinski jezikEkvivalentan asemblerski kod

00011110 PUSH DS

00101011 SUB AX, AX

11000000

10111000 PUSH AX

10111000 MOV AX, MYDATA

00000001

10001110

11011000 MOV DS,AX

ma inski kod i asembler1
Mašinski kod i asembler
  • Osnovne mane takvih programa:

Instrukcije su strogo odredjene arhitekturom računara.

Posljedica: programi se ne mogu prenijeti na računaredrugačijeg tipa.

Pisanje programa je izrazito neefikasno.

Instrukcije su vrlo elementarne, prilagodene mašini, a ne

poslu kojeg treba napraviti.

Rezultat su dugački, nepregledni programi.

Podložni greškama, koje se teško otkrivaju.

• Asembler je samo “malo humaniji” od mašinskog jezika

(zamjena binarnog koda tzv. mnemoničkim kodom—

tekstualnim imenima instrukcija).

ma inski kod i asembler2
Mašinski kod i asembler
  • Stvarna svrha programiranja u asembleru jesamo za specifične zadatke vezane zaupravljanje hardwareom. Programer ima punukontrolu nad svim komponentama računara.
  • Za sve ostale, ljudima “bliže” poslove koristese tzv. viši programski jezici.
  • “Viši” = bliži čovjeku, a ne mašini
vi i programski jezici
Viši programski jezici
  • Postoji veliki broj ovih jezika od kojih su najpoznatiji:

C, FORTRAN, Pascal, C++, Java, . . .

  • Osnovne prednosti nad asemblerom:

– Nezavisnost o arhitekturi računara (prenosivost).

– Prilagodjenost pojedinim specifičnim zadacima(naredbe prilagodjene tipovimapodataka i operacijama nad njima).

  • Složenije naredbe, bliže ljudskom načinu mišljenja.
  • Rezultat: veća efikasnost programiranja (brže ijednostavnije obavljanje posla).
vi i programski jezici1
Viši programski jezici
  • Program u takvom jeziku prvo treba prevestiiz izvornog koda (source code) u izvršni kod (executable code).
  • Ovaj postupak, obično, ide u više koraka.
  • Posao prevodenja radi poseban program poznat kao kompajler (compiler).
  • Prenosivost—program se može (barem u principu) izvršitina bilo kom računaru koji ima kompajler za odredjenijezik.
  • Prevodenje je bitno složenije nego kod asemblera. Zato višijezici imaju svoja stroga pravila – sintaksu tj. gramatiku
programski jezik c1
Programski jezik C
  • C je viši programski jezik opšte namjene.
  • Autor: Dennis Ritchie (Bell Telephone Laboratories).
  • Razvijen sedamdestih godina prošlog vijeka.
  • Osnovna svrha:Pisanje jezgre operacionog sistema Unix.
  • Ideja:maksimalna portabilnost Unixa na razne vrsteračunara.
  • Zato je jezgro napisano u posebno smišljenom višemjeziku, a ne u mašinskom
programski jezik c2
Programski jezik C
  • C je jezik relativno “niskog nivoa”, ne jako daleko od same arhitekture računara (“high level assembler”).
  • To znači da C operiše s istim objektima kao i većinaračunara: znakovima, brojevima, adresama (pointerima ilipokazivačima).
  • C podržava sve operacije na tim podacima koje supodržane arhitekturom računara:

– aritmetičke, logičke, relacijske (uporedbe), ali i

– posebne operacije nad bitovima, poput pomaka

(“shift”).

programski jezik c3
Programski jezik C
  • S druge strane, kao viši jezik, C ima

• grupisanje naredbi, složene naredbe za kontrolu toka(petlje, uslovne naredbe),

• izvedene ili složene tipove podataka, poput polja,struktura, datoteka,

• mogućnost razbijanja programa u manje cjeline kojemogu biti smještene u raznim datotekama,

• manje programske cjeline (potprograme) —u C-u suto funkcije,

– koje mogu vratiti vrijednosti svih osnovnih tipova i

– nekih složenih tipova (strukture),

– i mogu se rekurzivno pozivati.

programski jezik c4
Programski jezik C
  • Na kraju, C ima standardizovanu programskubibliotekukoja sadrži sve mašinski zavisne elementejezika. Sastoji se iz dva bitna dijela.

– Niza funkcija za interakciju s okolinom(operativnim sistemom), poput

• čitanja i pisanja datoteka,

• formatizovani ulaz i izlaz,

• alokaciju memorije,

• operacije sa znakovima i stringovima, itd.

– Skup standardnih zaglavlja (tzv. “headers”) kojiuniformizuju pristupdeklaraciji funkcija i tipova podataka.

programski jezik c5
Programski jezik C
  • ANSI–C Standard jezika je opisan u knjizi Brian W. Kernighan i Dennis M. Ritchie, The CProgramming Language (second edition), PrenticeHall, Upper Saddle River, New Jersey, 1988.
  • Implementiran je u svim modernim C–kompajlerima.
  • ANSI standard usvojila je i Medunarodna organizacijaza standarde (ISO) 1990. godine (tzv. ISO C).
  • Ovaj ANSI/ISO standard skraćeno zovemo C90 standard.
  • Godine 1999. ISO je prihvatio novi C standard, kojiuvodi manje dopune u C90 standard. Skraćeni naziv:C99 standard.
postupak pisanja programa
Postupak pisanja programa
  • Prije svega potrebno je znati šta se programom želi postići, dakle, potreban je precizan opis problema iz koga će proisteći efikasan algoritam
  • Konstruisati efikasan algoritam znači dati precizan skup uputstava kako doći do rešenja zadatog problema
  • Algoritmi se mogu opisivati: prirodnim jezikom pseudo jezikom, dijagramom toka
algoritam opisan rije ima 1
Algoritam opisan riječima 1
  • Napisati algoritam za sabiranje dva broja

Algoritam Sabiranje

ulaz: x,y

izlaz: zbir brojeva x,y

početak

ulaz x,y;

zbir = x + y;

izlaz zbir;

kraj

algoritam opisan rije ima 2
Algoritam opisan riječima 2
  • Napisati algoritam za razmjenu dva broja.

Algoritam razmjena

ulaz: dva broja

izlaz: razmijenjena dva broja

početak

ulaz x,y;

pom=x; /* pom je pomocna promenljiva */

x=y;

y=pom;

izlaz x,y;

kraj

algoritam opisan dijagramom toka 1
Algoritam opisan dijagramom toka 1

Opišite dijagram toka za algoritam koji odreduje sumu S, aritmetičkusredinu A i proizvod P brojeva X, Y i Z.

algoritam opisan dijagramom toka 2
Algoritam opisan dijagramom toka 2

Opišite dijagram toka za algoritam koji dva zadana broja ispisuje u

opadajućem poretku.

postupak pisanja programa u c u
Postupak pisanja programa u C-u
  • Postupak “programiranja” u programskom jeziku Cpod raznim OS (operativnim sistemima) vrlo je sličan.
  • Bitni koraci:

• Prvo se tekst programa, tj. izvorni kod, upiše u nekutekstualnu datoteku (npr. notepad). Standardneekstenzije su .c ili .h, za zaglavlja. Na primjer, udatoteku prvi.c.

  • Zatim se poziva program kompajler (C compiler) kojiprevodi napisani program u izvršni kod. Kao rezultatdobija se izvršnifajl (standardna ekstenzijaje .exe naWindows-u).
  • Pozivom togfajla program se izvršava.
postupak pisanja programa u c u2
Postupak pisanja programa u C-u
  • Integrisano razvojno okruženje koje omogućavaobavljanje svih poslova kroz isti razvojni alat (program).
  • Primjeri integrisanih razvojnih okruženja:

– MS Visual Studio, baziran naMicrosoftovom C compileru ipripadnoj razvojnoj podršci (biblioteka, linker).

– Borland Builder, takmac MS Visual studiju.Besplatan za studente (u osnovnoj varijanti). Može raditi i saIntelovim compilerom.

  • Mana: to je ogroman paket (čak i u osnovnoj verziji).
  • Alternativa:
  • DevC++ okruženje.
postupak pisanja programa u c u3
Postupak pisanja programa u C-u
  • DevC++ okruženje zaWindows

Prednosti DevC++ okruženja:

– besplatna za sve (link je na webu),

– mala i vrlo jednostavna za rad.

• Mane:

– trenutna verzija je dosta stara

  • Srećom, za osnovno programiranje u C-u, ove mane nijesu bitne
postupak pisanja programa u c u4
Postupak pisanja programa u C-u
  • U našim salama je instaliran Borland Builder C++ compiler, Ver. 6.0
  • Pročitati upustvo za instaliranje i startovanje ovog programa.
prvi program
Prvi program
  • Izvorni program (source code) u C-u jeobičan tekstualni fajl, kreiran u bilo komeditoru teksta (npr. Notepad).
  • Program u C-u sastoji se iz definicijafunkcija.
  • Funkcija koja mora da postoji u svakomprogramu je main(). Izvršavanjeprograma se svodi na izvršavanje tijelaove funkcije.
  • Tijelo funkcijese navodi iza zaglavljafunkcije main(), između vitičastihzagrada { i }.
prvi program1
Prvi program
  • U tijelu funkcije se na početku navodedeklaracije promjenljivih, nakon čegaslijedi proizvoljan niz naredbi.

main() /* zaglavlje funkcije main */

{ /* ovde počinje tijelo */

/* deklaracije promjenljivih */

/* naredbe */

} /* kraj tijela */

prvi program2
Prvi program
  • Napisati program koji na standardnomizlazu štampa ”Dobar dan!”.

#include <stdio.h>

main()

{

printf(“Dobar dan!\n");

}

  • Izlaz iz programa:
  • Dobar dan!
drugi program
Drugi program
  • Uvođenje promjenljivih u program

#include <stdio.h>

main()

{ /* Deklaracija više promjenljivih istogtipa */

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
leksi ke konvencije
Leksičke konvencije
  • U upotrebi su velika i mala slova, cifre ispecijalni simboli iz ASCII skupa
  • Programski jezik C razlikuje velika i malaslova!
  • Komentari se navode između sekvenci /*i */. Mogu se prostirati u više linija. Nemogu biti ugniježđeni.
  • int x, X;/*Dvije različitepromjenljive!!!*/
identifikatori
Identifikatori
  • Identifikatori se sastoje iz slova, cifarai znaka _ pri čemu prvi karakter nijecifra.
  • Koriste se za imena promjenljivih, tipova,funkcija, itd.
klju ne rije i
Ključne riječi
  • Ključne riječi su rezervisane riječi kojeimaju posebnu ulogu i ne mogu sekoristiti kao identifikatori.
  • Ključne reči se koriste za:

definisanje jezičkih konstrukcija (if, while,for),

imena tipova (int, float, char), itd.

osnovni tipovi podataka u c u1
Osnovni tipovi podataka u C-u
  • Tipovi iz prethodne tabele se mogu modifikovatiključnim riječima short, long, signed iunsigned.
  • Na int se mogu primeniti short i long(u tom slučaju ključna reč int nijeobavezna).
  • Na double se može primeniti long.
  • Na float se ne može primeniti nijedanmodifikator.
  • Modifikatori unsigned i signed semogu primeniti na cjelobrojne tipove(char, int, short i long).
  • Veličine tipova su platformski zavisne.
  • Obavezna relacija za celobrojne tipove:short ≤ int ≤ long.
konstante
Konstante
  • Karakterske konstante se navodeizmeđu jednostrukih navodnika.One sutipa char.
  • Cjelobrojne konstante mogu bitidekadne, oktalne i heksadekadne. Sveove konstante su tipa int.
  • Oktalne počinju nulom
  • Heksadekadne počinju sekvencom 0x ili0X.
  • Sufiksi u ili U daju neoznačenukonstantu.
  • Sufiksi l ili L daju konstantu tipa long.
  • Realne konstante mogu biti sa ili bezeksponencijalnog dijela. One su doubletipa.
  • Realne konstante sa sufiksom f ili F sutipa float.
  • Realne konstante sa sufiksom l ili L sutipa long double.
promjenljive deklaracija i inicijalizacija
Promjenljive, deklaracija i inicijalizacija
  • Sve promjenljive u C-u se moraju deklarisati.Time se za promjenljivu u memorijirezerviše potreban prostor, a ostatakprograma postaje svestan postojanjapromjenljive i njenog tipa.
  • Deklaracija se sastoji iz imena tipa za kojimslede imena promenljivih (identifikatori)koje se deklarišu, i koja su razdvojenezarezima.
  • Deklaracija se završava simbolom ';'.
  • Svako ime promjenljive u deklaraciji možebiti praćeno inicijalizatorom koji se sastoji izkaraktera '=' za kojim slijedi inicijalnavrijednost.
promjenljive deklaracija i inicijalizacija1
Promjenljive, deklaracija i inicijalizacija
  • Dakle, da bi se promjenljiva moglaupotrebljavati u programu ona se mora napočetku programa deklarisati!
  • Prilikom deklaracije može se izvršiti ipočetna inicijalizacija.
  • int broj; /* Deklaracija cijelog broja */
  • int vrijednost=5; /* Deklaracija iinicijalizacija cijelog broja */
  • Postoji i kvalifikator const koji može bitidodijeljen deklaraciji bilo kojepromenljive dabi označio da se ona neće mijenjati
  • const pi=3.14156;
drugi program1
Drugi program

#include <stdio.h>

main()

{ /* Deklaracija više promjenljivih istogtipa */

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
funkcije ulaza i izlaza
Funkcije ulaza i izlaza
  • Ulaz i izlaz ostvaruju se posredstvomfunkcija koje su definisane ustandardnoj biblioteci stdio.h. (standard input output)
  • Ove funkcije su obične C funkcije, kojese služe direktno servisima operativnogsistema prilikom svog rada.
funkcije ulaza i izlaza1
Funkcije ulaza i izlaza
  • Za korišćenje ovih funkcija neophodnoje uključiti zaglavlje stdio.hnavođenjem tzv. pretprocesorske direktive#include<stdio.h> prije definicijefunkcije main().
  • Ovo zaglavlje je obiman tekstualni fajl ukom su navedene deklaracije funkcijaulaza i izlaza.
  • Direktiva #include na mjestu pozivauključuje kompletan sadržaj fajla koji jenaveden, čime funkcije i podacideklarisani u njemu postaju dostupnifunkciji main().
funkcija printf
Funkcija PRINTF()
  • Ovom funkcijom se ispisuje porukazadata format stringom na standardniizlaz (monitor).
  • Eventualni konverzioni specifikatori sezamjenjuju vrijednostima izraza koji u tomslučaju slijede nakon format stringa, kaoargumenti funkcije printf(), razdvojenizarezima i u onom poretku u kome suodgovarajući konverzioni specifikatorinavedeni.
  • Tipovi izraza moraju biti u skladu satipovima koje određuju konverzionispecifikatori.
funkcija printf1
Funkcija PRINTF()
  • Funkcija printf je bibliotečka funkcijakoja prikazuje izlazne podatke uodređenom formatu.
  • Primjer korišćenja funkcije printf je:

printf("%d\t%d\n", broj1, broj2);

  • Prvi argument ove funkcije je uvekizmeđu” ” i određuje format u kome će sepodaci ispisati na izlaz. Ova funkcijavraća kao vrijednosti broj upisanihznakova na izlazu.
funkcija printf2
Funkcija PRINTF()

printf("%d\t%d\n", broj1, broj2);

  • Sekvenca \n u okviru prvog argumentafunkcije printf je C oznaka za prelazak unovi red, \t je oznaka za tabulator, dok%d označava da će na tom mestu bitiispisana celobrojna vrednost argumentakoji je sa njim u paru. Svaka %konstrukcija je u paru sa odgovarajućimargumentom koji sledi.
  • %% koristi se za ispis znaka %
  • \\ koristi se za ispis znaka \
  • \” koristi se za ispis znaka ”
funkcija printf3
Funkcija PRINTF()
  • Postoji mogućnost da se precizira i širina polja u kome će se ispisati odgovarajuće vrijednosti.
  • Na primjer, koristi se %3cza štampanje karaktera na tri pozicije poravnato zdesna.
  • Koristi se %3dza štampanje broja na tri pozicije ili %6dza štampanje broja na 6 pozicija.
funkcija printf4
Funkcija PRINTF()
  • %f — štampaj kao realan broj
  • %6f — štampaj kao realan broj širok najviše 6 znakova
  • %.2f — štampaj kao realan broj sa dvije 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 lijevo poravnanje, između % i odgovarajućeg karaktera dodaje se znak -.
funkcija printf5
Funkcija PRINTF()

#include <stdio.h>

main()

{

printf("Slova:\n%3c\n%5c\n", 'z' , 'Z');

}

  • Izlaz iz programa:

Slova:

z

Z

funkcija scanf
Funkcija SCANF()
  • Ovom funkcijom se učitavaju podaci sa standardnog ulaza (tastature).
  • Prvi argument je format string u kome se navode konverzioni specifikatori kojima se definiše tip podatka koji se očekuje.
  • Nakon format stringa slijede adrese promjenljivih, razdvojene zarezima, u koje treba upisati vrijednosti učitane sa ulaza. Adresa promjenljive anavodi se kao &a.
funkcija scanf1
Funkcija SCANF()
  • 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
funkcija scanf3
Funkcija SCANF()
  • Program prikazuje unos cijelog broja koristeći funkciju scanf("%d", &x).

#include <stdio.h>

main()

{

int x;

printf("Unesi cio broj : ");

/* Obratiti paznju na znak & prije imena promjenljive u funkciji scanf */

scanf("%d",&x);

/* U funkciju printf nije potrebno stavljati &. */

printf("Unijeli ste broj %d\n", x);

}