Istraživači u tvrtkama Uber i Google rade na izmjenama dvaju najpopularnijih okvira za dublje učenje koji će im omogućiti da obrađuju vjerojatnost. To će osigurati način da pametniji AI program mjeri njihovo povjerenje u predviđanje ili odluku u osnovi, kako bi znali kad da sumnjaju u sebe.
Duboko učenje, koje uključuje unos primjernih podataka velikoj i moćnoj neuronskoj mreži, bio je ogroman uspjeh tijekom posljednjih nekoliko godina, što omogućava strojevima prepoznavanje objekata na slikama ili precizno prepisivanje govora. Ali to zahtijeva puno podataka o obuci i računalnoj snazi, a može biti iznenađujuće lomljivo.
Nešto proturječno, ova samosvjesnost nudi jedno rješenje. Novi pristup mogao bi biti koristan u kritičnim scenarijima koji uključuju samo-vozeće automobile i druge autonomne strojeve.
“Voljeli biste sustav koji vam daje mjeru koliko je siguran”, kaže Dustin Tran, koji radi na ovom problemu na Googleu. “Ako automobil koji vozi samostalno ne zna svoju razinu nesigurnosti, može napraviti kobnu pogrešku, a to može biti katastrofalno”.
Rad odražava shvaćanje da je nesigurnost ključni aspekt ljudskog razmišljanja i inteligencije. Dodavanje u AI programe moglo bi ih učiniti pametnijima i manje sklonim pogreškama, kaže Zoubin Ghahramani, istaknuti istraživač AI koji je profesor na Sveučilištu u Cambridgeu i glavni znanstvenik u Uberu.
To se može dokazati vitalno kad se AI sustavi koriste u sve kritičnijim scenarijima. “Želimo imati čvrst okvir za dublje učenje, ali olakšati ljudima da predstavljaju nesigurnost”, rekao je Ghahramani tijekom velike konferencije AI u Long Beachu u Kaliforniji.
Tijekom iste AI konferencije, skupina istraživača okupila se u obližnjem baru jednog popodneva kako bi raspravljala o Pyro, novom programskom jeziku koji je objavio Uber koji spaja duboko učenje s probabilističkim programiranjem.
Susret u Long Beachu organizirao je Noah Goodman, profesor na Stanfordu koji je također povezan s Uberovim AI Labom. Sa kovrčavom, neurednom kosom i otkopčanom košuljom moglo ga se lako zamijeniti s učiteljem joge, a ne AI stručnjakom. Među onima na skupu bio je Tran, koji je također pridonio razvoju Pyra.
Goodman objašnjava kako davanje dubokom učenju sposobnosti da obrađuje vjerojatnost može ga učiniti pametnijim na nekoliko načina. Primjerice, mogao bi pomoći programu prepoznati stvari, s razumnim stupnjem sigurnosti, iz samo nekoliko primjera, a ne tisuća. Ponuditi mjeru sigurnosti, a ne odgovoriti sa da ili ne, također bi trebalo pomoći u projektiranju složenih sustava.
I dok konvencionalni sustav dubokog učenja uči samo od podataka koji se unose, Pyro se također može koristiti za izgradnju sustava preprogramiranog znanjima. To bi moglo biti korisno u bilo kojem scenariju u kojem se strojno učenje može trenutačno pojaviti.
“U slučajevima gdje imate prethodno znanje koje želite izgraditi u modelu, probabilističko programiranje je osobito korisno”, kaže Goodman. “Ljudi će koristiti Pyro za sve vrste stvari.”
Edward je drugi programski jezik koji obuhvaća neizvjesnost, ovaj je razvijen na Sveučilištu Columbia s financiranjem iz DARPA-e. I Pyro i Edward su još uvijek u ranoj fazi razvoja, ali nije teško vidjeti zašto su Uber i Google zainteresirani.
Uber koristi strojno učenje na bezbrojnim područjima, od usmjeravanja vozača do postavljanja cijena nadzora, i naravno u vlastitim automobilima. Tvrtka je uložila mnogo u AI, zapošljavajući brojne stručnjake koji rade na novim idejama. Google je obnovio cijeli svoj posao oko AI i malo kasno duboko učenje.
David Blei, profesor statistike i računalnih znanosti na Sveučilištu Columbia i Tranov savjetnik, kaže da je kombinacija dubokog učenja i probabilističkog programiranja obećavajuća ideja koja treba više posla. “U principu, vrlo je moćan”, kaže on. “Ali ima mnogo, mnogo tehničkih izazova.”
Ipak, kako Goodman piše, Piro i Edward također su značajni za okupljanje dviju konkurentskih škola u AI, jedan usmjeren na neuronske mreže, a drugi na vjerojatnost.
Posljednjih godina, škola neuronske mreže je tako dominantna da su ostale ideje sve ostale iza sebe. Da biste krenuli naprijed, polje možda treba obuhvatiti ove druge ideje.
“Zanimljiva je priča da ne morate misliti na ove kampove kao zasebne”, kaže Goodman. “Mogu se spojiti – zapravo, oni se okupljaju – u alatima koje gradimo.”
Možete čak reći da postaju pametniji, djelomično, uče ono što ne znaju.
LaTeX (čita se Latek) je programski jezik za dokumente i sustav za stvaranje dokumenata korištenjem uređivačkog program TeX. Koristi se u akademskoj zajednici kao i u izdavačkim tvrtkama, posebno zbog kvalitete krajnjeg produkta i bolje automatizacije tablica, figura i bibliografija. LaTeX je napisao Amerikanac Leslie Lamport kao zaposlenik tvrtke SRI International ranih 1980-ih i od tada je postao glavna metoda za korištenje TeX-a, jezika za formatiranje na niskoj razini.
Distribucije
Trenutno postoji nekoliko popularnih TeX distribucija koje uključuju LaTeX:
TeX Live – multiplatformska distribucija (Windows, Unix, OS X)
MacTeX – distribucija za operacijski sustav Mac OS X, bazirana na distribuciji TeX Live
MiKTeX, proTeXt, W32TeX – distribucije za operacijski sustav Windows
Programski jezik C spada u proceduralne programske jezike koji je razvijen u ranim 70-im godinama 20. stoljeća.
Povijest razvoja
Autor ovog programskog jezika je Dennis Ritchie, no značajan doprinos nastanku C-a dali su Ken Thompson kao autor programskog jezika B i Martin Richards, autor programskog jezika BCPL. Dennis Ritchie je stvorio ovaj programski jezik za rješavanje praktičnih problema kodiranja sistemskih programa i jezgre operacijskog sustava UNIX, koji je praktički u cijelosti napisan u C-u.
Dennis Ritchie i Ken Thompson
Programski jezik C dosta se mijenjao tokom godina te je u više navrata neformalno i formalno standardiziran. Prva važnija inačica poznata je pod nazivom “K&R C”, što je engl. kratica prezimena dvaju autora najpoznatijeg C priručnika “The C Programming Language”, a to su Brian Kernighan i Dennis Ritchie. Prvo izdanje te vrlo sažeto i precizno pisane knjige koje datira iz 1978. godine ujedno je de facto standardiziralo jezik u 70-ima. Drugo izdanje iz 1988. godine opisuje “ANSI C”, standard kojeg je 1983. godine definirao američki nacionalni institut za standardizaciju, a koji je i danas najbolje podržan. Donedavni je standard bio ISO/IEC standard skraćeno poznat kao “C99”, no krajem 2011. usvojen je ISO/IEC 9899:2011, poznat kao “C11”, za koji su kompajleri još u razvoju.
Kao jedan od najvažnijih jezika u povijesti komercijalne računalne industrije, C je do danas ostao jedini programski jezik prilagođen za sve računalne platforme, od malih sustava pa do mrežnih superračunala. Programi napisani u njemu vrlo su bliski načinu rada hardvera te u načelu zahtijevaju od programera dobro razumijevanje rada procesora, memorije, ulazno-izlaznih sklopova itd. No, rad s registrima procesora i adresiranje memorije apstrahirani su pomoću koncepta varijabli i pokazivača što uz eksplicitne kontrolne strukture i funkcije znatno olakšava programiranje u odnosu na izravno programiranje u strojnim jezicima.
Prvo izdanje knjige Programski jezik C, autora Kernigan, Ritchie
Proširivanje na objektno orijentirano programiranjae
Tokom 1980-ih, Bjarne Stroustrup zajedno s drugim istraživačima u Bell Labs proširuje C dodavajući sposobnosti objektno orijentiranog programiranja, a naziv ovog novog programskog jezika je C++. Nažalost, ta je 100%-na kompatibilnost ujedno i razlog što su problemi koje programiranje u C-u nosi sa sobom naslijeđeni u C++-u. Efikasno i sigurno programiranje u C-u vrlo je zahtjevna vještina koja traži višegodišnje iskustvo pa je stoga C jezik koji se ne preporučuje početnicima, posebice ako im programiranje nije primarni posao.
Uporaba
C je jezik opće namjene, što znači da se u njemu može napraviti apsolutno sve: od rješavanja zadataka, do pisanja drivera, operacijskih sustava, tekst procesora ili igara. C, kao jezik, ni u čemu ne ograničava. Omogućuje i uključivanje naredbi pisanih asemblerski, zbog čega je zajedno s mogućnošću direktnog pristupa pojedinim bitovima, bajtovima ili cijelim blokovima memorije, pogodan za pisanje sistemskog softvera. Zbog tih karakteristika C je među popularnijim programskim jezicima i rabe ga mnogi programeri. Rezultat toga je postojanje velikog broja prevoditelja za C i alata te stalno dostupne pomoći na internetu. Programi pisani u C-u su prenosivi (mogu se prevoditi i izvršavati na različitim porodicama računala uz minimalne ili nikakve ispravke) i obično su vrlo brzi. Postoje mnogi prevoditelji za jezik C, a jedan od najšire korištenih je GNU C Compiler.
Problemi
Mnogobrojni problemi vezani prije svega za upravljanje memorijom koje programer mora sam eksplicitno kodirati razlog su da je danas većina novih korisničkih aplikacija napisana u nekom modernijem jeziku koji ima ugrađeno automatsko upravljanje memorijom (engl. garbage collection), ne dopušta izravan rad s memorijom pomoću pokazivača te ima podršku za upravljanje kodom odnosno njegovom okolinom za vrijeme njegova izvođenja. Danas se relativno rijetko ukazuje potreba za pisanjem novih korisničkih aplikacija izravno u C-u, pa čak i u vrlo malim sustavima kao što su primjerice mobilni telefoni. Glavno područje njegove uporabe su sistemski programi na strani poslužitelja (engl. servers), programi prevoditelji (engl. compilers) i jezgre operativnih sustava (engl. operating system kernels), gdje je potreba za najvećom mogućom brzinom izvođenja, efikasnom kontrolom resursa i izravnom kontrolom hardvera od primarne važnosti.
bijeli razmaci: razmak, vodoravni razmak, Okomiti razmak, prekid stranice, nova linija
Prije pojave standarda C11 u programskom jeziku C u standardu nije bilo moguće umetnuti posebne znakove (UTF8), ratifikacijom standard C11 sada je moguće umetnuti posbene znakove u heksadecimalnom obliku \uXXXX ili \UXXXXXXXX.
Ključne riječi
Programski jezik C u standardu C89 ima samo 32 ključne riječi, ove riječi nije moguće primijeniti za variable ili za neke druge svrhe kao recimo imena funkcija, konstanti ili slično:
Najjednostavniji program je onaj koji zadani tekst ispisuje na ekran. Da bi se mogao ispravno napisati čak i tako jednostavan program, potrebno je poznavati strukturu programa odabranog programskog jezika.
Struktura programa odnosi se na način pisanja programa i ako se ona ne poštuje, program neće raditi, bez obzira na to što su uporabljene sve potrebne naredbe. Svaki program pisan u programskom jeziku C sastavljen je od niza funkcija. Glavna i jedina obavezna funkcija u programu je funkcija main( ). Program se može sastojati i od većeg broja funkcija.
Bitna razlika između C-a i ostalih programskih jezika je u tome što u C-u ne postoje ugrađene funkcije. One se nalaze u bibliotekama funkcija koje se isporučuju zajedno s prevoditeljem. Biblioteke funkcija nastale su standardizacijom C-a, pa je dovoljno na početku programa najaviti da će se upotrebljavati određena biblioteka i u cijelom programu dostupne su sve funkcije koje se u njoj nalaze. Tako se biblioteka u kojoj se nalaze funkcije za ulaz i izlaz podataka naziva stdio.h, matematičke funkcije nalaze se u biblioteci math.h, a funkcije za rad sa znakovnim varijablama u biblioteci string.h.
Na početku svakog C programa uobičajeno je pisati pretprocesorske naredbe kojima se pozivaju biblioteke funkcija koje se rabe u programu. Opći oblik te naredbe je: #naredba parametri. Najčešće upotrebljavana pretprocesorska naredba je: #include <ime datoteke> i obavezno se piše prije funkcije main( ). Prevođenjem programa na mjesto naredbe #include kopira se sadržaj navedene datoteke.
Isto tako, prije samog pisanja programa treba istaknuti da se programi napisani u C-u sastoje od niza međusobno povezanih funkcija čiji broj nije ograničen. U svakom programu je obavezna samo jedna funkcija – funkcija main( ) koja označava mjesto na kojem počinje izvršavanje programa. Početak i kraj funkcije označava se vitičastim zagradama. Nakon svake naredbe u C-u mora stajati znak ; koji (kao i u Pascalu) označava kraj jedne i početak druge naredbe.
Programski primjer
U sljedećem primjeru učitavaju se 2 broja, a nakon učitavanje na zaslonu se ispisuje njihov zbroj:
#include<stdio.h>intmain(void){inta,b;scanf("Prvi broj %d",&a);scanf("Drugi broj %d",&b);printf("Njihov zbroj je = %d\n",a+b);return0;}
U sljedećem primjeru na zaslonu će se ispisati tablica množenja do 10:
Najčešće upotrebljavana funcija za ispis u C-u je ona za formatirani ispis: printf( ). Njezina sintaksa ima ovaj oblik:
printf("niz znakova koji se trebaju ispisati na zaslonu");
Zbog već istaknute specifičnosti C-a, koji sve funkcije ima pohranjene u bibliotekama funkcija, potrebno je pretprocesorskom naredbom #include najaviti uporabu biblioteke stdio.h u kojoj je pohranjena većina ulazno – izlaznih funkcija.
Primjer korištenja funkcije printf( ):
#include<stdio.h>main(){printf("Ispiši ovo na zaslon ekrana");}
Ispis vrijednosti
Sam ispis teksta rabi se vrlo rijetko. Namjena svakog programa je obrada podataka i prikaz rezultata te obrade (ispis dobivenih vrijednosti). Pri ispisu vrijednosti potrebno je definirati format ispisa. Njime se oblikuje način ispisa vrijednosti. Pojam formata usko je vezan za tipove podataka.
Podaci u C-u mogu biti:
cjelobrojni (int)
realni (float)
realni dvostruke točnosti (double)
znakovni (char)
tip podataka koji ne sadržava vrijednost (void)
Svaki od navedenih može biti s predznakom (signed) ili bez njega (unsigned). Opsegvrijednosti se može odrediti parametrima short i long, koji određuju krajnje vrijednosti svakog tipa. Razlika među njima je u broju bitova koje zauzimaju prilikom zapisa u memoriji:
Tip podataka
Vrsta
Predznak
Duljina (broj bitova)
Opseg
1
int
short
signed
2
-32768 do 32767
unsigned
2
0 do 65.535
long
signed
4
–2.147.483.648 do 2.147.483.647
unsigned
4
0 do 4.294.967.295
long long
signed
8
–9.223.372.036.854.775.808 do 9.223.372.036.854.775.807
unsigned
8
0 do 18.446.744.073.709.551.615
2
float
4
-3.4·10-38 do 3.4·1038
3
double
8
-1.7·10-308 do 1.7·10308
4
char
long
signed
8
-128 do 127
unsigned
8
0 do 255
5
bool
1
true (1) ili false (0)
6
void
0
bez vrijednosti
Za ispis vrijednosti upotrebljava se se funkcija printf( ) koja je oblika:
printf("lista formata",listavarijabli);
Najčešće korištene oznake formata za ispis:
Format
Značenje
1
%c
oznaka formata za ispis jednog znaka
2
%d
ispis cijelog broja
3
%f
ispis realnog broja
4
%lf
ispis realnog broja tipa double
5
%s
ispis niza znakova
6
%e
ispis realnog broja u E-notaciji
Izgled ispisa na zaslonu uređuje se unutar dvostrukih navodnika, a u listi varijabli dolazi samo popis varijabli. To prilično olakšava rad s kombiniranim ispisom, jer nema mnogo kompliciranja i kombiniranja naovodnika i zareza kao u ostalim programskim jezicima. Unutar navodnika kreira se izgled ispisa na ekran, a izvan njih redom se navode sve varijable čije se vrijednosti trebaju ispisati. Redoslijed oznaka formata mora odgovarati redoslijedu imena varijabli. Pogrešno zadan format u odnosu na deklaraciju varijable rezultirat će porešnim ispisom.
Primjer:
#include<stdio.h>main(){printf("\n rezultat izraza %d+%d je %d",3,2,3+2);}
Na zaslonu će se ispisati:
rezultat izraza 3+2 je 5
Aritmetički operatori
U programskom jeziku C za zbrajanje se uoptrebljava aritmetički operator +. Preostali standardni aritmetički operatori u C-u su: -, *, / i %. Oni se rabe za matematičke operacije:
Operacija
Operator
1
zbrajanje
+
2
oduzimanje
–
3
množenje
*
4
dijeljenje
/
5
modulo (ostatak cjelobrojnog dijeljenja)
%
Viši prioritet imaju operatori %, * i /, a niži + i -. Rezultat dijeljenja dvaju cijelih brojeva u C-u je cijeli broj, pa zbog toga ne postoji potreba za posebnim operatorom cjelobrojnog dijeljenja.
Učitavanje podataka
Podatke u programu dijelimo na:
varijable – podaci čije se vrijednosti tijekom izvođenja programa mijenjanju
konstante – podaci čije se vrijednosti ne mogu mijenjati
Identifikatori
Varijablama, konstantama i funkcijama dodjeljujemo imena – identifikatore. Oni se sastoje od niza alfanumeričkih znakova (brojke i slova), od kojih prvi znak mora biti slovo ili donja crta (_). Dva identifikatora su različita ako se razlikuju u prva 32 znaka. Identifikatori ne smiju biti ključne riječi programskog jezika C. Programski jezik C razlikuje velika i mala slova, tako da su varijable a i A dvije različite varijable.
Za identifikatore nije moguće rabiti ključne riječi. One zajedno sa sintaksom programskog jezika određuju što se i na koji način u određenome programskom jeziku može učiniti. Ključnih riječi u C-u ima poprilično malo (32 ključne riječi definirane standardom ANSI C) no kasnije su proširivane tako da sada u modernim inačicama programskog jezika C ima 44, koje čine jezgru jezika i dovoljne su za rješavanje svih problema) i pišu se malim slovima.
Konstante
Konstane su vrijednosti koje se zadaju jedanput i ne mijenjaju se tijekom izvođenja programa. S obzirom na tipove podataka razlikuju se cjelobrojne, realne i znakovne konstante.
Cjelobrojne konstante su cijeli brojevi iz dopuštenog opsega, zapisani u standardnom obliku.
Realne konstante sadržavaju realne brojeve s predznakom ili bez njega, zapisane u standardnom obliku tako da decimalna točka odvaja cjelobrojni dio od decimalnoga. Mogu se zapisati i u eksponencijalom obliku. Pvi dio takvog zapisa je realan broj (s predznakom ili bez njega), zatim slovo e ili E i iza njega cijeli broj (s predznakom ili bez njega), npr. broj 0.02 može biti zapisan kao 2E-2.
Od numeričkih konstanti C dopušta još i oktalne i heksadekadske konstante. Oktalne konstane počinju s 0, a heksadekadske s 0x. (npr. 044 – oktalna, 0xaba – heksadekadska).
Znakovne konstante zadaju se unutar jednostrukih navodnika – literala ‘ ‘ i uglavnom se sastoje od jednog znaka (osim već spomenutih znakovnih konstanti koje se rabe za kontrolu ispisa). Vrijednost znakovne varijable odgovara numeričkoj vrijednosti koja odgovara ASCII kodu znaka koji se nalazi unutar jednostrukih navodnika. Tako je numerička vrijednost znakovne konstante ‘Z’ 90. Znakovne konstante mogu se pojavljivati u aritmetičkim izrazima i tada se upotrebljava isključivo njihova numerička vrijednost.
Osim navedenih tipova konstanti, programski jezik C definira i konstantu niza znakova (string constant), koja se sastoji od niza znakova unutar para navodnika, npr. “konstanta”.
Neke znakovne konstante za kontrolu ispisa:
\f – nova stranica
\n – novi red
\r – povratak na početak linije
Funkcije za učitavanje
Za unošenje podataka s tipkovnice u C-u postoji nekoliko funkcija. Najčešće se rabi funkcija za formatirani unos podataka scanf( ). Njezina je sintaksa:
scanf("lista_formata",lista_varijabli);
Kao i kod funkcije printf( ), u listu formata upisuju se oznake formata za tip varijabli, a u listu varijabli popis imena varijabli istim redoslijedom kao u popisu formata. Varijable navedene u listi međusobno se odvajaju zarezom. Budući da se u C-u njihove vrijednosti prenose s pomoću adrese, ispred imena imena svake varijable treba dodati i adresni operator & (operator za dodjeljivanje adrese).
Oznake formata tipa varijabli jednake su onima koje se upotrebljavaju u ispisu, ali mora se paziti kako se odvajaju u listi formata, jer to određuje način unosa podataka pri izvođenju programa. Ako su oznake formata odvojene zarezom, i vrijednosti varijabli se prilikom unošenja podataka odvajaju zarezom. Ako nema zareza, vrijednosti se odvajaju razmakom.
Deklaracija varijabli u C-u
Podaci čije će se vrijednosti mijenjati tijekom izvođenja programa (varijable) moraju se prije sam uporabe najaviti (deklarirati). Deklaracijom se zadaju tip i ime varijable. Varijable se najčešće deklariraju na samome početku programa, ali to nije uvjet. Varijabla se u C-u može deklarirati izvan svih funkcija, na početku funkcije ili na početku bloka naredbi.
Opći oblik naredbe za deklaraciju jest:
tip_podatakalistavarijabli;
Tip_podataka jedan je od osnovnih ili korisnički definiranih tipova podataka, a lista_varijabli niz je imena varijabli (odvojenih zarezom) koje će tijekom izvršavanja programa sadržavati vrijednosti zadanog tipa podataka.
Naredbom za deklaraciju se u memoriji rezervira memorijska lokacija za svaku varijablu navedenu u listi varijabli. Veličina rezerviranog prostora ovisi o navedenom tipu podataka (2 bajta za broj tipa int, 4 za float…).
Tako se naredbama:
inta,b,c;floatx,y;
u memoriji rezervira 5 zasebnih lokacija. Za varijable a, b i c one su veličine 2, dok su za varijable x i y veličine 4 bajta.
Naredba pridruživanja
Naredbom pridruživanja varijablama se zadaju ili mijenjaju vrijednosti.
Operator pridruživanja u programskom jeziku C je =. Njegova je uloga da vrijednost izraza s desne strane pridruži varijabli na lijevoj strani. Operator pridruživanja ima najniži prioritet izvršavanja.
Opći oblik naredbe za pridruživanje vrijednosti je:
varijabla=izraz;
Več je rečeno da se varijable u C-u mogu najaviti izvan svih funkcija, na početku funkcije ili na početku bloka naredbi. Područje djelovanja određene varijable ovisi o mjestu na kojem je deklarirana, pa ovisno o tome, varijable mogu biti:
globalne – deklariraju se izvan svih funkcija i mogu se rabiti u cijelom programu
lokalne – varijable koje se deklariraju na početku funkcije ili kao argumenti funkcije i dostupne su samo u toj funkciji (ili bloku naredbi). Izvan funkcije ili bloka lokalne varijable ne postoje. Imena tih varijabli u različitim funkcijama ili blokovima mogu biti ista.
Definicijom globalne varijable automatski joj se dodjeljuje vrijednost 0, dok lokalne varijable ne sadržavaju početnu vrijednost i moraju se inicijalizirati posebnom naredbom tijekom deklaracije ili nakon nje (ali prije njezina prvog korištenja). Početne vrijednosti varijablama se dodjeljuju naredbom pridruživanja.
Primjer: Naredbom int a=5; deklarirana je cjelobrojna varijabla a i pridružena joj je početna vrijednost 5. Isti efekt postiže se ako se varijabla a deklarira (int a;) prije, a naknadno joj se dodijeli početna vrijednost (a=5).
Fortran (ili FORTRAN) ime je za proceduralni, imperativni programski jezik koji je bio razvijen tijekom 50-ih godina dvadesetog stoljeća, i koristi se većinom u znanstvene svrhe. Ime FORTRAN dobiveno je od skraćivanjem engleske složenice Formula Translation.
Povijest razvoja i inačice
Povijest razvoja
Prvi FORTRAN jezični prevoditelj (ili kompilator) razvila je tvrtka IBM za računalo IBM 704 između 1954. i 1957. godine. Razvojnu grupu predvodio je John W. Backus. Kao jezični prevoditelj FORTRAN je nastao u povojima računarstva tj. kada su osnovna svojstva računala bile veoma skromne (mala glavna memorija, spora centralna jedinica) tako da je razvojni tim imao skučeni prostor za razvoj i implementaciju.
Predvoditelj razvojne grupe John W. Backus je također bio i jedan od glavnih inženjera i dizajnera računala IBM 704, računala na kojem je razvijena prva inačica FORTRANA. Uz Backusa u razvojnoj grupi su sudjelovali su sljedeći programeri :
Sheldon F. Best
Harlan Herrick
Peter Sheridan
Roy Nutt
Robert Nelson
Irving Ziller
Richard Goldberg
Lois Haibt
David Sayre
Razvojni tim FORTRANA nije razvio princip programa-prevoditelja te prevođenje složenog programskog jezika u objektni kod, ali oni su prva grupa koja je razvila uspješan složeni programski jezik.
Inačice
FORTRAN I (1954-1957)
FORTRAN II (1958)
FORTRAN III (1958)
FORTRAN IV (1961)
FORTRAN 66 (1966)
FORTRAN 77 (1977)(ANSI standard)
FORTRAN 90 (1990)(ANSI standard)
FORTRAN 95 (1995)(ANSI standard)
FORTRAN 2000 (2000)
FORTRAN 2003 (2003)
FORTRAN 2008 (2008)
Programski primjer
! This program calculates the area of a tank, ! excluding the bottom. ! The variables are assigned as follows: ! ! R = RADIUS ! H = HEIGHT ! PI = 3.14159 ! A = AREA ! ! They are declared with the REAL statement below. REAL R,H,PI,A! The OPEN command associates the data file, "PANDAT.DAT", ! in folder "DATA" with logical device 5. If there is an ! error, statement 900 is executed. OPEN(5,FILE='C:\DATA\PANDAT.DAT',ACCESS='SEQUENTIAL',&STATUS='OLD',ERR=900)! This following section accumulates the sum of ! the input variables. ! The first command reads the data record and ! stores it in memory. DO READ(5,FMT=1,END=99)R,H! The next command describes the form and location ! of the data to be read. 1FORMAT(F4.2,F4.2)! The next statements assign values to the variables. PI=3.14159A=PI*R**2+2*PI*R*H! The next section writes the sums to the screen. ! The first command, PRINT, denotes which FORMAT ! statement is to be used, and the variables to be printed. PRINT 11,H,R,A! The following FORMAT statement describes how the ! data field is to be written. Notice the semicolon in column 6 ! which is used to denote continuation of the previous line. 11FORMAT(1X,'RADIUS= ',F6.2,10X,'HEIGHT= ',F6.1,10X,'AREA= ',&&F8.1)! The following statement completes the loop. END DO! The next section prints if the input data is invalid. 900PRINT 2121FORMAT(1X,'INVALID DATA')! Now we close the file and end program execution. 99CLOSE(5)STOP END
MATLAB je programski jezik visoke razine i interaktivna je okolina za numeričko i matrično računanje, te za vizualizaciju i programiranje. Naziv je nastao kao kratica od engleskih riječi MATrix LABoratory. Prva verzija MATLAB-a napisana je krajem 1970. godine na sveučilištima Novog Meksika i Stanforda. Pomoću MATLAB-a mogu se analizirati podatci, izraditi algoritmi te stvoriti modeli i aplikacije. Jezik, alati i matematičke funkcije omogućuju brži rad nego s tablicama ili tradicionalnim programskim jezicima, kao što su C/C++ ili Java. MATLAB se može koristiti za niz aplikacija, uključujući obradu signala i komunikacija, obradu sustava kontrole, ispitivanja i mjerenja, računalnih financija i računalne biologije.
Povijest
Cleve Moler, šef odjela računalnih znanosti na Sveučilištu u Novom Meksiku, razvijao je MATLAB kasnih 1970-ih godina. MATLAB je osmišljen kako bi osigurao svojim studentima pristup LINPACK-u i EISPACK-u da bi naučili Fortran. MATLAB se, ubrzo, proširio na druga sveučilišta i pronašao snažnu podršku unutar zajednice koja je izučavala primijenjenu matematiku. Jack Little prepoznajući komercijalni potencijal pridružio se Cleveu Moleru i Steveu Bangertu. Oni ponovo pišu MATLAB u C-u i nastavljaju njegov razvitak. Ove ponovo napisane biblioteke su bile poznate kao JACKPAC. MATLAB je ponovo napisan 2000. godine te može koristiti noviji skup biblioteka za matrične manipulacije – LAPACK.
MATLAB su prvo usvojili istraživači i praktičari u kontrolnom inženjeringu, ali se brzo proširio na mnoge druge domene. On se sada koristi u obrazovanju, posebice u nastavi linearne algebre i numeričke analize, ali je i popularan među znanstvenicima koji su uključeni u obradu slike.
MATLAB je programski jezik visoke razine i interaktivna je okolina za numeričko i matrično računanje, te za vizualizaciju i programiranje. Naziv je nastao kao kratica od engleskih riječi MATrix LABoratory. Prva verzija MATLAB-a napisana je krajem 1970. godine na sveučilištima Novog Meksika i Stanforda. Pomoću MATLAB-a mogu se analizirati podatci, izraditi algoritmi te stvoriti modeli i aplikacije. Jezik, alati i matematičke funkcije omogućuju brži rad nego s tablicama ili tradicionalnim programskim jezicima, kao što su C/C++ ili Java. MATLAB se može koristiti za niz aplikacija, uključujući obradu signala i komunikacija, obradu sustava kontrole, ispitivanja i mjerenja, računalnih financija i računalne biologije.
Povijest
Cleve Moler, šef odjela računalnih znanosti na Sveučilištu u Novom Meksiku, razvijao je MATLAB kasnih 1970-ih godina. MATLAB je osmišljen kako bi osigurao svojim studentima pristup LINPACK-u i EISPACK-u da bi naučili Fortran. MATLAB se, ubrzo, proširio na druga sveučilišta i pronašao snažnu podršku unutar zajednice koja je izučavala primijenjenu matematiku. Jack Little prepoznajući komercijalni potencijal pridružio se Cleveu Moleru i Steveu Bangertu. Oni ponovo pišu MATLAB u C-u i nastavljaju njegov razvitak. Ove ponovo napisane biblioteke su bile poznate kao JACKPAC. MATLAB je ponovo napisan 2000. godine te može koristiti noviji skup biblioteka za matrične manipulacije – LAPACK.
MATLAB su prvo usvojili istraživači i praktičari u kontrolnom inženjeringu, ali se brzo proširio na mnoge druge domene. On se sada koristi u obrazovanju, posebice u nastavi linearne algebre i numeričke analize, ali je i popularan među znanstvenicima koji su uključeni u obradu slike.
Fortran (ili FORTRAN) ime je za proceduralni, imperativni programski jezik koji je bio razvijen tijekom 50-ih godina dvadesetog stoljeća, i koristi se većinom u znanstvene svrhe. Ime FORTRAN dobiveno je od skraćivanjem engleske složenice Formula Translation.
Povijest razvoja i inačice
Povijest razvoja
Prvi FORTRAN jezični prevoditelj (ili kompilator) razvila je tvrtka IBM za računalo IBM 704 između 1954. i 1957. godine. Razvojnu grupu predvodio je John W. Backus. Kao jezični prevoditelj FORTRAN je nastao u povojima računarstva tj. kada su osnovna svojstva računala bile veoma skromne (mala glavna memorija, spora centralna jedinica) tako da je razvojni tim imao skučeni prostor za razvoj i implementaciju.
Predvoditelj razvojne grupe John W. Backus je također bio i jedan od glavnih inženjera i dizajnera računala IBM 704, računala na kojem je razvijena prva inačica FORTRANA. Uz Backusa u razvojnoj grupi su sudjelovali su sljedeći programeri :
Sheldon F. Best
Harlan Herrick
Peter Sheridan
Roy Nutt
Robert Nelson
Irving Ziller
Richard Goldberg
Lois Haibt
David Sayre
Razvojni tim FORTRANA nije razvio princip programa-prevoditelja te prevođenje složenog programskog jezika u objektni kod, ali oni su prva grupa koja je razvila uspješan složeni programski jezik.
Inačice
FORTRAN I (1954-1957)
FORTRAN II (1958)
FORTRAN III (1958)
FORTRAN IV (1961)
FORTRAN 66 (1966)
FORTRAN 77 (1977)(ANSI standard)
FORTRAN 90 (1990)(ANSI standard)
FORTRAN 95 (1995)(ANSI standard)
FORTRAN 2000 (2000)
FORTRAN 2003 (2003)
FORTRAN 2008 (2008)
Programski primjer
! This program calculates the area of a tank, ! excluding the bottom. ! The variables are assigned as follows: ! ! R = RADIUS ! H = HEIGHT ! PI = 3.14159 ! A = AREA ! ! They are declared with the REAL statement below. REAL R,H,PI,A! The OPEN command associates the data file, "PANDAT.DAT", ! in folder "DATA" with logical device 5. If there is an ! error, statement 900 is executed. OPEN(5,FILE='C:DATAPANDAT.DAT',ACCESS='SEQUENTIAL',&STATUS='OLD',ERR=900)! This following section accumulates the sum of ! the input variables. ! The first command reads the data record and ! stores it in memory. DO READ(5,FMT=1,END=99)R,H! The next command describes the form and location ! of the data to be read. 1FORMAT(F4.2,F4.2)! The next statements assign values to the variables. PI=3.14159A=PI*R**2+2*PI*R*H! The next section writes the sums to the screen. ! The first command, PRINT, denotes which FORMAT ! statement is to be used, and the variables to be printed. PRINT 11,H,R,A! The following FORMAT statement describes how the ! data field is to be written. Notice the semicolon in column 6 ! which is used to denote continuation of the previous line. 11FORMAT(1X,'RADIUS= ',F6.2,10X,'HEIGHT= ',F6.1,10X,'AREA= ',&&F8.1)! The following statement completes the loop. END DO! The next section prints if the input data is invalid. 900PRINT 2121FORMAT(1X,'INVALID DATA')! Now we close the file and end program execution. 99CLOSE(5)STOP END
Programski jezik C spada u proceduralne programske jezike koji je razvijen u ranim 70-im godinama 20. stoljeća.
Povijest razvoja
Autor ovog programskog jezika je Dennis Ritchie, no značajan doprinos nastanku C-a dali su Ken Thompson kao autor programskog jezika B i Martin Richards, autor programskog jezika BCPL. Dennis Ritchie je stvorio ovaj programski jezik za rješavanje praktičnih problema kodiranja sistemskih programa i jezgre operacijskog sustava UNIX, koji je praktički u cijelosti napisan u C-u.
Dennis Ritchie i Ken Thompson
Programski jezik C dosta se mijenjao tokom godina te je u više navrata neformalno i formalno standardiziran. Prva važnija inačica poznata je pod nazivom “K&R C”, što je engl. kratica prezimena dvaju autora najpoznatijeg C priručnika “The C Programming Language”, a to su Brian Kernighan i Dennis Ritchie. Prvo izdanje te vrlo sažeto i precizno pisane knjige koje datira iz 1978. godine ujedno je de facto standardiziralo jezik u 70-ima. Drugo izdanje iz 1988. godine opisuje “ANSI C”, standard kojeg je 1983. godine definirao američki nacionalni institut za standardizaciju, a koji je i danas najbolje podržan. Donedavni je standard bio ISO/IEC standard skraćeno poznat kao “C99”, no krajem 2011. usvojen je ISO/IEC 9899:2011, poznat kao “C11”, za koji su kompajleri još u razvoju.
Kao jedan od najvažnijih jezika u povijesti komercijalne računalne industrije, C je do danas ostao jedini programski jezik prilagođen za sve računalne platforme, od malih sustava pa do mrežnih superračunala. Programi napisani u njemu vrlo su bliski načinu rada hardvera te u načelu zahtijevaju od programera dobro razumijevanje rada procesora, memorije, ulazno-izlaznih sklopova itd. No, rad s registrima procesora i adresiranje memorije apstrahirani su pomoću koncepta varijabli i pokazivača što uz eksplicitne kontrolne strukture i funkcije znatno olakšava programiranje u odnosu na izravno programiranje u strojnim jezicima.
Prvo izdanje knjige Programski jezik C, autora Kernigan, Ritchie
Proširivanje na objektno orijentirano programiranjae
Tokom 1980-ih, Bjarne Stroustrup zajedno s drugim istraživačima u Bell Labs proširuje C dodavajući sposobnosti objektno orijentiranog programiranja, a naziv ovog novog programskog jezika je C++. Nažalost, ta je 100%-na kompatibilnost ujedno i razlog što su problemi koje programiranje u C-u nosi sa sobom naslijeđeni u C++-u. Efikasno i sigurno programiranje u C-u vrlo je zahtjevna vještina koja traži višegodišnje iskustvo pa je stoga C jezik koji se ne preporučuje početnicima, posebice ako im programiranje nije primarni posao.
Uporaba
C je jezik opće namjene, što znači da se u njemu može napraviti apsolutno sve: od rješavanja zadataka, do pisanja drivera, operacijskih sustava, tekst procesora ili igara. C, kao jezik, ni u čemu ne ograničava. Omogućuje i uključivanje naredbi pisanih asemblerski, zbog čega je zajedno s mogućnošću direktnog pristupa pojedinim bitovima, bajtovima ili cijelim blokovima memorije, pogodan za pisanje sistemskog softvera. Zbog tih karakteristika C je među popularnijim programskim jezicima i rabe ga mnogi programeri. Rezultat toga je postojanje velikog broja prevoditelja za C i alata te stalno dostupne pomoći na internetu. Programi pisani u C-u su prenosivi (mogu se prevoditi i izvršavati na različitim porodicama računala uz minimalne ili nikakve ispravke) i obično su vrlo brzi. Postoje mnogi prevoditelji za jezik C, a jedan od najšire korištenih je GNU C Compiler.
Problemi
Mnogobrojni problemi vezani prije svega za upravljanje memorijom koje programer mora sam eksplicitno kodirati razlog su da je danas većina novih korisničkih aplikacija napisana u nekom modernijem jeziku koji ima ugrađeno automatsko upravljanje memorijom (engl. garbage collection), ne dopušta izravan rad s memorijom pomoću pokazivača te ima podršku za upravljanje kodom odnosno njegovom okolinom za vrijeme njegova izvođenja. Danas se relativno rijetko ukazuje potreba za pisanjem novih korisničkih aplikacija izravno u C-u, pa čak i u vrlo malim sustavima kao što su primjerice mobilni telefoni. Glavno područje njegove uporabe su sistemski programi na strani poslužitelja (engl. servers), programi prevoditelji (engl. compilers) i jezgre operativnih sustava (engl. operating system kernels), gdje je potreba za najvećom mogućom brzinom izvođenja, efikasnom kontrolom resursa i izravnom kontrolom hardvera od primarne važnosti.
bijeli razmaci: razmak, vodoravni razmak, Okomiti razmak, prekid stranice, nova linija
Prije pojave standarda C11 u programskom jeziku C u standardu nije bilo moguće umetnuti posebne znakove (UTF8), ratifikacijom standard C11 sada je moguće umetnuti posbene znakove u heksadecimalnom obliku uXXXX ili UXXXXXXXX.
Ključne riječi
Programski jezik C u standardu C89 ima samo 32 ključne riječi, ove riječi nije moguće primijeniti za variable ili za neke druge svrhe kao recimo imena funkcija, konstanti ili slično:
Najjednostavniji program je onaj koji zadani tekst ispisuje na ekran. Da bi se mogao ispravno napisati čak i tako jednostavan program, potrebno je poznavati strukturu programa odabranog programskog jezika.
Struktura programa odnosi se na način pisanja programa i ako se ona ne poštuje, program neće raditi, bez obzira na to što su uporabljene sve potrebne naredbe. Svaki program pisan u programskom jeziku C sastavljen je od niza funkcija. Glavna i jedina obavezna funkcija u programu je funkcija main( ). Program se može sastojati i od većeg broja funkcija.
Bitna razlika između C-a i ostalih programskih jezika je u tome što u C-u ne postoje ugrađene funkcije. One se nalaze u bibliotekama funkcija koje se isporučuju zajedno s prevoditeljem. Biblioteke funkcija nastale su standardizacijom C-a, pa je dovoljno na početku programa najaviti da će se upotrebljavati određena biblioteka i u cijelom programu dostupne su sve funkcije koje se u njoj nalaze. Tako se biblioteka u kojoj se nalaze funkcije za ulaz i izlaz podataka naziva stdio.h, matematičke funkcije nalaze se u biblioteci math.h, a funkcije za rad sa znakovnim varijablama u biblioteci string.h.
Na početku svakog C programa uobičajeno je pisati pretprocesorske naredbe kojima se pozivaju biblioteke funkcija koje se rabe u programu. Opći oblik te naredbe je: #naredba parametri. Najčešće upotrebljavana pretprocesorska naredba je: #include <ime datoteke> i obavezno se piše prije funkcije main( ). Prevođenjem programa na mjesto naredbe #include kopira se sadržaj navedene datoteke.
Isto tako, prije samog pisanja programa treba istaknuti da se programi napisani u C-u sastoje od niza međusobno povezanih funkcija čiji broj nije ograničen. U svakom programu je obavezna samo jedna funkcija – funkcija main( ) koja označava mjesto na kojem počinje izvršavanje programa. Početak i kraj funkcije označava se vitičastim zagradama. Nakon svake naredbe u C-u mora stajati znak ; koji (kao i u Pascalu) označava kraj jedne i početak druge naredbe.
Programski primjer
U sljedećem primjeru učitavaju se 2 broja, a nakon učitavanje na zaslonu se ispisuje njihov zbroj:
#include<stdio.h>intmain(void){inta,b;scanf("Prvi broj %d",&a);scanf("Drugi broj %d",&b);printf("Njihov zbroj je = %dn",a+b);return0;}
U sljedećem primjeru na zaslonu će se ispisati tablica množenja do 10:
Najčešće upotrebljavana funcija za ispis u C-u je ona za formatirani ispis: printf( ). Njezina sintaksa ima ovaj oblik:
printf("niz znakova koji se trebaju ispisati na zaslonu");
Zbog već istaknute specifičnosti C-a, koji sve funkcije ima pohranjene u bibliotekama funkcija, potrebno je pretprocesorskom naredbom #include najaviti uporabu biblioteke stdio.h u kojoj je pohranjena većina ulazno – izlaznih funkcija.
Primjer korištenja funkcije printf( ):
#include<stdio.h>main(){printf("Ispiši ovo na zaslon ekrana");}
Ispis vrijednosti
Sam ispis teksta rabi se vrlo rijetko. Namjena svakog programa je obrada podataka i prikaz rezultata te obrade (ispis dobivenih vrijednosti). Pri ispisu vrijednosti potrebno je definirati format ispisa. Njime se oblikuje način ispisa vrijednosti. Pojam formata usko je vezan za tipove podataka.
Podaci u C-u mogu biti:
cjelobrojni (int)
realni (float)
realni dvostruke točnosti (double)
znakovni (char)
tip podataka koji ne sadržava vrijednost (void)
Svaki od navedenih može biti s predznakom (signed) ili bez njega (unsigned). Opsegvrijednosti se može odrediti parametrima short i long, koji određuju krajnje vrijednosti svakog tipa. Razlika među njima je u broju bitova koje zauzimaju prilikom zapisa u memoriji:
Tip podataka
Vrsta
Predznak
Duljina (broj bitova)
Opseg
1
int
short
signed
2
-32768 do 32767
unsigned
2
0 do 65.535
long
signed
4
–2.147.483.648 do 2.147.483.647
unsigned
4
0 do 4.294.967.295
long long
signed
8
–9.223.372.036.854.775.808 do 9.223.372.036.854.775.807
unsigned
8
0 do 18.446.744.073.709.551.615
2
float
4
-3.4·10-38 do 3.4·1038
3
double
8
-1.7·10-308 do 1.7·10308
4
char
long
signed
8
-128 do 127
unsigned
8
0 do 255
5
bool
1
true (1) ili false (0)
6
void
0
bez vrijednosti
Za ispis vrijednosti upotrebljava se se funkcija printf( ) koja je oblika:
printf("lista formata",listavarijabli);
Najčešće korištene oznake formata za ispis:
Format
Značenje
1
%c
oznaka formata za ispis jednog znaka
2
%d
ispis cijelog broja
3
%f
ispis realnog broja
4
%lf
ispis realnog broja tipa double
5
%s
ispis niza znakova
6
%e
ispis realnog broja u E-notaciji
Izgled ispisa na zaslonu uređuje se unutar dvostrukih navodnika, a u listi varijabli dolazi samo popis varijabli. To prilično olakšava rad s kombiniranim ispisom, jer nema mnogo kompliciranja i kombiniranja naovodnika i zareza kao u ostalim programskim jezicima. Unutar navodnika kreira se izgled ispisa na ekran, a izvan njih redom se navode sve varijable čije se vrijednosti trebaju ispisati. Redoslijed oznaka formata mora odgovarati redoslijedu imena varijabli. Pogrešno zadan format u odnosu na deklaraciju varijable rezultirat će porešnim ispisom.
Primjer:
#include<stdio.h>main(){printf("n rezultat izraza %d+%d je %d",3,2,3+2);}
Na zaslonu će se ispisati:
rezultat izraza 3+2 je 5
Aritmetički operatori
U programskom jeziku C za zbrajanje se uoptrebljava aritmetički operator +. Preostali standardni aritmetički operatori u C-u su: -, *, / i %. Oni se rabe za matematičke operacije:
Operacija
Operator
1
zbrajanje
+
2
oduzimanje
–
3
množenje
*
4
dijeljenje
/
5
modulo (ostatak cjelobrojnog dijeljenja)
%
Viši prioritet imaju operatori %, * i /, a niži + i -. Rezultat dijeljenja dvaju cijelih brojeva u C-u je cijeli broj, pa zbog toga ne postoji potreba za posebnim operatorom cjelobrojnog dijeljenja.
Učitavanje podataka
Podatke u programu dijelimo na:
varijable – podaci čije se vrijednosti tijekom izvođenja programa mijenjanju
konstante – podaci čije se vrijednosti ne mogu mijenjati
Identifikatori
Varijablama, konstantama i funkcijama dodjeljujemo imena – identifikatore. Oni se sastoje od niza alfanumeričkih znakova (brojke i slova), od kojih prvi znak mora biti slovo ili donja crta (_). Dva identifikatora su različita ako se razlikuju u prva 32 znaka. Identifikatori ne smiju biti ključne riječi programskog jezika C. Programski jezik C razlikuje velika i mala slova, tako da su varijable a i A dvije različite varijable.
Za identifikatore nije moguće rabiti ključne riječi. One zajedno sa sintaksom programskog jezika određuju što se i na koji način u određenome programskom jeziku može učiniti. Ključnih riječi u C-u ima poprilično malo (32 ključne riječi definirane standardom ANSI C) no kasnije su proširivane tako da sada u modernim inačicama programskog jezika C ima 44, koje čine jezgru jezika i dovoljne su za rješavanje svih problema) i pišu se malim slovima.
Konstante
Konstane su vrijednosti koje se zadaju jedanput i ne mijenjaju se tijekom izvođenja programa. S obzirom na tipove podataka razlikuju se cjelobrojne, realne i znakovne konstante.
Cjelobrojne konstante su cijeli brojevi iz dopuštenog opsega, zapisani u standardnom obliku.
Realne konstante sadržavaju realne brojeve s predznakom ili bez njega, zapisane u standardnom obliku tako da decimalna točka odvaja cjelobrojni dio od decimalnoga. Mogu se zapisati i u eksponencijalom obliku. Pvi dio takvog zapisa je realan broj (s predznakom ili bez njega), zatim slovo e ili E i iza njega cijeli broj (s predznakom ili bez njega), npr. broj 0.02 može biti zapisan kao 2E-2.
Od numeričkih konstanti C dopušta još i oktalne i heksadekadske konstante. Oktalne konstane počinju s 0, a heksadekadske s 0x. (npr. 044 – oktalna, 0xaba – heksadekadska).
Znakovne konstante zadaju se unutar jednostrukih navodnika – literala ‘ ‘ i uglavnom se sastoje od jednog znaka (osim već spomenutih znakovnih konstanti koje se rabe za kontrolu ispisa). Vrijednost znakovne varijable odgovara numeričkoj vrijednosti koja odgovara ASCII kodu znaka koji se nalazi unutar jednostrukih navodnika. Tako je numerička vrijednost znakovne konstante ‘Z’ 90. Znakovne konstante mogu se pojavljivati u aritmetičkim izrazima i tada se upotrebljava isključivo njihova numerička vrijednost.
Osim navedenih tipova konstanti, programski jezik C definira i konstantu niza znakova (string constant), koja se sastoji od niza znakova unutar para navodnika, npr. “konstanta”.
Neke znakovne konstante za kontrolu ispisa:
f – nova stranica
n – novi red
r – povratak na početak linije
Funkcije za učitavanje
Za unošenje podataka s tipkovnice u C-u postoji nekoliko funkcija. Najčešće se rabi funkcija za formatirani unos podataka scanf( ). Njezina je sintaksa:
scanf("lista_formata",lista_varijabli);
Kao i kod funkcije printf( ), u listu formata upisuju se oznake formata za tip varijabli, a u listu varijabli popis imena varijabli istim redoslijedom kao u popisu formata. Varijable navedene u listi međusobno se odvajaju zarezom. Budući da se u C-u njihove vrijednosti prenose s pomoću adrese, ispred imena imena svake varijable treba dodati i adresni operator & (operator za dodjeljivanje adrese).
Oznake formata tipa varijabli jednake su onima koje se upotrebljavaju u ispisu, ali mora se paziti kako se odvajaju u listi formata, jer to određuje način unosa podataka pri izvođenju programa. Ako su oznake formata odvojene zarezom, i vrijednosti varijabli se prilikom unošenja podataka odvajaju zarezom. Ako nema zareza, vrijednosti se odvajaju razmakom.
Deklaracija varijabli u C-u
Podaci čije će se vrijednosti mijenjati tijekom izvođenja programa (varijable) moraju se prije sam uporabe najaviti (deklarirati). Deklaracijom se zadaju tip i ime varijable. Varijable se najčešće deklariraju na samome početku programa, ali to nije uvjet. Varijabla se u C-u može deklarirati izvan svih funkcija, na početku funkcije ili na početku bloka naredbi.
Opći oblik naredbe za deklaraciju jest:
tip_podatakalistavarijabli;
Tip_podataka jedan je od osnovnih ili korisnički definiranih tipova podataka, a lista_varijabli niz je imena varijabli (odvojenih zarezom) koje će tijekom izvršavanja programa sadržavati vrijednosti zadanog tipa podataka.
Naredbom za deklaraciju se u memoriji rezervira memorijska lokacija za svaku varijablu navedenu u listi varijabli. Veličina rezerviranog prostora ovisi o navedenom tipu podataka (2 bajta za broj tipa int, 4 za float…).
Tako se naredbama:
inta,b,c;floatx,y;
u memoriji rezervira 5 zasebnih lokacija. Za varijable a, b i c one su veličine 2, dok su za varijable x i y veličine 4 bajta.
Naredba pridruživanja
Naredbom pridruživanja varijablama se zadaju ili mijenjaju vrijednosti.
Operator pridruživanja u programskom jeziku C je =. Njegova je uloga da vrijednost izraza s desne strane pridruži varijabli na lijevoj strani. Operator pridruživanja ima najniži prioritet izvršavanja.
Opći oblik naredbe za pridruživanje vrijednosti je:
varijabla=izraz;
Več je rečeno da se varijable u C-u mogu najaviti izvan svih funkcija, na početku funkcije ili na početku bloka naredbi. Područje djelovanja određene varijable ovisi o mjestu na kojem je deklarirana, pa ovisno o tome, varijable mogu biti:
globalne – deklariraju se izvan svih funkcija i mogu se rabiti u cijelom programu
lokalne – varijable koje se deklariraju na početku funkcije ili kao argumenti funkcije i dostupne su samo u toj funkciji (ili bloku naredbi). Izvan funkcije ili bloka lokalne varijable ne postoje. Imena tih varijabli u različitim funkcijama ili blokovima mogu biti ista.
Definicijom globalne varijable automatski joj se dodjeljuje vrijednost 0, dok lokalne varijable ne sadržavaju početnu vrijednost i moraju se inicijalizirati posebnom naredbom tijekom deklaracije ili nakon nje (ali prije njezina prvog korištenja). Početne vrijednosti varijablama se dodjeljuju naredbom pridruživanja.
Primjer: Naredbom int a=5; deklarirana je cjelobrojna varijabla a i pridružena joj je početna vrijednost 5. Isti efekt postiže se ako se varijabla a deklarira (int a;) prije, a naknadno joj se dodijeli početna vrijednost (a=5).
LaTeX (čita se Latek) je programski jezik za dokumente i sustav za stvaranje dokumenata korištenjem uređivačkog program TeX. Koristi se u akademskoj zajednici kao i u izdavačkim tvrtkama, posebno zbog kvalitete krajnjeg produkta i bolje automatizacije tablica, figura i bibliografija. LaTeX je napisao Amerikanac Leslie Lamport kao zaposlenik tvrtke SRI International ranih 1980-ih i od tada je postao glavna metoda za korištenje TeX-a, jezika za formatiranje na niskoj razini.
Distribucije
Trenutno postoji nekoliko popularnih TeX distribucija koje uključuju LaTeX:
TeX Live – multiplatformska distribucija (Windows, Unix, OS X)
MacTeX – distribucija za operacijski sustav Mac OS X, bazirana na distribuciji TeX Live
MiKTeX, proTeXt, W32TeX – distribucije za operacijski sustav Windows