Friday, 05.03.2024, 11:32 AM
Welcome Guest

XXLBASKET

[ New messages · Members · Forum rules · Search · RSS ]
  • Page 1 of 1
  • 1
Forum » Računari » Programiranje » Uvod u programiranje i C ++ (Uvod u programiranje i C ++)
Uvod u programiranje i C ++
CUSTADatum: Thursday, 08.13.2009, 3:22 PM | Poruka # 1
Generalissimo
Grupa: Administrators
Poruke: 26
Ugled: 200
Status: Offline
Što je program?

Program je skup instrukcija koje računalo treba izvršiti.

Pojednostavljeni prikaz izvršavanja programa

Ulaz racunala cine dvije osnovne komponente: program i podaci. Racunalo slijedi instrukcije u programu i na neki nacin izvodi proces. Podaci su ono što smatramo ulazom programa. Npr.ako program zbraja dva broja, onda su ta dva broja podaci. Drugim rijecima, podaci su ulazprograma, a podaci zajedno sa programom cine ulaz racunala (putem operacijskog sustava). Kada racunalu zadamo da izvrši program i osiguramo podatke za program, ažemo da smo pokrenuli program za te podatke, a za racunalo kažemo da izvršava program na podacima. Pojam podatak opcenito oznacava svaku informaciju koja je racunalu na raspolaganju.

Jezici visoke razine

Za pisanje programa koriste se mnogi jezici. Mi cemo programirati u programskom jeziku C++. C++ je jezik visoke razine kao i vecina programskih jezika za koje ste culi (C, Java,Pascal, Visual Basic, FORTRAN, COBOL, Scheme, Lisp, Ada, PROLOG). Jezici visoke razine slice prirodnim jezicima u mnogo cemu. Oblikovani su tako da se covjeku programeru olakša pisanje i citanje programa. Jezici visoke razine kao što je C++ raspolažu sa instrukcijama koje su mnogo složenije od jednostavnih instrukcija koje može izvršiti procesor racunala (CPU). Jezik koji racunalo može razumjeti zovemo jezik niske razine. U pojedinim detaljima se jezici niske razine razlikuju na pojedinim tipovima racunala. Tipicna instrukcija niske razine izgleda ovako:

ADD X Y Z (Dodaj broj na memorijskoj lokaciji s imenom X broju na memorijskoj lokaciji s imenom Y i smjesti rezultat u memorijsku lokaciju Z)

Ova jednostavna instrukcija napisana je u asembleru. Iako je asembler gotovo isti kao jezik koji racunalo razumije, potrebno je prevesti rijeci u nizove jedinica i nula. Npr. ADD bi moglo biti 0110, X 1001, Y 1010, a Z 1011. Tako instrukcija koju racunalo razumije ima oblik:

0110 1001 1010 1011

Instrukcije asemblera i njihovi prijevodi razlikuju se od stroja do stroja. Za programe pisane pomocu 0 i 1 kažemo da su napisani u strojnom jeziku. To je verzija programa koju racunalo može citati i izvršavati. Asembler i strojni jezik su skoro isti jezici i za nas razlika izmedu njih nije bitna. Važna je razlika izmedu strojnog jezika i jezika visoke razine kao što je C++: Svaki program napisan na jeziku visoke razine mora se prevesti u strojni jezik prije da bi ga racunalo moglo razumjeti i izvršiti.

Prevoditelji (kompajleri)

Program koji prevodi jezik visoke razine kao što je C++ u strojni jezik zovemo prevoditelj (kompajler). Prevoditelj je posebna vrsta programa koji kao na ulazu ima jedan program, a na izlazu drugi program. Ulazni program se obicno zove izvorni kod ili izvorni program, a prevedenu verziju koju kreira prevoditelj zovemo objektni (ciljni) program ili objektni (ciljni) kod. Rijec kôd oznacava program ili dio programa i tu rijec cesto koristimo kada govorimo o objektnom programu (objektni kod). Prevoditelj izvorni kod tretira kao dugi niz znakova, a na izlazu daje drugi dugi niz znakova – ekvivalent izvornom programu u strojnom jeziku. Kada pokrenemo objektni program u strojnom jeziku, kao izlaz dobivamo ono što smatramo izlazom C++ izvornog programa.
U stvarnosti se isto racunalo koristi dva puta (prevodenje, izvršavanje). Prevoditelj (kompajler) - program koji prevodi program napisan na jeziku visoke razine, kao što je C++ u program u strojnom jeziku koji racunalo direektno razumije i izvršava. Potpuni proces prevodenja i izvršavanja C++ programa je nešto složeniji. Svaki C++ program koristi neke operacije (npr. ulazno i izlazne procedure) koje su vec isprogramirane. Te su procedure vec i prevedene i njihov objektni kod se samo kombinira sa objektnim kodom našeg programa da bi dobili potpuni program u strojnom jeziku koji se može izvršiti na racunalu. Poseban program koji zovemo povezivac (linker) kombinira objektni kod ovih dijelova sa objektnim kodom koji prevoditelj daje na temelju C++ programa.

Programiranje i rješavanje problema

1. Algoritmi

Kada pocinjete uciti vaš prvi programski jezik dobivate dojam da je najteži dio rješavanja problema na racunalu prevodenje vaših ideja u specificni jezik kojim komunicirate s racunalom. To nije ni izdaleka tako kako se cini. Najteži dio rješavanja problema na racunalu je otkrivanje postupka rješavanja problema. Kada ste kreirali postupak rješavanja problema, rutinski je postupak prevesti postupak rješavanja u traženi jezik, C++ ili neki drugi jezik. Zato je korisno privremeno zanemariti programski jezik i koncentrirati se na formulaciju koraka rješenja i zapisati ih na prirodnom jeziku, kao da instrukcije pišemo za covjeka, a ne za racunalo. Niz instrukcija izraženih na ovaj nacin zovemo algoritam.

Algoritam je niz preciznih instrukcija koji vodi do rješenja.

Instrukcije možemo izraziti u programskom jeziku ili na prirodnom jeziku. Algoritme cemo izražavati na hrvatskom jeziku, engleskom jeziku i u programskom jeziku C++. Racunalni program je algoritam izražen u jeziku koji racunalo razumije. Pojam algoritma je puno širi od pojma programa.
Pogledajmo primjer tipicnog algoritma :

Algoritam koji odreduje koliko puta se ime pojavljuje u listi imena :

1. Ucitaj listu imena.
2. Ucitaj ime koje treba pronaci u listi.
3. Postavi brojac na nulu.
4. Napravi slijedece za svako ime u listi:
Usporedi ime u listi sa imenom koje se traži i ako je ime u listi jednako ovecaj
brojac za 1.
5. Kao rezultat objavi vrijedost brojaca.

Ovaj algoritam se cesto koristi kada pretražujemo listu prema odredenom kljucu. Npr. u listi pobjednickih sportskih momcadi tražimo odredenu momcad i provjeravamo koliko puta se pojavila u listi – broj ostvarenih pobjeda.
Instrukcije od 1 do 5 se izvršavaju redosljedom kojim su navedene (ako nije drugacije naznaceno). Najzanimljiviji algoritmi ipak specificiraju neu promjenu poretka izvršavanja – obicno ponavljanje neke instrukcije kao što je instrukcija 4 u primjeru. Rijec algoritam ima dugu povijest. Nastala je od imena perzijskog matematicara i astronoma po imenu al-Khowarizmi. Danas se rijec algoritam može primijeniti na široki raspon instrukcija za manipuliranje sa simbolickim i numerickim podacima. Da li skup instrukcija predstavlja algoritam ovisi o prirodi instrukcija, a ne o podacima s kojima one manipuliraju. Da bi ga mogli smatrati algoritmom skup instrukcija mora potpuno i jednoznacno specificirati korake postupka i redoslijed koraka.

2. Oblikovanje programa

Oblikovanje programa je cesto težak zadatak. Nema potpunog skupa pravila o pisanju programa. Pisanje programa je kreativan proces. Ipak možemo slijediti odredeni plan rada.

Proces oblikovanja možemo podijeliti u dvije faze:

1. Faza riješavanja problema
2. Faza izvedbe

Rezultat faze riješavanja problema je algoritam za riješavanje problema, izražen naprirodnom jeziku. Da bi proizveli program u programskom jeziku C++, algoritam prevodimo u programski jezik. Izrada konacnog programa na temelju algoritma je faza izvedbe. Najprije moramo provjeriti da je zadatak koji program mora izvršiti potpuno i precizno specificiran. Ako niste sigurni što je izlaz vašeg programa, mogao bi vas rezultat programa iznenaditi. Provjerite kakvi su ulazni podaci vašeg programa i kakve odgovarajuce izlazne podatke trebate dobiti za njih. Programu treba dostaviti sve potrebne podatke da bi mogao izvršiti zadani postupak. Ulazne i odgovarajuce izlazne podatke obicno pripremamo rucno i zovemo ih test podacima. Test podaci trebaju biti potpuni da bi mogli provjeriti rad programa za sve moguce slucajeve ulaznih podataka. Mnogi programeri pocetnici ne razumiju da je potrebno oblikovati algoritam prije pisanja programa u programskom jeziku kao što je C++, pa preskacu fazu riješavanja problema ili samo definiraju problem. To medutim ne štedi vrijeme, vec naprotiv vodi do dugotrajnije izrade ispravnog programa. Cak i za jednostavne programe pravilnim pristupom možemo
uštedjeti i do ukupno pola dana posla i nekoliko frustrirajucih dana traženja grešaka u programu kojeg slabo razumijemo.

Faza izvedbe nije trivijalan korak. Jednom kada se naviknete na C++ ili neki drugi programski jezik, prijevod algoritma sa prirodnog jezika u programski jezik postaje rutina. Stjecanje rutine najcešce se navodi kao garancija uspješnog programiranja. Testiranje se dakle provodi u dvije faze. Rucno testiranje algoritma možemo provesti misaonim putem ili uz uporabu olovke i papira (za velike programe). Testiranje C++ programa provodimo prevodenjem i pokretanjem programa na racunalu za pripremljene test
podatke. Prevoditelj ce nas obavijestiti putem poruka o kojem se tipu sintakticke greške radi. Da bi otkrili druge tipove grešaka moramo dobro pripremiti test podatke.

 
Forum » Računari » Programiranje » Uvod u programiranje i C ++ (Uvod u programiranje i C ++)
  • Page 1 of 1
  • 1
Search: