Upload
morag
View
151
Download
0
Embed Size (px)
DESCRIPTION
C++ in Visual C++. What is the difference between C++ and Visual C++? C++ is the language itself, Visual C++ is a compiler that tries to implement the language. http://www.parashift.com/c++-faq-lite/compiler-dependencies.html#faq-38.5. C++ in Visual C++. - PowerPoint PPT Presentation
Citation preview
Programiranje s C++
C++ in Visual C++
What is the difference between C++ and Visual C++? C++ is the language itself, Visual C++ is a compiler that tries to implement the language.
http://www.parashift.com/c++-faq-lite/compiler-dependencies.html#faq-38.5
Programiranje s C++
C++ in Visual C++What is the difference between C++ and Visual C++? C++ is a programming language. Visual C++ is Microsoft's implementation of it. When people talk about learning Visual C++, it usually has more to do with learning how to use the programming environment, and how to use the Microsoft Foundation Classes (MFCs) for Windows rather than any language issues. Visual C++ can and will compile straight C and C++. (http://www.faqs.org/faqs/C-faq/learn/)
Programiranje s C++
C++ in Visual C++How do I BEGIN to write C or C++ under Visual or Borland C++? This question is, strictly speaking, off-topic, but is answered here since it's one that seems to plague many beginners. To start with, you need to make sure that you are not writing a Windows application. Try creating a new project or application to target MS-DOS, QuickWin or Win32 Console depending on your compiler version. You can then use the Standard C and C++ libraries to write strictly conforming programs. It's best to learn to write standard-conforming programs first before branching off into writing Windows programs. If you find that you are having a lot of trouble setting up your compiler, a good place to ask questions is a newsgroup devoted to your compiler. (http://www.faqs.org/faqs/C-faq/learn/)
Programiranje s C++
Funkcije
Neja Zupan
Programiranje s C++
Navodila za avto
Programiranje s C++
Top-Down pristop
ponavljaj
vnesi ure dela
vnesi urno postavko
izračunaj dnevni zaslužek
vprašanje “novi podatki?”
ponavljaj do odgovora “ne”
Programiranje s C++
Kdaj uporabiti funkcijo?
ponavljaj
vnesi ure dela
vnesi urno postavko
pokliči funkcijo izrac_zas(ura,cena,placa)
vprašanje “novi podatki?”
ponavljaj do odgovora “ne”
Programiranje s C++
Prednosti
• top-down pristop (večji problem razdelimo na več manjših)
• možnosti ponovne uporabe funkcij v drugih programih (library)
• timsko delo, delitev nalog glede na področje znanja
FUNKCIJA
vhod 1
vhod 2
vhod 3
izhod 1
izhod 2
izhod 3
Programiranje s C++
Prednosti
• program preglednejši in razumjlivejši
• ni ponavljanja enakega zaporedja stavkov
• lažje in kvalitetnejše testiranje• funkcije lahko izvršujemo poljubno
mnogokrat
FUNKCIJA
vhod 1
vhod 2
vhod 3
izhod 1
izhod 2
izhod 3
Programiranje s C++
Naloga
• Tek na smučeh: vsak tekač štarta posebej.• Za vsakega tekača posebej je izmerjen čas
začetka teka in čas v cilju v urah, minutah in sekundah.
• Število tekačev je znano in znana je dolžina proge v kilometrih.
Napišite psevdo kodo tako, da se za vsakega tekača s štartno številko izpiše njegovo ime, čas štarta in čas v cilju, porabljen čas za tek v minutah in hitrost teka. Nakažite, katere korake lahko povežemo v funkcijo.
Programiranje s C++
Psevdokoda
Ponavljaj tolikokrat,kot je tekačev
izpiši startno številko, ime
izpiši čas starta, čas v cilju
kliči funkcijo za porabljen čas za tek
kliči funkcijo za hitrost teka
izpiši čas teka in hitrost
Konec
Programiranje s C++
Funkcija
• V algebri funkcija pove odnos med vrednostmi: neodvisno in odvisno spremenljivko
• f(x) = 2x + 5, pomeni f(1) = 7, f(2) = 9, and f(3) = 11
• 1, 2, in 3 so argumenti
• 7, 9, in 11 so vrednosti funkcije
Programiranje s C++
Vrste funkcij
• funkcija main()• preddefinirane funkcije (knjižnice) – funkcije brez
podatkovnega tipa• funkcije, ki jih napiše programer (FP)
– vrne vrednost– ne vrne ničesar
tip ime (argumenti) { stavki;}
TIP_KI_GA_FUNKCIJA_VRAČA IME_FUNKCIJE (TIP_PARAMETRA1 IME_PARAMETRA1, TIP PARAMETRA2 IME_PARAMETRA2, TIP_PARAMETRA_N IME_PARAMETRA_N){// PROGRAMSKA KODA (TELO)}
Programiranje s C++
FUNKCIJE
DEFINIRA PROGRAMER
PRED-DEFINIRANE
MAIN
NE VRNE VREDNOSTI
VRNE VREDNOST
Programiranje s C++
Preddefinirane funkcije
• Preddefinirane funkcije so organizirane v posebnih knjižnicah
• Preddefinirane funkcije se nahajajo v glavi programa
Programiranje s C++
Standard C++ Library <algorithm><bitset><cassert><cctype><cerrno><cfloat><ciso646><climits><clocale><cmath><complex><csetjmp>
<hash_set><iomanip><ios><iosfwd><iostream><iso646.h><istream><iterator><limits><list><locale><map><memory>
<csignal><cstdarg><cstddef><cstdio><cstdlib><cstring><ctime><cwchar><cwctype><deque><exception><fstream><functional><hash_map>
<new><numeric><ostream><queue><set><sstream><stack><stdexcept><streambuf><string><strstream><utility><valarray><vector>
http://msdn2.microsoft.com/en-us/library/ct1as7hw(VS.80).aspx
Programiranje s C++
math.h
• Funkcija kvadratni koren sqrt(x) – izračuna kvadratni koren pozitivnega števila x >= 0.0 – sqrt(2.25) je 1.5 – ima en parameter in je tipa double
• Funkcija floor(x) – vrne najvišje celo število, ki ni večje od x– floor(48.79) je 48.0 – ima en parameter in je tipa double
Programiranje s C++
math.h
• Funkcija pow(x,y)– izračuna potenco števila x; potenca je y– pow(2,3) = 8.0– ima dva parametra (x in y) in je tipa double
Programiranje s C++
cmath.h• acos(x) • asin(x)• atan(x) • cos(x) • sin(x)• tan(x)• exp(x) • log(x)• sqrt(x)• fabs(x) • floor(x)• ceil(x)
Programiranje s C++
FUNKCIJE
DEFINIRA PROGRAMER
PRED-DEFINIRANE
MAIN
NE VRNE VREDNOSTI
VRNE VREDNOST
Programiranje s C++
FP• FP: funkcije, ki jih definira programer• Void funkcija – nima podatkovnega tipa• Funkcije, ki vrnejo vrednost – so določenega
podatkovnega tipa– vključimo jih z navedbo #include, če so shranjene v
drugi datoteki– imajo ime– imajo točno določeno število parametrov (lahko tudi 0)– vsi parametri so določenega tipa– funkcija je določenega tipa
Programiranje s C++
FP-vrne vrednost
• Vrednost, ki jo funkcija vrne: – shranimo za nadaljne izračunavanje– uporabimo v nadaljnjih izračunih (Vrednost
funkcije lahko priredimo v stavku)– natisnemo
• Deklaracija funkcije je zelo pomembna
functionType functionName(formal parameter list)
{
statements;
}
Programiranje s C++
FP-vrne vrednost
• Sintaksa parametrov:– podatkovniTip1 ime1, podatkovniTip2 ime2
• Sintaksa klica funkcije:– ime funkcije(lista parametrov)
• Sintaksa parametrov v klicu funkcije:– spremenljivka ali izraz
Programiranje s C++
FP-vrne vrednostTipFunkcije ImeFunkcije (lista parametrov) { lokalne definicije; implementacija funkcije; }
float razdalja(float x, float y)// vrne razdaljo med točko T(x,y) in koordinatnim izhodiščem
{
float raz; //lokalna spremenljivka
raz = sqrt(x * x + y * y);
return raz;
}
Programiranje s C++
FP
// function example
#include <iostream>
int odstevanje (int a, int b)
{
int r;
r=a-b;
return (r);
}
int main ()
{
int x=5, y=3, z;
z=5;
z = odstevanje (7,2);
cout << “Prvi rezultat je " << z << '\n';
cout << “Drugi rezultat je " << odstevanje(7,2) << '\n';
cout << “Tretji rezultat je " << odstevanje(x,y) << '\n';
z= 4 + odstevanje (x,y);
cout << “Cetrti rezultat je " << z << '\n';
return 0;
}
Programiranje s C++
Analiza programa
• z = odstevanje (7, 2);
• int odstevanje (int a, int b)
5
Programiranje s C++
FP
#include <iostream.h>
#include <iomanip.h>
#include <math.h>
// deklaracija funkcije
float razdalja(float,float);
void main()
{
float x,y,raz;
cout << “Testiranje razdalje tocke(x,y)" << endl;
cout << “Vnesite vrednost tock x in y: ";
cin >> x >> y;
raz = razdalja(x,y);
cout << “Razdalja tocke (" << x << ',' << y
<< ") od izhodisca " << raz << endl;
} // konec main
// definicija funkcije
float razdalja(float x, float y)
{
float raz;
raz = sqrt(x * x + y * y);
return raz;
}
Programiranje s C++
Analiza programa
• raz = razdalja (x, y);
• float razdalja(float x, float y)
Programiranje s C++
FP
/*Izris trikotnika neke visine*/
#include <iostream.h>
void NarisiTrikotnik(int visina) //visina je vhodni argument
{ //funkcija izriše trikotnik velikosti visina
for (int i=1; i<=visina; i++)
{
for (int j=0; j<i; j++) cout << "*";
cout << endl;
}
}
int main()
{
int h; //deklaracija visine trikotnika
cout << "Vpisi visino trikotnika:";
cin >> h;
//Klic funkcije z argumentom
NarisiTrikotnik(h);
return 0;
}
Programiranje s C++
Programiranje s C++
#include
Deklaracija spremenljivkeDefinicija funkcij
stavki;
}
tip main{
#include
Deklaracija spremenljivkDeklaracija funkcij
stavki;
tip main{
}
Definicija funkcij
Programiranje s C++
Naloga
• S pomočjo uporabe funkcije zapišite program za izračun seštevka dveh realnih števil
• rezultat = a+b;
Programiranje s C++
FP
// seštevanje
#include <iostream>
float addition (float a, float b)
{
float r;
r=a+b;
return (r);
}
void main ()
{
float z;
z = addition (5,3);
cout << “Rezultat je " << z;
}
RE
ŠIT
EV
Programiranje s C++
Naloga
• S pomočjo uporabe funkcije zapišite program za izračun fakultete naravnega števila n, ki ga vnese uporabnik
• V programu preverite ali je uporabnik vnesel naravno število
• rezultat = n!
Programiranje s C++
FP
//Funkcija za izračun fakultete števila
#include <iosteram.h>
int Fakulteta(int stevilo) //stevilo je argument
{
int f=1;
for (int k=2; k<=stevilo; k++)
f *= k;
return f; //tu se funkcija konča in vrne vrednost
}
int main()
{
int a; //spremenljivka za celo stevilo
cout << "Vpisi naravno stevilo:"; //navodilo
cin >> a;
if (a>0) //sledi klic funkcije z dejanjskim argumentom
cout << a "! = " << Fakulteta(a); //izpise se vrnjena vrednost
return 0;
}
RE
ŠIT
EV
Programiranje s C++
Prenos vrednosti po referenciraz = razdalja (a, b);
float razdalja (float x, float y)
void podvoji (int & a, int & b, int & c);
podvoji (x, y, z)
x yz
Programiranje s C++
FP
// vrne vec vrednosti
#include <iostream>
void prevnext (int x, int& prev, int& next)
{
prev = x-1;
next = x+1;
}
int main ()
{
int x=100, y, z;
prevnext (x, y, z);
cout << “prejšnji=" << y << ", naslednji=" << z;
return 0;
}
Programiranje s C++
Privzete vrednosti argumentov// Privzete vrednosti argumentov v funkcijah#include <iostream>
int deli (int a, int b=2){ int r; r=a/b; return (r);}
int main (){ cout << deli (12); cout << endl; cout << deli (20,4); return 0;}
Programiranje s C++
Prekrivanje funkcij#include <iostream>
int operate (int a, int b){ return (a*b);}
float operate (float a, float b){ return (a/b);}
int main (){ int x=5,y=2; float n=5.0,m=2.0; cout << operate (x,y); cout << "\n"; cout << operate (n,m); cout << "\n"; return 0;}
Programiranje s C++
Rekurzija//računanje fakultete#include <iostream>
long factorial (long a){ if (a > 1) return (a * factorial (a-1)); else return (1);}
int main (){ long number; cout << “Vpišite celo število: "; cin >> number; cout << number << "! = " << factorial (number); return 0;}
Programiranje s C++
NalogaKaj vrne spodnji program?void change(int& y) { y = 1; }void main() { int x; x = 0; change(x); cout << x << endl; }
Programiranje s C++
FUNKCIJE
DEFINIRA PROGRAMER
PRED-DEFINIRANE
MAIN
NE VRNE VREDNOSTI
VRNE VREDNOST
Programiranje s C++
FP-ne vrne vrednost
• Funkcije “void” in funkcije, ki vrnejo vrednost imajo podobno strukturo
• Funkcije “void”– pred glavnim programom main()– za glavnim programom main()
Programiranje s C++
FP-ne vrne vrednost
• funkcije “void” so brez stavka return• return v funkciji “void” se uporablja
izključno za namene predčasenga končanja funkcije
• funkcije “void” imajo ali pa nimajo parametrov
• klic funkcije “void” se izvrši enako kot pri ostalih funkcijah
Programiranje s C++
FP-ne vrne vrednost
• Sintaksa funkcije “void”:void functionName(void)
{
statements;
}
• Sintaksa za klic funkcije “void”functionName();
Programiranje s C++
FP
// void primer
#include <iostream>
void printmessage ()
{
cout << “Jaz sem funkcija!";
}
int main ()
{
printmessage ();
return 0;
}
Programiranje s C++
Analiza
void printmessage (void)
{
cout << “Jaz sem funkcija!";
}
printmessage ();
Programiranje s C++
FP
#include <iostream.h>
#include <iomanip.h>
// Deklaracija funkcije
void skipthree(void);
void main()
{
cout << “Testiranje funkcije, ki ne vrned vrednosti" << endl;
skipthree();
cout << “Stestirano" << endl;
} // Konec main
// Definicija funkcije
void skipthree(void)
// izpusti tri prazne vrstice v izpisu
{
cout << endl << endl << endl;
}
Programiranje s C++
Naloga
• Z uporabo funkcij napišite program, ki izpiše sledeče znake:
*
**
***
****
Programiranje s C++
FP
// izpis *
#include <iostream.h>
void izpis(int n)
{
int i;
for (i=0; i<n; i++)
cout << “*”;
cout << endl;
}
void main ()
{
int z;
cout << “Vpišite celo stevilo ” << endl;
cin >> z;
for (int i=1; i<=z; i++)
izpis(i);
}
RE
ŠIT
EV
Programiranje s C++
FUNKCIJE
DEFINIRA PROGRAMER
PRED-DEFINIRANE
MAIN
NE VRNE VREDNOSTI
VRNE VREDNOST