cppizradbaprograma.pptx

Download Report

Transcript cppizradbaprograma.pptx

PROGRAMIRANJE
1
• Program je niz naredbi računalu koje
poredane u ispravnom redosljedu omogućuju
računalu da obavi neki zadatak
• Program pišu programeri u programskim
jezicima
• Programiranje- kodiranje, pisanje programa
• Za nastanak programa treba problem razbiti
na niz jednostavnih koraka (naredbi) koje će
računalo moći izvršiti
Generacije programskih jezika
1.
strojni jezici (naredbe od 1 i 0) –prvi jezik za programiranje- jedini jezik koji računalo razumije
2.
simbolički jezici - programer koristi riječi za operacije i nepoznanice za podatke
npr: ADD X,Y umjesto 0110 001110 010101
3.
viši programski jezici – umjetno stvoreni jezici: 1 naredba zamjenjuje skup naredbi strojnog
jezika
Phyton, Java, C, C++, BASIC, Pascal
• Kompajleri- programi koji prevode naredbe iz programskih jezika u strojni jezik- kreiraju izvršni kod
4. Objektno orijentirani programi
•
Ovi programi se stvaraju slaganjem gotovih dijelova- objekata (object class). Primjer za to su Visaula
Basic, Visual C.
Etape programiranja
• Definiranje problema -napisati program koji će …..
Analiza problema – što su ulazni a što izlazni
podaci
• Izrada algoritma- formule?, način?, strategija?
• Pisanje programa - kodiranje
• Prevođenje programa
• Testiranje programa
• Izrada dokumentacije
• Održavanje programa
• Izrada algoritma- najteži dio programiranja!!
• NAUČITI PROGRAMIRATI- RAZVITI
ALGORITAMSKI NAČIN RAZMIŠLJANJA
• UPOZNATI SE SA NEKIM OSNOVNIM
POSTUPCIMA DA BI IH ZNALI PRIMIJENITI
• CILJ: VIDJETI MNOGO POSTUPAKA I
ALGORITAMA
• ONO ŠTO NISTE NIKADA VIDJELI NE MOŽE
VAM PASTI NAPAMET
• Programiranje se obično uči skupa s nekim
programskim jezikom
C++
• Jezik opće namjene za profesionalnu uporabu razvijen
80-ih godina prošlog
stoljeća u laboratoriju
telekomunikacijske
tvrtke Bell.
• Autor jezika - Bjarne Stroustrup.
• Komercijalna distribucija jezika
predstavljena je u knjizi:
The C++ Programming Language.
6
Izradba programa
• Postupak izradbe programa :
1. pisanje izvornog koda,
2. prevođenje izvornog koda,
3. povezivanje u izvršni kod,
4. izvršavanje i provjera programa.
7
Integrirana razvojna okruženja
• Za svaki od navedenih koraka - posebni
program.
• Umjesto uporabe odvojenih programa, rabe
se integrirana razvojna okruženja (engl.
integrated development environment, IDE).
• IDE objedinjuju programe za pisanje izvornog
koda, prevođenje, povezivanje, pohranu,
izvršenje i pronalazak pogrešaka.
8
C++ ide
• Postoje razna integrirana razvojna okruženja.
Primjeri nekomercijalnih su:
9
C++ nekomercijalni ide
• CodeBlocks
http://www.codeblocks.org/
• Orwell Dev-C++
http://sourceforge.net/projects/orwelldevcpp/
• Eclipse
http://www.eclipse.org/downloads/packages/eclipse-ide-cc-developers/lunasr1
• Besplatna verzija Visual C++
http://www.visualstudio.com/en-US/products/visual-studio-express-vs
10
Datoteka izvornog koda
• Izvorni je kod moguće pisati u bilo kojem
programu za uređivanje teksta (engl. text editor).
Nastavak koji dobiva
datoteka je *.cpp
11
Prevođenje izvornog koda
• Program prevoditelj prevodi izvorni kod u
objektni kod (međukorak do strojnog jezika) te
provjerava sintaksu napisanog izvornog koda.
• Prevođenjem nastaje datoteka
objektnog koda
(engl. object code).
• Nastavak koji dobiva je *.o
12
Povezivanje
• Datoteka objektnog koda nije izvršni (engl.
executable) program i ne može se izravno izvršiti
na računalu.
• U izvršni je oblik pretvara program povezivač
(engl. linker) povezujući objektnu datoteku s
bibliotekama i drugim potrebnim datotekama.
13
Biblioteke
• Biblioteke (engl. libraries) su datoteke koje
sadrže gotove, prevedene funkcije.
• Pod pojmom funkcije podrazumijeva se niz
naredaba koje obavljaju točno utvrđeni
zadatak.
• Unaprijed pripremljene funkcije mogu se rabiti
u drugim programima tako da ih se uključi iz
postojećih biblioteka.
14
pogreške
• Prilikom prevođenja prevoditelj provjerava
sintaksu izvornog kôda i javlja pogreške ako ih
nađe.
• Ove pogreške zovu se pogreške pri prevođenju
(engl. compile-time errors).
• I povezivač može otkriti pogrešku prilikom
povezivanja. To su pogreške pri povezivanju (engl.
link-time errors).
15
Izvršna datoteka
 Krajnji rezultat je izvršna datoteka (*.exe)
• U
načelu,
izvršnoj
datoteci nisu potrebni
nikakvi dodaci pa se
može izvršavati i bez
izvornog
programa,
prevoditelja, povezivača,
biblioteka itd.
16
Logičke pogreške
• Tijekom rada se osim sintaktičkih pogrešaka i
pogrešaka povezivanja mogu javiti i logičke
pogreške.
• Za otkrivanje logičkih pogrešaka (engl. run-time
error) potrebno je provjeriti program s
podacima za koje je unaprijed poznat krajnji
rezultat.
• Ove se pogreške ispravljaju analizom algoritma.
17
Osnovi elementi jezika c++
Tipovi podataka
Postoji 5 osnovnih tipova podataka:
Tip podataka
Oznaka
Broj bitova
opseg
Znakovni
char
8
1-255
Cjelobrojni
int
16
-32768-32767
Realni
float
32
3.4E-38-3.4E+38
Realni dvostruke preciznosti
double
64
1.7E-308-1.7E+308
Podatak koji ne sadrži
vrijednost
void
0
Bez vrijednosti
varijabla
• Varijabla je imenovani dio memorije.
• Podatak koji će u programu poprimiti neku
konkretnu vrijednost a koju ne mora zadržati
do izlaza nazivamo varijabla. (varijabilnopromjenjivo)
Svaka varijabla koja će se koristiti u programu (koja nam je potrebna )
mora se na početku programa deklarirati
Deklarirati varijablu znači imenovati i jednoznačno odrediti njezin tip tj
smisliti ime i reći kojeg je tipa
tip podataka
int aa,b,ce;
float x,y,z,B;
char c;
lista varijabli ;
float a,b,P,O;
C razlikuje velika i mala slova ( Ime , IME – su dvije različite varijable)
Konstanta
U programima se koriste vrijednosti koje se tijekom odvijanja programa ne smiju
mijenjati. Takve se vrijednosti nazivaju konstante
Konstante se mogu spremiti u rezervirana mjesta u memoriji zbog lakšeg
rukovanja s njima.
const
Konstantu treba zaštititi od mogućih neželjenih promjena tijekom odvijanja
programa. Za zaštitu se koristi ključna riječ const koja se dodaje ispred oznake
tipa varijable.
Npr.:
const float pi = 3.141593
21
==
>
>=
<
<=
!=
+
*
/
++
-%
jednako
veće
veće ili jednako
manje
manje ili jednako
različito
zbrajanje
oduzimanje
množenje
dijeljenje
uvećaj za jedan
umanji za jedan
Modul djeljenja
% modulo ( ostatak kod cjelobrojnog dijeljenja) 20%7=6
Prioritet izvršavanja operacija:
*,/,%
+,-,
Operatori increment i decrement
Increment znači uvećavanje za 1 i piše se ++
Decrement znači umanjenje za 1 i piše se -Primjenjuju se sami na varijable i nije svejedno da li se nalaze ispred ili iza
varijable.
Pr: a=1
B=++a+3
( 1+3 =4 pa se uveća za 1 i B=5)
++ ispred varijable znači da se uvećava za 1 pa se tek onda završava izraz
a=1
B=a++ +3
(B=4)
++ iza varijable znači da se završi izraz a nakon toga se uvećava varijabla
23
Relacijski i logički operatori
< ,> , ==,>=, <=,!=(različito)
&& je logički i (AND)
|| je logičko ili (OR)
rezultat izračunavanja logičkog izraza je logički podatak koji si možemo predočiti
riječima "istina"……..1 ili "laž"…..0
a
0
1
0
1
Pr: x=10, y=5
(x>y)||(y>100)……..1
(x>y)&&(y>100) …….0
Prioritet logičkih operatora:
! negacija
> >= < <=
== !=
&& -* / %
|| + -
a
0
1
0
1
b
0
0
1
1
b
0
0
1
1
a&&b
0
0
0
1
a||b
0
1
1
1
a
0
1
!a
1
0
24
Funkcije
Da bismo ih koristili trebamo uključiti biblioteku matematičkih funkcija
#include<cmath>
Neke funkcije:
fmod (djeljenik, djelitelj); Funkcija računa ostatak dijeljenja dva realna broja.
pow (baza, eksponent);
Funkcija računa potenciju baza na eksponent.
sqrt (x);
Funkcija računa kvadratni korijen argumenta x.
abs(x);
funkcija računa apsolutnu vrijednost broja x
sin(x);
funkcija računa sin kuta x zadanog u radijanima
25
Program počinje naredbom include i navođenjem imena biblioteka koje
kompajler treba uzeti prilikom izvođenja programa
include<iostream>
ako ćemo imati bilo koju naredbu unosa i izlaza
include <cstdlib>
poziv standardnih funkcija
using namespace std;
int main()…………naredba za početak programa
sve varijable moramo deklarirati prije početka programa
Cijeli program je zatvoren u bloku koji počinje sa { a završava sa }
Za poziv funkcije u C-u dovoljno je navesti ime funkcije. Ako navedena
funkcija nema argumenata, onda se označava sa ().
Nakon svake naredbe u C-u mora stajati oznaka ;. Ona označava kraj
jedne i početak druge naredbe. Ova oznaka kraja naredbe naziva se još
i graničnik (terminator).
Niz naredbi grupiranih u jednu logičnu cjelinu predstavlja blok naredbi.
Početak bloka nared naredbi označava se znakom { , a završetak } .
Možemo za slične naredbe koristiti copy-paste sistem – izbornik Edit
26
Naredba ulaza i izlaza
Izlazna naredba:
cout
Podaci se na zaslon monitora ispisuju pomoću
funkcije cout i operatora ispisa <<. Npr.:
cout<<13;
Operator endl ………prebacuje kurzor nakon
ispisa u novi red
Ulazna naredba:
cin
Podaci se sa tipkovnice čitaju pomoću funkcije
cin i operatora unosa >>. Npr.:
cin>>x;
cin>>a>>b>>c;………..kada unosimo varijable
možemo ih unijeti u jednom retku odvojeno
prazninama ili sa razmakom enter
cout <<"Ovo je moj tekst";
cout <<"Ovo je moj drugi tekst";
int a,b,c;
cin >>a;
cin >>b;
c=a+b;
cout <<c;
Uljepšajmo program tako da dopišemo naredbe ispisa prije unosa
varijabli
Dopiši
cout <<“unesi prvi broj“;
Dopiši
cout <<“unesi drugi broj“
1. Potrebno je unijeti troznamenkasti
broj i ispisati sumu njegovih znamenaka
• Pr N=123
• Znamenka jedinice je ostatak kod dijeljenja
broja sa 10
• J=n%10
• n/10 =12 ako se radi o cijelim brojevima
• D=n/10%10
• S=n/100
31
2. Unijeti 2 dvoznamenkasta broja i načiniti jedan
četveroznamenkasti broj koji se dobije kada spojimo ulazna 2
• Pr 12, 35
• 1235
3. Unijeti jedan troznamenkast broj i ispisati ga naopako
Pr: 123
Treba ispisati 321
4. Treba unijeti jedan troznamenkast broj i ispisati novi koji ima
sve tri iste znamenke koje su jednake znamenki desetica ulaznog
broja
Pr:
123
Treba ispisati 222
5. Zamjena vrijednosti dviju varijabli
• Unijeti a,b
• Na kraju programa u varijabli a mora biti b, a u
varijabli b mora biti a
• a=b;
• b=a; je pogrešno
• Pr a=2, b=3
• a=b ………….a=3
• b=a……………..b=3
Postoje 2 algoritma zamjene varijabli
Unijeti a,b
Upotrijebiti pomoćnu
varijablu
pom=a;
a=b;
b=pom;
Unijeti a,b
a=a+b
b=a-b
a=a-b
Naredba grananja
• Struktura grananja se može ostvariti
naredbama:
– if (if – else, if – else if - else)
– switch – case.
• 1. IF- naredba
• Naredba if omogućava uvjetno grananje programa.
• Daljnji tijek programa ovisi o ispunjenju uvjeta
navedenog iza ključne riječi if.
• Uvjet (logički izraz) se upisuje unutar para okruglih
zagrada.
• Na kraju naredbe if ne stavlja se znak ;
• Ako uvjet nije istinit program ide na naredbu ispod.
if(uvjet)
{
blok naredbi;
}
If(uvjet)
{
blok naredbi1
}
else{
blok naredbi 2;
}
Zadatak1:Treba upisati cijeli broj različit od 0. Treba
provjeriti je li broj paran ili neparan.
#include <cstdlib>
include<iostream>
using namespace std;
int main(int argc, char *argv[])
{
int a;
cout<<"Upisi broj razlicit od 0:";cin>>a;
if (a%2==0)
cout<<" Uneseni broj je paran ."<<endl;
else
cout<<" Uneseni broj je neparan."<<endl;
system("PAUSE");
return EXIT_SUCCESS;
}
Zadatak2:Napiši program koji će
učitati tri broja i ispisati najmanji
•
•
•
•
Pisanje složenog uvjeta
(a<b)&&(a<c) min=a;
(b<c)&&(b<c) min=b;
(c<a)&&(c<b) min=c;
Zadatak3:Napiši program koji će učitati
tri broja i ispisati ih poredane po veličini
•
•
•
•
•
•
•
Naći najmanji…………min
Naći najveći……………max
Provjeriti srednjega………..mid
if ((a!= max)&&(a!= min)) mid=a;
if ((b!= max)&&(b!= min)) mid=b;
if ((b!= max)&&(b!= min)) mid=b;
cout<<min<<mid<<max;
Zadatak: Napišite program koji učitava prirodni četveroznamenkasti broj. Ako su druga i
četvrta znamenka broja parne, program treba ispisati dvoznamenkasti broj koji cine te dvije
znamenke. Ako su druga i četvrta znamenka broja neparne, program treba ispisati
dvoznamenkasti broj koji cine te dvije znamenke obrnutim redoslijedom. Npr. ako je učitan
broj :
a) 3468, program treba ispisati 48
b) 2521, program treba ispisati 15
Ako nije nastupio niti jedan slučaj od a) i b) program treba ispisati poruku : „Nije se
desio niti jedan traženi slučaj“
Zadatak: Novčić se baca četiri puta. Ishod bacanja novčića može biti glava ili pismo.
Napisati program koji učitava četiri znaka koji predstavljaju rezultate četiri bacanja novčića
(znakovi 'G' ili 'P'). Program treba ispisati koliko puta u postocima se pojavila glava, a koliko
pismo. Npr. ako se učitaju sljedeći znakovi: 'G', 'G', 'G' i 'P', program treba ispisati „U 75%
slučajeva se pojavila glava, u 25% pismo“.
pomoć: deklarirati 4 znakovne varijable char z1,z2,z3,z4;
učitati 4 znaka sa tipkovnice ( samo slova G i P ) . Program neka očekuje samo velika
tiskana slova
prebrojiti ulaze za G i za P
izračunati postotke
Zadatak: Napiši algoritam kojim će se učitati tri broja od kojih su dva
jednaka. Ispisati treba:
a) različit broj
b) jednake brojeve
Zadatak: Treba unijeti koeficijente kvadratne jednadžbe, pa ovisno o njihovim
vrijednostima izračunati i ispisati rješenja. Važno je provjeriti vrijednost koeficijenta a,
ako je a=0, jednadžba nije kvadratna.
Treba provjeriti predznak diskriminante jer on određuje hoće li rješenja kvadratne
jednadžbe bit realni ili kompleksni brojevi. Ispis neka bude oblika:
Upisi koeficijent a:
Upisi koeficijent b:
Upisi koeficijent c:
Rijesenja su realni brojevi:
x1=... i x2=...
ili
Rjesenja su kompleksni brojevi:
z1=...+...i, z2=...-...i
ili
Ako je koeficijent a=0, jednadzba nije kvadratna.