|
Juha
Satu
Taru
Kati
Perheen tarina
Lasten albumi
Sivuston historia
Etusivu

|
Tässä oppaassa on tiivisti kerrottu C++:sta. Esimerkit on eritelty eri fontilla varsinaisesta tekstistä.
Tietojen pohjana on Borlandin C++ 5.01
- tietotyypit esim. int, char, const
- Unkarilainen notaatio
- näytölle tulostaminen ja näppäimistöltä lukeminen esittelee käskyt: cin, cout
- hyppy, toisto- ja vertailauseet
- aliohjelmat
- globaalit ja paikalliset muuttujat + lisäksi paikalliset staattiset muuttujat ja extern määrittely
- tyyppimuunokset aritmetiikassa kertoo kuinka kokonaisluvusta tehdään desimaaliluku
- arvonmuunto-operaatiot esim. a++, a+=b
- osoittimet ja viittaukset
- bittioperaatiot
- tiedostojen käsittely
- dynaaminen muistinhallinta
- esikääntäjän käskyt
- olio-ohjelmointi
- luokan määrittely class:lla
- muodostimet ja hajoittimet
- periytyminen
- ystävä-luokat
Paluu etusivulleni...
| kokonaisluku |
| tyypin nimi | lukualue | bittien määrä |
| n | short | -32 768...32 767 | 16 bit |
| un | unsigned short | 0...65 535 | 16 bit |
| i | int | -2 147 483 648...2 147 483 647 | 32 bit |
| ui | unsigned int | 0...4 294 967 295 | 32 bit |
| l | long | -2 147 483 648...2 147 483 647 | 32 bit |
| ul | unsigned long | 0...4 294 967 295 | 32 bit |
| reaaliluku |
| f | float | 3.4*10-38...3.4*1038 | 32 bit |
| d | double | 1.7*10-308...1.7*10308 | 64 bit |
| ld | long double | 3.4*10-4932...3.4*104932 | 80 bit |
| merkki |
| c | char | -128...127 | 8 bit |
| uc | unsigned char | 0...255 | 8 bit |
merkkijono
- char []
char acMerkkijono[ 81 ];
vakio
- enum
paiva { MA = 1, TI, KE, TO, PE, LA, SU } paiva;
- const
int a = 50
- #define
max 30
omat tietotyypit
- struct
nimi{ kenttä1; kenttä2; kenttä3; /*jne*/ }; struct PVM { int paiva; int kuuk; int vuosi; };
- union
nimi{ kenttä1; kenttä2; kenttä3; /*jne*/ };
taulukko
tietotyyppi nimi [ alkioiden lkm ];
tietotyyppi nimi [ alkioiden lkm ][ alkioiden lkm ];
esim. float fVektori[ 10 ]; int aiKaksi_Uloit_Taul [ 2 ][ 10 ];
PVM xPaivat [ 100 ];
näennäistyyppi void
tarkoittaa tyhjää arvojoukkoa -> ei sisällä arvoa
esim. void main ( void ){}
tilantarkistus sizeof:lla
sizeof ( tietotyyppi ) tai sizeof taulukko tai mjono
Paluu C++ ohjelmointi...
- Unkarilaisella notaatiolla tarkoitetaan tapaa nimetä muuttujat siten, että nimestä suoraan näkee muuttujan tyypin.
Esim. chKirjain tarkoittaa char tyyppistä muuttujaa.
| tietotyyppi | etuliite |
| char | ch |
| unsinged char | uch |
| char | ac (tai sz) |
| short | n |
| unsigned short | un |
| int | i |
| unsigned int | ui |
| long | l |
| unsigned long | ul |
| double | d (tai dbl) |
| float | f |
| BOOL | b |
| BYTE | by |
| WORD | w |
| DWORD | dw |
| pointeri | p |
| kahva | h |
| tietuemuuttuja | x |
| funktio | f |
| taulukko | a |
Paluu C++ ohjelmointi...
- tulostaminen
cout << "moi"; cout << moi; vrt. ero!!!
lukeminen
cin >> acMoi; HUOM! Lopettaa lukemisen 1. välilyöntiin
- getline
( acMoi, 10 ); getline( acMoi, 10, a ); getline( acMjono, maxpituus, cLop_Merk );
Paluu C++ ohjelmointi...
- vertailuoperaattorit
- == eli yhtäsuuruus HUOM! 2 =-merkkiä
- != eli erisuuruus
- > eli suurempi kuin
- >= eli suurempi tai yhtäsuuri kuin
- < eli pienempi kuin
- <= eli pienempi tai yhtäsuuri kuin
loogiset operaatiot
- && eli ja
- || eli tai
- ! eli ei (invertteri)
vertailulauseet
- if
( lauseke ) lause1; else lause2;
- switch
( lauseke ) { case vakio: lauseet;break; default : lauseet; break;}
toistolauseet
- while
( lauseke ) lause; tai while ( lauseke ) { lause1; lause2; lause3; /*jne*/ }
- do
lause while( lauseke ); tai do { lause1; lause2; lause3; /*jne*/ } while (lauseke);
- for
( aloituslause; lauseke; lauseke tosi niin-lause ) lause; tai for ( aloituslause; lauseke; lauseke tosi niin-lause ) { lause1; lause2; lause3; /*jne*/ }
hyppylauseet
- break; keskeyttää switch tai toistolauseen
- continue; siirtyy toistolauseessa uudelleen alkuun tutkimaan lauseketta
Paluu C++ ohjelmointi...
- esittely eli prototyyppi
tietotyyppi nimi ( parametrit ); esim. int ali ( char );
kutsu
nimi ( parametrit ); esim. ali ( 'a' );
määrittely
tietotyyppi nimi ( parametrit ){} esim. ali ( char cMerkki ){ /*mitä aliohjelma tekee*/ return 0; }
parametrin oletusarvot
esittely: void ali ( int, int = 1 ); //HUOM! Oletusarvot pitää olla viimeisenä
kutsu: ali ( iLuku ); //luku määritelty aiemmin
määrittely: void ali ( int iLuku1, int iLuku2 ){ /*mitä aliohjelma tekee*/ }
parametrina osoitin
esittely: float ali ( char* );
kutsu: ali ( &cJokin_Merkki ); //c määritelty aiemmin
määrittely: float ali ( char* pcMerkki ){/*mitä aliohjelma tekee*/return 0;}
parametrina viittaus
esittely: long ali ( int& );
kutsu: ali ( iLuku ); //i määritelty aiemmin
määrittely: long ali ( int& iKokonaisluku ){ /*mitä aliohjelma tekee*/ return 0; }
parametrina taulukko (=todellisuudessa osoitin)
esittely: void ali ( int[ ] );
kutsu: ali ( aiTaulukko ); //taulukko määritelty aiemmin
määrittely: void ali ( int aiTaul[ ] ){/*mitä aliohjelma tekee*/}
parametrina osoitin taulukkoon
esittely: void ali ( int* );
kutsu: ali ( paiVektori ); //vektori määritelty ja laitettu osoittaan taulukon alkuun aiemmin
määrittely: void ali ( int* paiVec ){ /*mitä aliohjelma tekee*/ }
Paluu C++ ohjelmointi...
- Jos muuttuja määritellään ennen pääohjelmaa ja aliohjelmien määrittelyä on muuttuja globaali eli sitä voi käyttää sekä pää- että aliohjelmat.
- Jos muuttuja määritellään pääohjelmassa tai aliohjelmassa on muuttuja paikallinen eli sitä voi käyttää vain ko. ohjelma.
float fGlobaali_muuttuja1;
void ali1 ( void );
int iAli2 ( int );
int iGlobaali_muuttuja2 = 5;
void main( void )
{
int iPaikallinen_muuttuja_paaohjelmassa;
ali2 ( iPaikallinen_muuttuja_paaohjelmassa );
}
int ali2 ( int vakio )
{
double dPaikallinen_muuttuja_ali2_ohjelmassa;
}
HUOM! Kun ei käytetä viittausta/osoitinta -> Paikallinen_muuttuja_paaohjelmassa on ali2 ohjelmassa vakio, jonka arvoa ei voi muuttaa
- Lisäämällä aliohjelmeljassa muuttujan määrittelyn eteen sanan
static saadaan muuttujan säilyttämään arvonsa seuraavaan kertaan, vaikka aliohjelman suoritus loppuisi.
- Lisäämällä aliohjelmeljassa muuttujan määrittelyn eteen sanan
extern voidaan muuttuja tallentaa eri tiedostoon. Tässä tapauksessa tarvitsee linkittää tiedostot yhteen esim. tekemällä projekti.
Paluu C++ ohjelmointi...
- double dOsam = double dLuku1
= 5 / int iLuku2 = 2 dOsam = double( int dLuku1 = 5 / int iLuku2 = 2 )
- muutoin aritmetiikassa voidaan käyttää normaaleja operaatioita +,-,* ja /
Paluu C++ ohjelmointi...
| += | a += b; | a = a + b; |
| -= | a -= b; | a = a - b; |
| *= | a *= b; | a = a * b; |
| /= | a /= b; | a = a / b; |
| %= | a %= b; | a = a % b; |
| ++ | a++; | a = a + 1; |
|---|
++a; | a = a + 1; |
| -- | a--; | a = a - 1; |
|---|
--a; | a = a - 1; |
HUOM!
| käsky | iA:n sisältö |
| int iA = 5; | 5 |
| iA--; | 5 |
| | 4 |
| --iA; | 3 |
Paluu C++ ohjelmointi...
- osoitin
tyyppi *piOsoitin = NULL; tyyppi *piOsoitin = &muuttuja;
esim. int iLuku = 5; int *piOs = &iLuku;
osoitin omaan tietotyyppiin
nimi->kenttä tai (*nimi).kenttä
osoitin taulukkoon
esim. *pfOsoitin = afTaulukon_nimi
viittaus
tyyppi &nimi = muuttuja, vakio tai oma tietotyyppi
Paluu C++ ohjelmointi...
| symboli | merkitys |
| & | ja |
| ^ | xor |
| | | tai |
| ~ | komplementti |
| << | pyöritys vasemmalle |
| >> | pyöritys oikealle |
Symbolin perään voidaan lisätä yhtäsuuruusmerkki, joka sijoittaa tuloksen kyseiseen muuttujaan. Esim. i <<= 2;
Paluu C++ ohjelmointi...
| tekstitiedosto | binääritiedosto |
| avaus | ofstream levy_muuttuja ( "xyz.dat", ios::ate|ios::app|ios::binary ); |
| ifstream levy_muuttuja ( "xyz.dat" ); |
| luku | levy_muuttuja >> muuttuja; | levy_muuttuja.read( (char *) &mihin_luetaan, merkkin lkm ); |
| kirjoitus | levy_muuttuja << muuttuja; | levy_muuttuja.write( (char *) &mihin_luetaan, merkkin lkm ); |
| sulkeminen | levy_muuttuja.close(); |
| avausbitti | merkitys |
| ios::in | tiedostosta lukeminen (oletus ifstream:lla) |
| ios::out | tiedostoon kirjoittaminen (oletus ofstream:lla) |
| ios::ate | tiedoston-osoitin tiedoston loppuun |
| ios::app | uudet tiedot kirjoitetaan vanhojen perään |
| ios::trunc | luo uuden / tyhjentää tiedoston (oletus ios::out) |
| ios::nocreate | ei luo uutta tiedostoa |
| ios::noreplace | ei korvaa vanhaa tiedostoa |
| ios::binary | binääritiedosto |
- avauksen testaus
if (!levy_muuttuja)
{
cout << "Tiedostoavaus ei onnistu, koska tiedosto xyz.dat puutuu.\nPaina jotain nappainta ja enter... ";
getch(); return;
}
- tiedoston lopun etsiminen
while ( levy_muuttuja.peek() != EOF ) { /*mitä tehdään, kun tiedosto ei ole lopussa*/ }
- tietojen ohittaminen
levy_muuttuja.ignore( lkm, lopetusmerkki );
tiedosto-osoitinta kasvatetaan lkm:n verran, paitsi jos lopetusmerkki esintyy tiedostossa - tiedosto-osoitin osoittaa levyllä lopetusmerkistä seuraavaan merkkiin
Paluu C++ ohjelmointi...
- varaus:
muuttuja = new tyyppi;
- vapautus:
delete muuttuja;
Paluu C++ ohjelmointi...
#include "oma.h" h-tiedostoa etsitään työhakemistosta
#include <iostream.h> h-tiedostoa etsitään polun varrelta
#define määrittele vakio (#define NIMI) tai vakiolle arvo (#define MAX = 10)
ehdollinen kääntäminen:
#ifdef VAKIO jos VAKIO on määritelty - ohjelmaan käännetään kaikki ennen käskyä #endif
#ifndef VAKIO57 jos VAKIO57 ei ole määritelty - ohjelmaan käännetään kaikki ennen käskyä #endif
#endif
Paluu C++ ohjelmointi...
Paluu etusivulleni...
|