Preuzmite Programiranje 2 i više Rezime u PDF od Programiranje samo na Docsity!
Programiranje 2
Odsek za Softversko inženjerstvo Elektrotehnički fakultet Beograd
UVOD
Literatura: Laslo Kraus, Programski jezik C sa rešenim zadacima, Akademska misao, 9. izdanje, Beograd,
Laslo Kraus, Rešeni zadaci iz programskog jezika C, Akademska misao, 4. izdanje, Beograd, 2014. ...
Prethodnici jezika C
- Algol (apstraktan i opšti)
- CPL (Combined PL), Cambridge, nepregledan, težak za implementaciju
- BCPL (Basic CPL), MIT, za sistemsko programiranje
- B (uprošćenje BCPL-a), Ken Thompson, Bell Labs, na njemu pisan UNIX za PDP-
- B i BCPL - efikasan interfejs prema HW (bez tipova podataka)
Cilj
Osobine jezika: jezik nezavisan od računara komfor višeg programskog jezika zamena za zavisne simboličke mašinske jezike konciznost i efikasnost nezavisnost ostvarena uvođenjem tipova podataka
Osobine jezika C
- relativno “nizak jezik” sa komforom višeg jezika radi sa istom vrstom objekata kao i HW, npr. adrese, brojevi, karakteri
- pogodan za sistemsko programiranje, ali opšte namene UNIX je skoro čitav napisan u C-u prevodioci za druge jezike
Osobine jezika C
- omogućava kompaktno strukturirane programe, manje čitljive od Pascal-a
- velika fleksibilnost
- relativno mali jezik, prenosiv
- nije za početnika u programiranju
- standardi: ANSI C X3.159-1989 (C89), ISO C99, ISO C
Struktura C programa
- program se sastoji od funkcija, samo main obavezna, bibliotečke funkcije
- sa main počinje izvršavanje
- {...} - programski blok = deklaracije + naredbe (oboje opciono)
- definicija promenjivih obavezna
Notacija
C koristi skup znakova koji sadrži:
- velika slova
- mala slova
- cifre
- specijalne znakove
- neke znakovne sekvence koje počinju sa \
Identifikatori
- velika i mala slova se razlikuju (a ≠ A)
- dužina proizvoljna interna imena (oblast važenja unutar datoteke) 63 značajna znaka po Standardu spoljašnja imena (preko granica datoteka, rukuje i OS) prvih 31 znakova su značajni
Separatori
- razdvajaju leksičke elemente
- razmak, tabulacija, kraj linije, komentar
- terminator naredbe ;
- komentar počinje sa /* završava se sa */
- komentar koji se završava u istom redu počinje sa //
Rezervisane reči
auto break case char const continue default do double else enum extern float for goto if inline (od C99) int long register restrict (od C99) return short signed sizeof static struct switch typedef union unsigned void volatile while _Alignas (od C11) _Alignof (od C11) _Atomic (od C11) _Bool (od C99) _Complex (od C99) _Generic (od C11) _Imaginary (od C99) _Noreturn (od C11) _Static_assert (od C11) _Thread_local (od C11)
- Prva specifikacija jezika: K&R C (po knjizi iz 1978. godine)
- Prvi Standard: X3.159-1989 (ANSI C, C89) prihvaćen od International Standards Organization kao ISO:IEC 9899:1990 (C90)
- Drugo izdanje ISO Standarda ISO/IEC 9899:1999 (C99)
- Treće, važeće izdanje ISO Standarda ISO/IEC 9899:2011 (C11)
Tipovi podataka
- apstrakcija i zanemarivanje mašinskog predstavljanja podataka
- tip definiše: skup vrednosti operacije nad njima
- podaci: konstante promenljive
Numerički tipovi
- Znakovni
- Celobrojni
- Realni
Znakovni tip
- char 1 bajt kod znaka iz lokalnog skupa znakova može da se koristi kao ceo broj u aritmetičkim operacijama standard ne definiše da li je označen ili ne (neodređenost se izbegava prefiksom)
- signed char (-128 ÷ 127)
- unsigned char (0 ÷ 255)
- postoje u C11 char16_t i char32_t (iz uchar.h) kao i wchar_t (iz wchar.h) čija širina je implementaciono zavisna (kodiranja UTF-16, UTF-32, UNICODE)