A C++-t Bjarne Stroustroup fejlesztette ki a C nyelv kibõvítéseként az objektum-orientált paradigmával.
Kezdõknek nem ajánlott,de ez az írás a legkönnyebb,amit csak találhatsz és a legeredményre vezetõbb.
A továbbképzés a C++ reference angol nyelvû oldalon,a grafikához az OpenGL,grafikai nyelv.
Ajánlott fordítók:Dev C++ 4.9.9.2 vagy 5.0.0.4.
Bocs a nyelvtani hibákért,de kb.1 óra alatt írtam ezt le(plusz dev c++-szal fordítottam html-re).
1.Alapok
1.1 Hello World!
#include <stdio.h>
#inlclude <conio.h>
main(){
printf("Hello World");
getch();
}
#include-beágyazott fájlok(stdio-printf,conio-szöveges,getch());
printf()-kiiratás
getch()-egy karakter megadását várja
main()-a c++ programok fõtörzse
1.2Beolvasás:
scanf()-ez tipusosan olvas
Pl.:
#include <stdio.h>
#include <conio.h>
main(){int d;
printf("Irj be egy számot:");
scanf("%d",&d);
printf("A szám:%d",d);
getch();
}
%d-integer tipusú számváltozó
scanf("%változótipus",&változó)
-a kiiratas is hasonló
1.3Tipusos olvasás,kiírás:
%c-karakter
%s-karaktertömb
%d,i-egész szám(int,long,short)
%e,f,g-lebegõpontos(double,float)
%E-exponenciális függvényhez
%p-pointerhez
1.4Változótipusok
A változó nevében csak az angol ABC betûi, a számok és a _ jel lehet
Pl.:
valtozo_1-helyes
valtozo*1-helytelen
const-konstans változó,változhatatlan;Pl.: const int x=5;
Számok:
int=integer-integrált tipus,kb. 11 jegyû számokat kezel +,-;létezik unsigned,vagyis elõjelnélküli verziója
long-hosszú;
long long-hosszabb(20 jegy fölött)
double-lebegõpontos(helyezhetsz bele egész számot)
float-lebegõpontos
A számváltozók határait próbálgasd,jó a gyakorláshoz
char-karakter
string-szöveg
1.5Megjegyzések
1.6Tömbök
Példa:
vátozótipus tömbnév[elemekszáma];
Pl.:
#include <stdio.h>
#include <conio.h>
main(){int tombnev[1]; printf("Irj be egy számot:");
scanf("%d",&tombnev[0]); printf("A szám:%d",tombnev[0]); getch();
}
Bekéri majd kiírja a tömb elsõ elemét
Pl2.:
#include <stdio.h>
#include <conio.h>
int tombnev[2]; main(){
printf("Irj be egy számot:");
scanf("%d\n%d\n%d",&tombnev[0],&tombnev[1],&tombnev[2]); printf("A szám:%d\t%d\t%d",tombnev[0],tombnev[1],tombnev[2]); getch();
}
\t-tabulátor utána
\n-új sorba utána
1.7Ciklusok
1.7.1Elõltesztelõs
while(feltétel){
utasítások;
};
Pl.:
#include <stdio.h>
#include <conio.h>
main(){int i;
while(i!=5){
i=i+1;
};
getch();
}
!=-nem egyenlõ
addig számol,ameddig i nem egyenlõ 5-tel
1.7.2Hátultesztelõs ciklus
do{
utasítások:
}while(feltétel);
Ugyanaz,mint az elõltesztelõs,csak ebben az utasítás mindenképpen végrehajtódik.
1.7.3Számláló ciklus
for(kezdeti érték;feltétel;módosítás){
utasítás;
};
Pl.:
#include <stdio.h>
#inlclude <conio.h>
main(){
for(int i=1;i<=10;i++){
printf("Hello World");};
getch();
}
Kiírja a Hello World-öt 10-szer
<=-kisebb vagy egyenlõ
i++-növelés
1.7.4Switch(kapcsoló)
switch(változóneve){
case(1. érték): utasítás;break;
case(2. érték): utasítás;break;
default: utasítás ;break;
};
break helyett continue=folytatás
default-alapértelmezett parancs
csak számérték mehet zárójelbe, a karakter két ' jel közé:
PL.:
case 'c':ut.;break;
Elágazás-if(ha)-a feltétel teljesülésébõl kifolyólag teljesülnek a parancsok:
if(feltétel){parancsok;} else if(2. feltétel){2. parancs}...if(n f.){n ut.;};
1.8Mûveletek
Aritmetika:
+ -plusz
- -mínusz
* -szorzás
/ -osztás
% -moduló,meghatározza az osztás nem egész részét
Pl.:
int a=5;
int b=10;
int c=a+b;
c=10;
Logikai:
&&-és
||-vagy
!-nem,tagadás
Bitmûveletek:
&-és
|-vagy
^-kizáró vagy
!= nem egyenlõ
<<-eltolás balra
>>-eltolás jobbra
~-egyes komplemens
Összehasonlítás
<-kisebb,mint
>-nagyobb,mint
1.9Matematikai(math.h include-dal)
sqrt-négyzetgyök
sqr-négyzet
exp-exponenciális,e a x-ediken
Pl.:
double x=exp(5);
sin,cos,tan-trigonometriai:double x=sin(0.5);
sinh,cosh,tanh-a hiperbolikus értékük
atan2 - double z=atan2(1,2);-1/2 arkusz tangense
frexp-double x=frexp(&x,&y);az ldexp ugyanígy
pow-hatvány- int x=pow(2,5); ceil-kerekítés fel;int x=ceil(5.5);
floor-kerekítés le
Complex számok(complex.h-val)
complex szám készítése:
#include <stdio.h>
#inlclude <conio.h>
#include <math.h>
#include <complex.h>
main(){
complex<double> mycomplex(5.5,2.560); printf("Complex:%g",real(mycomplex));
getch();
}
realon kívül lehet:
conj,abs,arg,polar,imag;
2.0 Struct,enum
enum-felsorolás
Pl.:
enum color{blue,red,green};
color[0]=blue;
struct-struktúra
Pl.:
struct{
int x;
int y;
}hello;
hello.x=5;
A Union:
union{
int a;
struct{
int b;
}hello1;}hello2;
hello2.a=5; hello.1.b=10; 2.1Az OOP(Objektum-orientált programozás) alapjai
Az OOp egy új paradigma,amely a természetes,valóságos gondolkodást támogatja.
Kisebb bemutató:
class-az osztály;használata :
class valami{
public:
int x;
int y;
};
valami deklaralas; deklaralas.x=5;
deklaralas.y=10;
public-az osztály tartalmának a tulajdonsága(ez publikus),lehet:
protected-védett
private-magán(alapértelmezett)
Konstruktor és destruktor:
class valami{
int x;
inty y;
valami(int newx,int newy); ~valami()void; };
valami::valami(int newx=5,int newy=10){ x=newx;
y=newy;
}
valami::~valami(){ delete [] x; };
Öröklés:
Új osztály nyitása egy elõzõ osztály gyermekeként:
Pl.:class gyermekosztalyneve:apjaé(,anyjaé is,ha kell){...};
Fontos összetevõ még a polimorfizmus(többrétûség):egy osztályon belü több azonos nevû függvény is lehet.
2.2Konverterek
itoa-integer stringgé
Pl.:
int x=5;
int szammod=10; char y[3];
itoa(x,y,szammod);
atol-string longba:
char x[2];
x[0]='a';
long y=atol(x[0]);
egyéb stringbõli:
atof-lebegõpontosba
atoi-integerbe
ecvt,fcvt,gcvt-double stringbe
char x[5]=ecvt(double értéke,int meddig,int decimális_határ,int sign);
gcvt(ajánlottabb):
gcvt(double doublerteke,int hanyszamot,karaktervaltozoneve);
toupper:nagybetûbe a stringet:
toupper(stringnev);
toascii(stringnev); strlwr(stringnev); strcmp(char x,char y); strcat(char x,const char y); copy(&char[0],&char[100],&char2[0]);a másodikba másolja az 1. elemétõl
2.3Makrók
va:
va_list
va_start
va_arg
va_end
Pl.:
(Összeadja a számokat)
int summa(int n,...)
{
int sum=0;
va_list list;
va_start(list,n);
sum=sum+va_arg(list);
va_end (list);
return sum;
};
IS:
isalpha:alpha-e Pl.:
int x=isalpha(int condition);
egyéb:
isalphanum- alphanumerikus-e
isascii- ascii-e
iscntrl- controll-e
isspace- space-e
isdel...
isdigit- szám-e
isxdigit- hexadecimális szám-e
2.3A rendezés
A rendezés terén a legegyszerûbb és egyben legcélszerûbb a quicksort a tömben lévõ elemek
sorba állítására:
#include <stdio.h>
#include <conio.h>
#include <algorithm> main(){
int tomb[6]={2,6,7,5,8,4};
int compare(const void *,const void *){ return *(int*)a-*(int*)b;
};
qsort(tomb,6,sizeof(int),compare); getch();
}
2.4 Az iostream elõnyei
#include <iostream>
main(){
int a=5;
int b;
int tomb[10];
cout<<"Hello"<<endl; cin>>b; int c=a+b;
cout<<c<<endl;
cin.getline(tomb,10); cin.get(); }
2.5 A string.h
Egy string:
string mystring("Hello");
több stringgel:
string mystring("Hello");
string mystring1("Chao");
string mystring2("Hi");
string mystring3=mystring+mystring1+mystring2;
2.6 A permutáció
Számok,karakterek elhelyezkedésének indexsora.
Ird be:
#include <stdio.h>
#include <iostream>
#include <algorithm> #include <conio.h>
main(){
int myints[3]={1,2,3,4};
int d=1;
printf("Négy szám permutációja:");
do{
cout<<d<<". "<<myints[0]<<myints[1]<<myints[2]<<myints[3]<<endl;
}while(next_permutation(myints,myints+4));
getch();
}
2.7 Fájlkezelés:
Könnyítõpéldák(így egészben nem feltétlen mûködik,de a kódokat ajánlott külön tanulmányozni!):
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
main(){int x,i=5;
char tomb[5];
FILE * File; File=fopen("text.txt","w"); if(File!=NULL){
fputs("Hello World!",File); fprintf(File,"%d",i); fscanf(File,"%d",x); fgets(tomb,5,File); }
getch();
}
Az fread fájlból olvasás használata:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
main(){
FILE * File;
long lsize=ftell(File);
size_t result;
char buffer[10];
buffer=(char*)calloc(10,sizeof(char)); fseek(File,0,SEEK_END);
rewind(File);
result=fread(buffer,1,lsize,File);
getch();
}
2.8 Mutatók vagy pointerek
A pointerek szám típusú változók,melyek egy változó memóriában foglalt címét jelzi.Nagyon fontosak a programozásban,a c++ ereje.
Egyszerû pointer: int valtozo;
int *pointer=&valtozo;
Referenciatípus:(a változó referenciája,a pointerrel szemben csak egyszer adható neki érték)
int valtozo;
int &referenciatipus=valtozo;
Pointeres referenciatípus:
int *pointer;
int *&referenciapointer=&pointer;
New típus:
double *ujcim;
ujcim=new double;
*ujcim=5.5;
Pointerre mutató pointer:
Egyszerû,csak elé kell tenni mégegy csillagot:
int valtozo;
int *pointer=&valtozo;
int *pointerremutatopointer=&pointer
int *pointerremutatopointerremutatopointer=&pointerremutatopointer
Azt hiszem ennyi elég lesz az alapszinthez.A továbbiakban látogasd meg a c++ reference
oldalát és keresgess benne.Ajánlom a for ciklus használatának gyakorlását,mivel annak
elsajátítása könnyedén haladó és magasabb szintre emeli a gyakorlót és erõs eszköz is lehet.