Programació

Tutorial de C++ per a principiants

30 d'octubre de 2021

Taula de continguts

Què és C++?

C++ és un llenguatge multiplataforma que s'utilitza per crear aplicacions d'alt rendiment. Bjarne Stroustrup el va desenvolupar com una extensió del llenguatge C. C++ ofereix als programadors control sobre els recursos del sistema i la memòria. L'idioma es va actualitzar tres vegades importants el 2011, el 2014 i el 2017 a C++11, C++14 i C++17.

Per què utilitzar C++

  • C++ és un dels llenguatges de programació més populars.
  • C++ es pot trobar en sistemes operatius, GUI i sistemes incrustats.
  • És un llenguatge de programació orientat a objectes que dóna una estructura clara als programes i permet reutilitzar codi, reduint els costos de desenvolupament.
  • És portàtil i es pot utilitzar per desenvolupar aplicacions que es poden adaptar a múltiples plataformes.
  • Com que C++ és proper a C# i Java , facilita als programadors canviar a C++ o viceversa.

Característiques

    Simple: C++ és un llenguatge senzill perquè proporciona un enfocament estructurat a un conjunt ric de funcions, tipus de dades, etc.Portàtil: A diferència del llenguatge assemblador, els programes c s'estan executant en moltes màquines amb poc o cap canvi. Però no és independent de la plataforma.Llenguatge de programació de nivell mitjà: C++ s'utilitza per fer programació de baix nivell. S'utilitza per desenvolupar aplicacions com el nucli, el controlador, etc. També admet la característica del llenguatge d'alt nivell.Llenguatge de programació estructurat: C++ és un llenguatge de programació estructurat perquè podeu dividir el programa en parts mitjançant funcions.Biblioteca rica: C++ proporciona funcions integrades que fan que el desenvolupament sigui ràpid.Gestió de la memòria: us ofereix la funció d'assignació de memòria dinàmica. Podeu alliberar la memòria assignada cridant a la funció free().Velocitat: El temps de compilació i execució del llenguatge C++ és ràpid.Apuntador: C++ ofereix la característica de punters. Podeu interactuar directament amb la memòria mitjançant punters.Recursió: En C++, podeu cridar la funció dins de la funció. Proporciona la reutilització del codi per a cada funció.Extensible: El llenguatge C++ és extensible perquè pot adoptar noves característiques ràpidament.Orientat a objectes: C++ és un llenguatge de programació orientat a objectes. Els POO facilita el manteniment i el desenvolupament, mentre que, en el llenguatge de programació orientat a procediments, no és fàcil gestionar si el codi creix a mesura que el projecte la mida augmenta.Basat en compilador: És un llenguatge de programació basat en compiladors. Primer, heu de compilar el programa mitjançant un compilador i, a continuació, podeu executar-lo.

Configuració de l'entorn local

Seria bo que tinguéssiu el següent programari al vostre ordinador.

    Compilador C++

És un compilador C++ real, que s'utilitzarà per compilar el vostre codi font al programa executable final. A la majoria dels compiladors C++ no els importa quina extensió doneu al vostre codi font. El compilador més utilitzat és el compilador GNU C/C++.

    Editor de textos

El programari l'utilitza per escriure. Els exemples inclouen el Bloc de notes de Windows, OS Edit, Short, Epsilon, EMACS i les ordres Vim o VI. Els fitxers que genereu amb l'editor s'anomenen fitxers font i els fitxers C++ s'anomenen .cpp, .cp o .c. Per començar la programació en C++, cal que hi hagi un editor de text.

    Sintaxi bàsica

Vegem ara què volen dir una classe, objecte, mètodes i variables d'instància.

    Objecte− Els objectes tenen estats i comportaments. Exemple: un gat té condicions: color, nom, raça i accions: menejar, miaular, menjar. Un objecte és una instància de la classe.Classe− Una classe es defineix com un plànol que descriu els comportaments/estats que suporta un objecte del seu tipus.Mètodes− Un mètode és la conducta. Una classe pot contenir molts mètodes. En els mètodes on s'escriu la lògica, les dades es manipulen i s'executen les accions.Variables d'instància− Hi ha una col·lecció única de variables d'instància a cada objecte. La condició d'una entitat es genera pels valors assignats a aquestes variables d'exemple.

EXEMPLE

|_+_|

SORTIDA

|_+_|

Vegem les diferents parts del programa esmentades anteriorment −

  • Requereix una capçalera.
  • Utilitzeu l'espai de noms std; per advertir al compilador que utilitzi l'espai de noms std.
  • La línia int main() és la característica principal on comença l'execució del programa.
  • La línia següent talla a<< Hello World; the word Hello World is reflected on the keyboard.
  • La línia següent retorna 0; la funció main() acaba.

Entrada/sortida bàsica de C++

L'operació d'E/S de C++ utilitza el concepte de flux. El flux és la seqüència de bytes o flux de dades. Fa que el rendiment sigui ràpid.

Si els bytes flueixen de la memòria principal a un dispositiu com una impressora, una pantalla o una connexió de xarxa, etc., això es coneix com a operació de sortida.

Si els bytes flueixen des d'un dispositiu, com ara una impressora, una pantalla, una connexió de xarxa, etc., a la memòria principal, això s'anomena una operació d'entrada.

Seqüència de sortida estàndard (cout)

El cost és un objecte predefinit de l'ostream classe. Està connectat amb el dispositiu de sortida, que sol ser una pantalla de visualització. El cout s'utilitza per unir-se amb l'operador d'inserció de flux per mostrar la sortida en una consola

EXEMPLE

|_+_|

SORTIDA

|_+_|

Seqüència d'entrada estàndard (cin)

El ginebra és un objecte predefinit. Està connectat amb el dispositiu d'entrada, que sol ser un teclat. El cin s'utilitza per unir-se a l'operador d'extracció de flux (>>) per llegir l'entrada de la consola.

EXEMPLE

|_+_|

SORTIDA

|_+_|

Línia final estàndard (endl)

El endl és un objecte predefinit de la classe. S'utilitza per inserir nous caràcters de línia i netejar el flux.

EXEMPLE

|_+_|

SORTIDA

|_+_|

Variables C++

Una variable és el nom d'una ubicació de memòria. S'utilitza per emmagatzemar dades. El valor es pot canviar i es reutilitza moltes vegades. És una manera de representar la ubicació de la memòria a través d'un símbol per identificar fàcilment. Una variable pot tenir alfabets, guió baix i dígits. Un nom de variable només pot començar amb un alfabet i un guió baix. No pot començar amb un dígit.

No es permeten espais en blanc dins del nom de la variable.

Un nom de variable no ha de ser cap paraula o paraula clau reservada, per exemple, char, float, etc.

Noms de variables vàlids:

  • int a;
  • int _ab;
  • int a30;

Noms de variables no vàlids:

  • int 4;
  • int x y;
  • int doble;

Identificadors C++

Un identificador C++ s'utilitza per identificar una variable, funció, classe, mòdul o qualsevol altre element definit per l'usuari. Comença amb la A a la Z o de la a a la z o un guió baix (_), que va seguit de zero o més lletres i de 0 a 9. C++ no admet puntuació com ara @, $ i % dins dels identificadors. És un llenguatge de programació sensible a majúscules i minúscules. Així, la força de treball i la força de treball són dos identificadors diferents en C++.

Tipus de dades C++

TipusParaules clau
Personatgechar
booleàbool
Punt flotantflotar
Doble coma flotantdoble
Enterint
Sense valorbuit
Caràcter amplewchar_t
Tipus Amplada de bits típica Gamma típica
char1 byte-127 a 127 o 0 a 255
caràcter sense signar1 byte0 a 255
caràcter signat1 byte-127 a 127
wchar_t2 o 4 bytes1 caràcter ample
int4 bytes-2147483648 al 2147483647
int sense signar4 bytes0 al 4294967295
signat int4 bytes-2147483648 al 2147483647
curt int2 bytes-32768 a 32767
flotar4 bytes
curt sense signar int2 bytes0 a 65.535
signat curt int2 bytes-32768 a 32767
llarg int8 bytes-2.147.483.648 a 2.147.483.647
signat llarg int8 bytesigual que long int
unsigned long int8 bytes0 a 4.294.967.295
llarg llarg int8 bytes-(2^63) a (2^63)-1
sense signar llarg llarg int8 bytes0 a 18.446.744.073.709.551.615
doble8 bytes
doble llarg12 bytes

Constants/Literals C++

Les constants es refereixen als valors fixos que el programa pot alterar i s'anomenen literals.

Les constants poden ser de qualsevol dels tipus de dades en brut i es divideixen en nombres enters, caràcters, numerals de coma flotant, cadenes i valors booleans.

Literals enters

Un literal enter és una constant decimal, octal o hexadecimal.

Un literal enter té un sufix que és una combinació de L i U, per a llarg i sense signe, respectivament. El sufix pot ser en minúscules o en majúscules i pot estar en qualsevol ordre.

Per exemple: 212, 215u, 0xFeeL, 078, 032UU

Literals de coma flotant

Un literal de coma flotant té una part entera, una part fraccionària, una coma decimal i una part exponent. Podeu representar els literals de coma flotant en forma decimal o exponencial.

Mentre representeu amb la forma decimal, heu d'incloure el punt decimal, l'exponent o tots dos. Si bé vol dir que utilitzeu la forma exponencial, heu de tenir la part fraccionària, la part entera o totes dues. L'exponent amb signe s'introdueix per E o e.

Literals booleans

Hi ha dos literals booleans

  • Un valor de veritable que representa veritat.
  • Un valor de fals que representa fals.

Literals de caràcters

Els literals de caràcters s'entreguen entre cometes simples. Si el literal comença per L, és un literal de caràcters amples i s'ha d'emmagatzemar en un tipus de variable wchar_t. En cas contrari, és un literal de caràcter estret i s'emmagatzema en una variable simple de tipus char.

Seqüència d'escapada Significat
\ personatge
' personatge
personatge
?? personatge
aAlerta o timbre
Retrocés
fFeed de formularis
Nova línia
Retorn de carro
Pestanya horitzontal
vPestanya vertical
oooNombre octal d'un a tres dígits
xhh . . .Nombre hexadecimal d'un o més dígits

Classes d'emmagatzematge C++

La classe d'emmagatzematge automàtic

És una classe d'emmagatzematge per defecte per a totes les variables locals.

SINTAXI

|_+_|

La classe d'emmagatzematge del registre

S'utilitzen per definir variables locals que s'emmagatzemen en un registre en lloc de RAM. Vol dir que la variable té una mida màxima igual a la mida del registre i no se li pot aplicar l'operador ‘&’.

SINTAXI

|_+_|

La classe d'emmagatzematge estàtica

Indica al compilador que mantingui la variable local existent durant el programa en lloc de crear-la i destruir-la. Per tant, fer que les variables locals siguin estàtiques els ofereix mantenir els seus valors entre trucades de funció.

La classe d'emmagatzematge extern

S'utilitza per donar la referència d'una variable global que és visible per a cada fitxer de programa. Quan utilitzeu 'extern', la variable no es pot inicialitzar.

La classe d'emmagatzematge mutable

L'especificador mutable s'aplica als objectes de classe. Ofereix un membre d'un objecte per substituir la funció de membre const. És a dir, un membre mutable es pot modificar mitjançant una funció de membre const.

Tipus de modificadors de C++

C++ ofereix els tipus de dades char, int i double perquè els precedeixin modificadors. S'utilitza un modificador per canviar el significat del tipus base de manera que s'ajusti amb més precisió a les necessitats de diverses situacions.

Els modificadors de tipus de dades s'esmenten a continuació—

  • signat
  • sense signar
  • llarg
  • curt

Els modificadors amb signe, sense signar, llarg i curt s'apliquen als tipus de base d'enters. A més, signat i unsigned s'apliquen a char, i long s'aplica a double.

Els modificadors signats i sense signar s'utilitzen com a prefixos als modificadors llargs o curts.

Tipus de qualificatius

    const: Objectes de tipus const no es pot canviar pel programa durant l'execució.volàtil: L'edició volàtil indica al compilador que el valor de la variable es pot canviar de maneres no especificades explícitament pel programa.restringir: un punter qualificat per restringir és l'únic mitjà pel qual es pot accedir a l'objecte al qual apunta. El C99 afegeix un nou tipus de qualificador anomenat restrict.

EXEMPLE

|_+_|

SORTIDA

|_+_|

Operadors en C++

Un operador és un símbol que ajuda el compilador a realitzar manipulacions matemàtiques o lògiques específiques. C++ té diversos operadors integrats i ofereix els següents tipus d'operadors −

  • Operador aritmètic
  • Operador lògic
  • Operador bit a bit
  • Operador d'assignació
  • Operador relacional
  • Operador divers

Operador aritmètic

Els operadors aritmètics no són més que els operadors que s'utilitzen per realitzar operacions aritmètiques entre variables o dos valors.

Operadors Descripció Sintaxi
+Afegeix dos operandsa+b
*Multiplica dos operandsa*b
Resta dos operandsa-b
/Divideix el primer operand pel segona/b
%Retorna la resta quan el primer operand es divideix pel segona%b
++Augmenta el valor sencer en una++
Disminueix el valor enter en una–

Operador lògic

Els operadors lògics de C++ combinen els valors vertaders o fals de les variables perquè pugueu esbrinar el seu valor de veritat resultant.

Operadors Descripció Sintaxi
O (||)Cert si algun dels operands és cert(A || B) és cert.
I (&&)Cert si els dos operands són certs(A & B) és fals.
No (!)Si una condició és certa, l'operador NOT lògic farà false.!(A &&B) és cert.

Operador bit a bit

En C++, els operadors bit a bit realitzen càlculs bit a bit sobre nombres enters. Operador bit a bit: retorna 1 si tots dos bits són 1 sinó 0. Exemple: a = 10 = 1010 (binari) b = 4 = 0100 (binari a & b = 1010 i 0100 = 0000 = 0 (decimal) bits o operador: retorna 1 si algun dels bits és 1 sinó 0.

Operadors Descripció Sintaxi
>>Desplaçament binari a la dreta x>>x>>
<< Desplaçament binari a l'esquerrax<<
^XOR binarix ^ y
&I binarix & y
|OR binarix | i
~NO binari~x

Operador d'assignació

Els operadors d'assignació assignen valors a les variables. a = 5 és un operador d'assignació que estableix el valor 5 a la dreta a la variable an a l'esquerra.

Operadors Descripció Sintaxi
=Assignació de valors de l'expressió del costat dret a l'operand del costat esquerre.a=b+c
+=Afegiu l'operand de la dreta amb l'operand de l'esquerra i després assigneu-lo a l'operand esquerre.a+=b a=a+b
-=Resteu l'operand de la dreta de l'operand de l'esquerra i després assigneu-lo a l'operand esquerre.a-=b a=a-b
/=Dividiu l'operand de l'esquerra amb l'operand de la dreta i després assigneu-lo a l'operand esquerre.a/=b a=a/b
%=Agafeu el mòdul utilitzant l'operand esquerre i dret i assigneu el resultat a l'operand esquerre.a%=b a=a%b
*=Calcula el valor de l'exponent mitjançant operands i assigna valor a l'operand esquerre.a*=b a=a*b
&=Realitza AND bit a bit a l'operand i assigna valor a l'operand esquerre.a&=b a=a&b
|=Realitza OR bit a bit a l'operand i assigna valor a l'operand esquerre.a|=b a=a|b
^=Realitza OR bit a bit a l'operand i assigna valor a l'operand esquerre.a^=b a=a^b
>>=Realitzeu el desplaçament a la dreta bit a bit a l'operand i assigneu un valor a l'operand esquerre.a>>=b a=a>>b
<<=Realitza el desplaçament a l'esquerra bit a bit a l'operand i assigna valor a l'operand esquerre.a<<= b a= a << b

Operador relacional

Els operadors relacionals són els operadors que s'utilitzen per comparar dos valors o objectes.

Operadors Descripció Sintaxi
>Més gran quex > y
<Menys quex
==Igualx == y
!=No igualx != y
>=Major o igual ax >= y
<= Menor o igual ax<= y

Operadors diversos

Operador Descripció
Condition ? X : YSi la condició és certa, retorna el valor de X, en cas contrari retorna el valor de Y.
,Fa que es realitzi una seqüència d'operacions. El valor de la coma és el valor de l'última expressió de la llista separada per una coma.
mida deRetorna la mida d'una variable. Per exemple, sizeof(a), on 'a' és un nombre enter i retornarà 4.
*És un punter a una variable. Per exemple *var; apuntarà a una variable var.
CastConverteix un tipus de dades a un altre.
. (punt) i -> (fletxa)S'utilitzen per fer referència a membres individuals de classes, estructures i sindicats.
&Retorna l'adreça de la variable.

Bucles C++

per bucle

El bucle C++ for s'utilitza per repetir una part del programa diverses vegades. Si el nombre d'iteracions és fix, es recomana utilitzar bucles for que while o do-while.

El bucle C++ for és el mateix que C/C#. Podem inicialitzar variables, comprovar la condició i augmentar/disminuir el valor.

SINTAXI

|_+_|

EXEMPLE

|_+_|

SORTIDA

|_+_|

For Loop imbricat

En C++, podeu utilitzar el bucle for dins d'un altre bucle for. Es coneix com a bucle for imbricat. El bucle interior s'executa completament quan el bucle exterior s'executa una vegada. Així, si el bucle exterior i el bucle interior s'executen quatre vegades, el bucle intern s'executarà quatre vegades per a cada bucle exterior, és a dir, un total de 16 vegades.

EXEMPLE

|_+_|

SORTIDA

|_+_|

Bucle mentre

En C++, el bucle while s'utilitza per repetir una part del programa diverses vegades. Si el nombre d'iteracions no està fixat, es recomana utilitzar un bucle while en lloc de bucle for.

SINTAXI

|_+_|

EXEMPLE

|_+_|

SORTIDA

|_+_|

Bucle While niat

En C++, podeu utilitzar un bucle while dins d'un altre bucle while; es coneix com un bucle while imbricat. El bucle while imbricat s'executa quan el bucle exterior s'executa una vegada.

EXEMPLE

|_+_|

SORTIDA

|_+_|

Bucle do-while

El bucle do-while de C++ s'utilitza per repetir una part del programa diverses vegades. Si el nombre d'iteracions no està fixat i heu d'executar el bucle almenys una vegada, es recomana utilitzar un bucle do-while.

El bucle do-while de C++ s'executa almenys una vegada perquè la condició es verifica després del cos del bucle.

SINTAXI

|_+_|

EXEMPLE

|_+_|

SORTIDA

|_+_|

Bucle Do-While niu

En C++, si utilitzeu un bucle do-while dins d'un altre bucle do-while, es coneix com un bucle do-while imbricat. El bucle do-while imbricat s'executa completament per a cada bucle do-while exterior.

EXEMPLE

|_+_|

SORTIDA

|_+_|

Declaracions de presa de decisions

Hi ha situacions a la vida real en què necessites prendre algunes decisions i, a partir d'aquestes decisions, decideixes què has de fer a continuació. També sorgeixen problemes similars en la programació on cal prendre algunes decisions, i en funció d'aquestes decisions, executarà el següent bloc de codi.

Les declaracions de presa de decisions en llenguatges de programació decideixen la direcció del flux d'execució del programa. Les declaracions de presa de decisions disponibles en C++ són:

  • declaració si
  • if..else declaracions
  • declaracions if imbricades
  • si-més-si escala
  • Declaracions de salt:
    • trencar
    • continuar
    • anar a
    • tornar

declaració si

si la declaració és una simple declaració de presa de decisions. S'utilitza per decidir si el bloc d'instruccions s'executarà o no. Si la condició és certa, s'executa un bloc d'instruccions en cas contrari.

SINTAXI

|_+_|

Aquí, condicions després de l'avaluació serà vertader o fals. if accepta valors booleans.

EXEMPLE

|_+_|

SORTIDA

|_+_|

si altra declaració

La sentència if diu que si una condició és certa, executarà el bloc de declaracions i si la condició és falsa no s'executarà. Podeu utilitzar la instrucció else amb la instrucció if per executar un bloc de codi quan la condició és falsa.

SINTAXI

|_+_|

EXEMPLE

|_+_|

SORTIDA

|_+_|

Declaracions if niades

Un if imbricat en C++ és una instrucció if que s'adreça a una altra sentència if. Les declaracions if niades signifiquen que una declaració if dins d'una altra sentència if. Sí, tant C com C++ ens ofereixen declaracions if imbricades dins de declaracions if, és a dir, podeu col·locar una declaració if dins d'una altra instrucció if.

SINTAXI

|_+_|

EXEMPLE

|_+_|

SORTIDA

|_+_|

si-més-si escala

Un usuari pot decidir entre diverses opcions. Les instruccions if s'executen de dalt a baix. Tan bon punt les condicions controlen si és cert, aleshores s'executa la declaració associada amb això i la resta, si s'acaba l'escala. Si les condicions no són certes, es realitzarà l'última i última declaració.

SINTAXI

|_+_|

EXEMPLE

|_+_|

SORTIDA

|_+_|

Declaracions de salt

Trencar

Aquesta declaració s'utilitza per acabar el bucle. Tan bon punt es troba la instrucció break des d'un bucle, les iteracions del bucle s'aturen allà i el control torna immediatament a la primera instrucció després del bucle.

SINTAXI
Trencar;

Les declaracions Break s'utilitzen en situacions en què no estem segurs del nombre real d'iteracions del bucle o finalitzem el bucle en funció d'alguna condició.

EXEMPLE

|_+_|

SORTIDA

|_+_|

Continua

La sentència continue és el contrari de la sentència break; en lloc d'acabar el bucle, força la següent iteració del bucle.

La instrucció continue obliga el bucle a executar la següent iteració. Quan s'executa la instrucció continue, s'omet el codi dins del bucle que segueix la instrucció continue i començarà la següent iteració.

SINTAXI

|_+_|

EXEMPLE

|_+_|

SORTIDA

|_+_|

Anar a

La sentència goto en C++ fa referència a una instrucció de salt incondicional que s'utilitza per saltar d'un punt a un altre dins d'una funció.

SINTAXI

|_+_|

EXEMPLE

|_+_|

SORTIDA

|_+_|

Tornar

El retorn en C++ retorna el flux de l'execució a la funció. Aquesta declaració no necessita cap enunciat condicional. Un cop executada la instrucció, el flux del programa s'atura immediatament i retorna el control des d'on es va cridar. La instrucció return pot o no retornar res per a una funció void, però s'ha de retornar un valor de retorn per a una funció no void.

SINTAXI

|_+_|

EXEMPLE

|_+_|

SORTIDA

|_+_|

Funcions C++

Una funció fa referència a un grup d'instruccions que pren l'entrada, la processa i retorna la sortida. L'objectiu de la funció és combinar tasques que es fan una i altra vegada. Si teniu diverses entrades, no cal que torneu a escriure el mateix codi. Podeu cridar la funció amb un conjunt de dades diferent conegut com a paràmetres.

El programa C++ té almenys una funció, la funció main().

Definició d'una funció

Una definició de funció en C++ consta d'una capçalera de funció i un cos.

    Tipus de retorn− Pot retornar un valor. Algunes funcions realitzen les operacions sense retornar cap valor. En això, return_type és la paraula clau buit .Nom de la funció− És el nom real de la funció. El nom de la funció i la llista junts constitueixen la signatura de la funció.Paràmetres− Un paràmetre és com un marcador de posició. Quan s'invoca una funció, passeu el valor al paràmetre. Aquest valor es coneix com a paràmetre o argument real. La llista de paràmetres fa referència a l'ordre, el tipus i un nombre de paràmetres d'una funció.Cos de la funció− El cos conté una col·lecció d'enunciats que defineixen què fa la funció.

EXEMPLE

|_+_|

Declaració d'una funció

En C++, les funcions s'han de declarar abans d'utilitzar-les. Podeu declarar una funció proporcionant el seu valor de retorn, el nom i els tipus dels seus arguments. Els termes dels arguments són opcionals. Una definició de funció compta com una declaració de funció.

EXEMPLE

|_+_|

Crida a una funció

Mentre creeu una funció C++, definiu què ha de fer la funció. Per utilitzar una funció, heu de cridar o invocar aquesta funció.

Quan el programa crida una funció, el control del programa es transfereix a la funció cridada. Una funció cridada realitza una tasca definida, i quan s'executa la seva instrucció de retorn o quan s'arriba a la clau de tancament de la funció, retorna el control del programa al programa principal.

EXEMPLE

|_+_|

Arguments de funció

Si una funció utilitza arguments, hauria de declarar variables que acceptin els valors dels arguments. Aquestes variables es coneixen com a paràmetres formals de la funció.

    Crida per valor: Copia el valor real de l'argument al paràmetre formal de la funció. Els canvis fets al paràmetre dins de la funció no afecten l'argument.Trucada amb punter: Copia l'adreça de l'argument al paràmetre formal. Dins d'aquesta funció, l'adreça s'utilitza per accedir a l'argument utilitzat a la trucada. Vol dir que els canvis fets al paràmetre afecten l'argument.Trucada per referència: Copia la referència d'un argument al paràmetre formal. Dins d'aquesta funció, la referència s'utilitza per accedir a l'argument utilitzat a la trucada. Això vol dir que els canvis fets al paràmetre afecten l'argument.

Nombres C++

Normalment, quan treballem amb Numbers, fem servir tipus de dades primitius com int, short, long, float, double, etc. El nombre de tipus de dades, els seus possibles valors i els intervals de nombres s'han explicat mentre es parla dels tipus de dades C++.

EXEMPLE

|_+_|

SORTIDA

|_+_|

Operadors matemàtics en C++

S.NO Funcions Propòsit
1 doble pecat (doble);Pren un angle (com a doble) i retorna el sinus.
2 doble cos(doble);Pren un angle (com a doble) i retorna el cosinus.
3 doble bronzejat (doble);Pren un angle (com a doble) i retorna la tangent.
4 doble pow (doble, doble);El primer és un nombre que voleu augmentar i el segon és el poder que voleu augmentar t
5 doble registre (doble);Pren un nombre i retorna el registre natural d'aquest nombre.
6 doble hipot (doble, doble);Si passeu aquesta longitud de dos costats d'un triangle rectangle, us retornarà la longitud de la hipotenusa.
7 doble quadrat (doble);Passeu a la funció un nombre i us dóna l'arrel quadrada.
8 int abs(int);Retorna el valor absolut d'un nombre enter que se li passa.
9 planta doble (doble);Troba l'enter que és menor o igual a l'argument que se li passa.
10 doble fabs (doble);Retorna el valor absolut de qualsevol nombre decimal que se li passa.

EXEMPLE

|_+_|

SORTIDA

|_+_|

Matrius C++

Una matriu en C++ és una col·lecció d'elements emmagatzemats en ubicacions de memòria contigües i es pot accedir als elements de manera aleatòria mitjançant els índexs d'una matriu. S'utilitzen per emmagatzemar elements similars, ja que el tipus de dades ha de ser el mateix per a tots els elements. Poden emmagatzemar tipus de dades primitives com char, int, float, double, etc. Per afegir-hi, una matriu en C++ pot emmagatzemar tipus de dades derivades com les estructures, punters, etc. A continuació es mostra la representació pintoresca d'una matriu .

Declaració de matriu

SINTAXI

|_+_|

EXEMPLE

|_+_|

Aquí,

  • int: un tipus d'element que cal emmagatzemar
  • y: el nom de la matriu
  • 4: la mida de la matriu

Accediu als elements de la matriu

Cada element d'una matriu està connectat amb un nombre. El nombre s'anomena índex de matriu. Podeu accedir als elements d'una matriu mitjançant els índexs.

SINTAXI

|_+_|

EXEMPLE

|_+_|

Aquests són alguns conceptes importants de les matrius C++

    Matrius multidimensionals: Una matriu bidimensional és la forma més simple de la matriu multidimensional.Apuntador a una matriu: generareu un punter al primer element d'una matriu esmentant el nom de la matriu sense l'índex.Passant matrius a funcions: Passareu a la funció un punter a una matriu especificant el nom de la matriu sense un índex.Matriu de retorn de funcions: C++ permet que la funció torni una matriu.

Cordes de C++

És una col·lecció de personatges. Hi ha dos tipus de cadenes que s'utilitzen en el llenguatge de programació C++:

  • Cadenas que són objectes de la classe string
  • Cordes C

La classe string

La biblioteca C++ proporciona un corda tipus de classe que admet totes les operacions esmentades anteriorment, a més de molta més funcionalitat.

EXEMPLE

|_+_|

SORTIDA

|_+_|

Cordes de C

Aquesta cadena es va originar dins del llenguatge C i és compatible amb C++. Aquesta cadena és una matriu unidimensional de caràcters que acaba amb un caràcter nul ''. Així, la cadena acabada en nul·la conté els caràcters que la formen seguits d'un nul.

EXEMPLE

|_+_|

SORTIDA

|_+_|

Poques funcions que manipulen cadenes de terminació nul·la

    strcpy(s1, s2);

Copia la cadena s2 a la cadena s1.

    strcat(s1, s2);

Concatena la cadena s2 al final de la cadena s1.

    strstr(s1, s2);

Retorna un punter a l'aparició de la cadena s2 a la cadena s1.

    strlen(s1);

Retorna la longitud de la cadena s1.

    strcmp(s1, s2);

Retorna 0 si s1 i s2 són iguals; menor que 0 si s1s2.

    strchr(s1, ch);

Retorna el punter a l'aparició del caràcter ch a la cadena s1.

Apuntadors C++

Els punters són una representació d'adreces. Permeten programes per simular trucades per referència i per crear i manipular estructures de dades dinàmiques.

SINTAXI

|_+_|

Com utilitzar un punter?

  • Primer, definiu una variable punter
  • Ara assigneu l'adreça de la variable a un punter mitjançant (&) que retorna l'adreça d'aquesta variable.
  • Accedint als valors emmagatzemats a l'adreça mitjançant (*) que retorna el valor de la variable situada a l'adreça especificada pel seu operand.

Pocs conceptes de punters

    Punters nuls: És una constant amb un valor zero definit en diverses biblioteques estàndard.Aritmètica del punter: Es poden utilitzar quatre operadors aritmètics en els punters: ++, –, +, –Punters vs matrius: Hi ha una estreta connexió entre punters i matrius.Matriu de punters: Podeu definir matrius per contenir diversos punters.Punter a punter: C++ us ofereix tenir un punter sobre un punter i així successivament.Passant punters a funcions: Passar per referència o per adreça permet que la funció cridada canviï la instrucció donada a la funció de trucada.Retorna el punter de Funcions: C++ ofereix una funció per retornar un punter a una variable local, una variable estàtica i també una memòria assignada dinàmicament.

EXEMPLE

|_+_|

SORTIDA

|_+_|

Referències C++

Una variable de referència és un nom per a una variable ja existent. Un cop inicialitzada una referència, es pot utilitzar el nom de la variable o el nom de la referència per referir-se a la variable.

EXEMPLE

|_+_|

SORTIDA

|_+_|

C++ Data i hora

La biblioteca C++ no proporciona un tipus de data adequat. Hereta les estructures i funcions per a la manipulació de data i hora de C. Per accedir a les funcions i estructures relacionades amb la data i l'hora, hauríeu d'incloure el fitxer de capçalera al vostre programa C++.

Hi ha quatre tipus relacionats amb el temps: clock_t, time_t, size_t i tm. Els tipus: clock_t, size_t i time_t són capaços de representar l'hora i la data del sistema com un nombre enter.

EXEMPLE

|_+_|

Algunes funcions importants

    temps_t temps (hora_t *hora);

Retorna l'hora del calendari actual en diversos segons transcorreguts des de l'1 de gener de 1970. Si el sistema no té temps, es retorna .1.

    char *ctime(const time_t *time);

Retorna un punter a una cadena del formulari dia mes any hores: minuts: segons.

    struct tm *localtime(const time_t *time);

Torna un punter a tm estructura que representa l'hora local.

    clock_t clock(void);

Retorna un valor que s'aproxima al temps que s'ha executat el programa cridant. Es retorna un valor de .1 si no hi ha temps disponible.

    char * asctime (const struct tm * temps);

Retorna un punter a la cadena que conté la informació emmagatzemada en una estructura apuntada per temps convertida a la forma: dia mes data hores: minuts: segons

    struct tm *gmtime(const time_t *time);

Retorna un punter al temps en forma d'estructura tm.

    time_t mktime(struct tm *time);

Retorna l'hora del calendari que es troba a l'estructura apuntada per temps.

    doble difftime (time_t temps2, temps_t temps1);

Calcula la diferència en segons entre el temps1 i el temps2.

    size_t strftime();

Es pot utilitzar per formatar la data i l'hora en un format específic.

Estructures de dades C++

Les matrius C++ us ofereixen definir variables que combinen diversos elements de dades del mateix tipus. Tot i així, el estructura és un altre tipus de dades definit per l'usuari que us permetrà combinar elements de dades de diferents tipus. Les estructures s'utilitzen per representar un registre.

Definició d'una estructura

Per definir una estructura, hauríeu d'utilitzar la instrucció struct. La instrucció struct defineix un tipus de dades, amb més d'un membre, per al programa.

|_+_|

El etiqueta d'estructura és opcional. Al final de la definició, abans del punt i coma final, hauríeu d'especificar una o més variables d'estructura.

Accés als membres de l'estructura

Per accedir a qualsevol membre de l'estructura, podeu utilitzar el operador d'accés de membres (.) . L'operador d'accés al membre es codifica com un període entre el nom d'una variable d'estructura i un membre de l'estructura al qual volem accedir. Ho faries servir una estructura paraula clau per definir variables de tipus d'estructura.

Estructures com a arguments de funció

Podeu passar l'estructura com a argument de funció de la mateixa manera que passeu qualsevol altra variable o punter.

EXEMPLE

|_+_|

SORTIDA

|_+_|

Classes i objectes C++

Tot en C++ està relacionat amb classes i objectes, juntament amb els seus atributs i mètodes. Per exemple: a la vida real, un autobús és un objecte . L'autobús té atributs , com ara el pes i el color, i mètodes , com ara la conducció i el fre.

Els atributs i els mètodes són variables i funcions que pertanyen a la classe. Es coneixen com a membres de classe. La classe és un tipus de dades definit per l'usuari que podeu utilitzar en un programa i funciona com a constructor d'objectes o com a model per crear objectes.

Crea una classe

Si voleu crear una classe, heu d'utilitzar classe paraula clau:

EXEMPLE

|_+_|

Crea un objecte

En C++, un objecte es crea a partir d'una classe.

Per crear un objecte, heu d'especificar el nom de la classe, seguit del nom de l'objecte. Per accedir als atributs de classe, utilitzeu la sintaxi de punt (.) a l'objecte:

EXEMPLE

|_+_|

Pocs conceptes en detall

    Funcions dels membres de la classe: Una funció membre és una funció que té el seu prototip dins de la definició de classe igual que qualsevol altra variable.Modificadors d'accés a classes: un membre de la classe es pot definir com a privat, públic, protegit. Per defecte és privat.Constructor: Un constructor és una funció d'una classe que es crida quan es crea un objecte nou.Destructor: Un destructor és una funció que es crida quan s'elimina l'objecte creat.Constructor de còpies:És un constructor que crea un objecte inicialitzant-lo amb un objecte de la mateixa classe, que s'ha creat anteriorment.Funcions d'amic: Dóna accés complet als membres privats i protegits d'una classe.Funcions en línia: El compilador expandeix el codi al cos de la funció en lloc d'una crida a la funció.aquest punter: Cada objecte té un punter especial això que apunta al propi objecte.Membres estàtics d'una classe: Tant els membres de dades com els membres de funció d'una classe es poden declarar com a estàtics.

Herència C++

L'herència és un procés en el qual un objecte adquireix totes les propietats i comportaments del seu objecte pare automàticament. Podeu modificar els atributs i les accions que es defineixen en altres classes.

La classe que hereta els membres d'una altra classe es coneix com a classe derivada, i una classe els membres de la qual s'hereten es coneix com a classe base. La classe derivada és la classe especialitzada per a la classe base.

Tipus d'Herència

    Herència únicaés el tipus d'herència en què la classe derivada només s'hereta d'una classe base.

'A' és la classe base,

'B' és una classe derivada.

cplusplus
    Herència multinivellés un procés de derivació d'una classe a partir d'una altra classe derivada. La classe C hereta les propietats de la classe B i la classe B hereta les propietats de la classe B. A és la classe pare de B i la classe B és la classe pare de C.
img 617dd1cc84e68
    Herència múltipleUna classe derivada es crea a partir d'una classe base o més. La classe C hereta les propietats i el comportament de la classe B i la classe A. Per tant, aquí la classe A i la classe B són les classes pares per a la classe C.
img 617dd1ccd67cc
  • En Herència de múltiples camins, una classe derivada es crea a partir d'una altra classe derivada i la mateixa classe base d'una altra classe derivada. Aquesta herència no és compatible amb . NET Llenguatges com C#, F#, etc.

La classe D hereta les propietats i el comportament de la classe C i la classe B, així com de la classe A. La classe C i la classe B hereta la classe A. La classe A és el pare de la classe B i la classe C i la classe D.

img 617dd1cd9230a
    Herència híbridaés una combinació de més d'una herència. Per tant, pot ser una combinació d'herència multinivell i herència múltiple i herència multinivell i herència de camins múltiples Herència multinivell i múltiple.
img 617dd1cdf0c4e

Modificadors d'accés C++

Els modificadors d'accés s'utilitzen per implementar un aspecte essencial de la programació orientada a objectes conegut com a ocultació de dades. Els modificadors d'accés d'una classe s'utilitzen per assignar accés als membres de la classe. Estableix algunes restriccions als membres de la classe perquè no puguin accedir directament a les funcions externes.

Hi ha tres tipus de modificadors d'accés disponibles en C++:

  • Públic
  • Privat
  • Protegit

Parlem-ne detalladament:

Públic

Tots els membres de la classe que es declaren sota l'especificador públic estan disponibles per a tothom. Altres classes i funcions també poden accedir a les funcions membres declarades com a públiques. Es pot accedir als membres públics d'una classe des de qualsevol lloc del programa mitjançant l'operador d'accés (.) amb l'objecte d'aquesta classe.

EXEMPLE

|_+_|

SORTIDA

|_+_|

Privat

Les funcions dels membres dins de la classe només poden accedir als membres de la classe que estan declarats privats. No s'hi pot accedir directament cap objecte o funció fora de la classe. Només les funcions d'amic poden accedir a les dades privades dels membres d'una classe.

EXEMPLE

|_+_|

SORTIDA

|_+_|

Protegit

Un modificador d'accés protegit és el mateix que un modificador d'accés privat, ja que no es pot accedir fora de la seva classe tret que, amb l'ajuda d'una classe amiga, la diferència és que qualsevol classe derivada pot accedir als membres de la classe que es declaren com a protegits. també d'aquesta classe.

EXEMPLE

|_+_|

SORTIDA

|_+_|

Sobrecàrrega de C++

El llenguatge de programació C++ us permet especificar més d'una definició per a funció nom o an operador en el mateix àmbit, anomenat sobrecàrrega de funcions i sobrecàrrega de l'operador , respectivament.

Una declaració sobrecarregada es declara amb el mateix nom que una declaració declarada anteriorment en el mateix àmbit, excepte que ambdues declaracions tenen arguments i definicions diferents.

Sobrecàrrega de funcions

La sobrecàrrega de funcions és una característica que us ofereix tenir més d'una funció amb el mateix nom però una llista de paràmetres diferent.

EXEMPLE

|_+_|

SORTIDA

|_+_|

Polimorfisme C++

Sobrecàrrega de l'operador

Podeu fer que els operadors funcionin per a classes definides per l'usuari. Això significa que C++ pot proporcionar als operadors un significat especial per a un tipus de dades. Això es coneix com a sobrecàrrega de l'operador.

EXEMPLE

|_+_|

SORTIDA

|_+_|

És un concepte important de programació orientada a objectes. Significa més d'una forma. És a dir, una mateixa entitat es comporta de manera diferent en diferents escenaris.

Anulació de funcions

Podeu tenir la mateixa funció a la classe base així com a les classes derivades. Quan crideu a la funció mitjançant un objecte de la classe derivada, s'executa la funció de la classe derivada en lloc de la classe base.

Per tant, s'executen diferents funcions en funció de l'objecte que crida la funció. Això s'anomena substitució de funcions

EXEMPLE

|_+_|

SORTIDA

|_+_|

Funcions virtuals C++

En C++, és possible que no pugueu anul·lar funcions si fem servir un punter de classe base per apuntar a un objecte de la classe derivada.

L'ús de funcions virtuals a la classe base garanteix que la funció es pugui anul·lar en aquests casos. Per tant, les funcions virtuals estan sota la substitució de funcions.

Funcions virtuals pures

És possible que vulgueu incloure una funció virtual en una classe base de manera que es pugui redefinir en una classe derivada per adaptar-se als objectes d'aquesta classe, però que no hi hagi cap definició significativa que pugueu donar per a la funció a la classe base. .

EXEMPLE

|_+_|

Abstracció de dades C++

L'abstracció de dades és una de les característiques essencials de la programació orientada a objectes en C++. L'abstracció significa mostrar només informació rellevant i ocultar els detalls. L'abstracció de dades es refereix a proporcionar només informació essencial sobre les dades del món exterior, amagant els detalls de fons o la implementació.

Abstracció mitjançant classes

Podeu implementar l'abstracció en C++ amb l'ajuda de classes. La classe us ajuda a agrupar els membres de dades i les funcions dels membres mitjançant especificadors d'accés disponibles. Una classe pot decidir quin membre de dades serà visible per al món exterior i quin no.

Abstracció mitjançant especificadors d'accés

Els especificadors d'accés tenen un paper vital en la implementació de l'abstracció en C++. Podeu utilitzar els especificadors d'accés per aplicar restriccions als membres de la classe. Per exemple:

  • Es pot accedir als membres declarats com a públics en una classe des de qualsevol lloc del programa.
  • Només es pot accedir als membres declarats com a privats d'una classe des de la classe. No se'ls permet accedir des de cap part del codi fora de la classe.

EXEMPLE

|_+_|

SORTIDA

|_+_|

Encapsulació de dades C++

És el procés de combinar funcions i membres de dades en una sola unitat anomenada classe. Això és per evitar l'accés a les dades directament. L'accés a ells es facilita a través de les funcions de la classe. És una de les característiques populars de la programació orientada a objectes que ajuda a amagar dades.

Per implementar això

  • Feu que tots els membres de les dades siguin privats.
  • Creeu un setter públic i funcions d'obtenció per a cada membre de dades de manera que la funció set estableixi el valor del membre de dades i la funció get obtingui el valor del membre de dades.

EXEMPLE

|_+_|

SORTIDA

|_+_|

Classes abstractes de C++

La classe C++ es fa abstracta declarant una de les seves funcions com a funció vital>pura virtual. Una funció virtual pura s'esmenta posant = 0 a la seva declaració. Les classes derivades han de proporcionar la seva implementació.

EXEMPLE

|_+_|

SORTIDA

|_+_|

Fitxers i fluxos C++

S.No Tipus de dades Descripció
1 de corrent Representa el flux de fitxers de sortida i s'utilitza per crear fitxers i escriure informació als fitxers.
2 ifstream Representa el flux del fitxer d'entrada i s'utilitza per llegir informació dels fitxers.
3 fstream Representa el flux d'arxius en general i té la capacitat tant ofstream com ifstream.

Obrint un fitxer

S'ha d'obrir un fitxer abans de poder llegir-lo o escriure-hi. Es pot utilitzar un objecte fstream o ofstream per obrir un fitxer per escriure. S'utilitza un objecte ifstream per obrir el fitxer només amb finalitats de lectura.

S.No Bandera de mode Descripció
1 ios::menjat Tota la sortida al fitxer s'adjuntarà al final.
2 ios::app Obre un fitxer per a la sortida i mou el control de lectura o escriptura al final del fitxer.
3 ios::trunc Si el fitxer ja existeix, el contingut es truncarà abans d'obrir-lo.
4 ios::fora Obre un fitxer per escriure.
5 ios::in Obre un fitxer per llegir-lo.

SINTAXI

|_+_|

Tancant un fitxer

Quan s'acaba un programa C++, esborra automàticament tots els fluxos, allibera tota la memòria assignada i tanca tots els fitxers que s'obren.

SINTAXI

|_+_|

Lectura d'un fitxer

Podeu llegir informació d'un fitxer al vostre programa mitjançant l'operador d'extracció de flux (>>). L'única diferència és que utilitzeu un objecte fstream o ifstream en lloc de l'objecte cin.

LLEGIR I ESCRIURE EXEMPLE

|_+_|

SORTIDA

|_+_|

Apuntadors de posició del fitxer

Tant ostream com istream proporcionen funcions de membre per reposicionar el punter de posició del fitxer. Aquestes funcions membres són seekp per a ostream i seekg per a istream. L'argument de seekp i seekg és un nombre enter llarg. Es pot esmentar un segon argument per indicar la direcció de cerca.

Gestió d'excepcions C++

La gestió d'excepcions en C++ és un procés per gestionar els errors en temps d'execució. Realitzeu la gestió d'excepcions perquè el flux normal de l'aplicació es pugui mantenir fins i tot després d'errors en temps d'execució.

En C++, una excepció és un esdeveniment o objecte que es llança en temps d'execució. Totes les excepcions es deriven de la classe std::exception. Si no gestionem l'excepció, imprimeix el missatge d'excepció i finalitza el programa.

Excepcions Descripcions
std::bad_exception S'utilitza per gestionar excepcions inesperades.
std::logic_failure Es pot detectar llegint un codi.
std::bad_typeid Generalment es llança mitjançant typeid.
std::runtime_error No es pot detectar llegint un codi.
std::excepció És una excepció i classe pare de totes les excepcions estàndard de C++.
std::bad_cast Generalment es llança mitjançant dynamic_cast.
std::bad_alloc Generalment es tira per nou.

El maneig d'excepcions de C++ es basa en tres paraules clau: provar, agafar, i llançar .

    provar− try block identifica un bloc de codi per al qual s'activarà una excepció particular. El segueixen un o més blocs de captura.agafar− Un programa detecta una excepció mitjançant un controlador d'excepcions. La paraula clau catch mostra la captura d'una excepció.llançar− Un programa llança l'excepció quan apareix un problema. Això es fa mitjançant una paraula clau throw.

EXEMPLE

|_+_|

Memòria dinàmica C++

La memòria es divideix en dues parts −

    La pila− Totes les variables declarades dins de la funció ocupen una memòria de la pila.El munt− Aquesta és la memòria no utilitzada del programa, i s'utilitza per assignar la memòria de manera dinàmica quan el programa s'executa.

Els programadors poden assignar espai d'emmagatzematge de manera dinàmica mentre el programa s'executa. Tot i així, els programadors no poden crear nous noms de variables i, per aquest motiu, l'assignació dinàmica requereix dos criteris:

  • Creació d'un espai dinàmic a la memòria
  • Emmagatzemar la seva adreça en un punter

La desassignació de memòria també és una part d'aquest concepte on la neteja d'espai es fa per a altres emmagatzematge de dades. Per desassignar la memòria dinàmica, podeu utilitzar l'operador suprimir. Per tant, l'assignació de memòria dinàmica fa referència a la gestió de memòria per a l'assignació de memòria dinàmica manualment.

operadors nous i suprimiu

Aquí, el tipus de dades pot ser qualsevol tipus de dades integrat que inclogui una matriu, o els tipus de dades definides per l'usuari tenen classe o estructura. Comencem amb els tipus de dades integrats

SINTAXI

|_+_|

Quan sentiu una variable que no està assignada dinàmicament i que ja no és necessària, podeu alliberar la memòria a la botiga gratuïta amb el 'suprimir' operador.

SINTAXI

|_+_|

EXEMPLE

|_+_|

Assignació de memòria dinàmica de matrius

Si tu com a programador; Voleu assignar memòria per a una matriu de caràcters amb l'ajuda de la mateixa sintaxi, podeu fer-ho.

EXEMPLE

|_+_|

Els espais de noms us ofereixen agrupar entitats amb nom que tenen àmbit global en àmbits més estrets, donant-los àmbit de l'espai de noms . Això també permet organitzar els elements dels programes en diferents àmbits lògics referits per noms. Un espai de noms és una característica present a C++ i no present a C. Es permeten diversos blocs d'espai de noms amb el mateix nom. Totes les declaracions dins dels blocs es declaren en l'àmbit denominat.

SINTAXI

|_+_|

EXEMPLE

|_+_|

SORTIDA

|_+_|

Espais de noms discontinus

Un espai de noms es defineix en diverses parts i un espai de noms està format per la suma de les seves parts definides. Les parts separades de l'espai de noms estan repartides en diversos fitxers.

SINTAXI

|_+_|

Espais de noms imbricats

Aquí podeu definir un espai de noms dins d'un altre espai de noms

SINTAXI

|_+_|

EXEMPLE

|_+_|

Plantilles C++

La plantilla és una característica de C++ que us ofereix escriure programes genèrics. En altres termes, podeu crear una única funció o una classe per treballar amb diferents tipus de dades mitjançant plantilles. Les plantilles s'utilitzen a la base de codi més gran per a la flexibilitat del codi i la reutilització dels programes.

Aquests conceptes s'utilitzen de dues maneres:

  • Plantilles de funcions
  • Plantilles de classe

Plantilles de funcions

Una plantilla de funció funciona igual que una funció normal, amb una diferència clau.

Una plantilla de funció única pot funcionar amb diferents tipus de dades, però una única funció normal pot funcionar amb un conjunt de tipus de dades.

Normalment, si voleu realitzar operacions idèntiques amb diversos tipus de dades, podeu utilitzar la sobrecàrrega de funcions per crear funcions amb la declaració de funcions.

Tot i que, un millor enfocament seria utilitzar plantilles de funcions perquè podeu realitzar la mateixa tasca escrivint menys codi i mantenible.

EXEMPLE

|_+_|

SORTIDA

|_+_|

Plantilles de classe

Igual que les plantilles de funcions, podeu crear plantilles de classe per a operacions de classe. Normalment, hauríeu de crear una classe diferent per a cada tipus de dades O crear altres variables i funcions membres dins de la classe única.

Això augmentarà innecessàriament la vostra base de codi i serà difícil de mantenir, ja que un canvi en una classe/funció s'ha de realitzar a totes les classes/funcions. Tot i que les plantilles de classe faciliten la reutilització del mateix codi per a tots els tipus de dades.

EXEMPLE

|_+_|

SORTIDA

|_+_|

Preprocessadors C++

Les directives del preprocessador són les línies incloses en el codi dels programes precedides d'un signe hash (#). Aquestes línies no són declaracions programades sinó directives per al preprocessador. El preprocessador examina el codi abans que comenci la compilació del codi i resol totes les directives abans que les declaracions normals generin cap codi.

Les directives del preprocessador s'estenen a través d'una única línia de codi. Tan bon punt es trobi el caràcter de nova línia, la directiva del preprocessador finalitza.

Hi ha 4 tipus principals de directives de preprocessador:

  • Macres
  • Inclusió de fitxers
  • Recopilació condicional
  • Altres directives

Macres

Les macros són un fragment de codi que rep un nom. Sempre que el compilador troba aquest nom, substitueix el nom pel fragment de codi real. La directiva '#define' s'utilitza per definir una macro.

EXEMPLE

|_+_|

SORTIDA

|_+_|

Macros C++ predefinides

    __LINE__

Conté el número de línia del programa quan es compila el programa.

    __DOSSIER__

Conté el nom de fitxer actual del programa quan s'està compilant.

    __DATA__

Conté la cadena que és la data de traducció del fitxer font al codi objecte.

    __TEMPS__

Conté una cadena d'hora:minut:segon que és l'hora en què es va compilar el programa.

Inclusió de fitxers

Aquesta directiva de preprocessador diu al compilador que inclogui un fitxer al programa. Hi ha dos tipus de fitxers que l'usuari conserva al programa:

    Fitxer de capçalera o fitxers estàndard: Aquests fitxers contenen la definició de funcions predefinides com printf(), scanf() etc. Aquests fitxers s'han d'incloure per treballar amb aquestes funcions. Es declara una funció diferent en fitxers de capçalera separats.Fitxers definits per l'usuari: Quan un programa esdevé enorme, és una bona pràctica dividir-lo en fitxers més petits i incloure'l sempre que sigui necessari. Aquest tipus de fitxers són fitxers definits per l'usuari.

Recopilació condicional

Ajuda a compilar una part específica del programa o a saltar la compilació d'alguna part concreta del programa en funció d'algunes condicions.

SINTAXI

|_+_|

Altres directives

A part de les directrius esmentades anteriorment, hi ha dues directives més que no s'utilitzen habitualment. Aquests són:

    Directiva #undef: La directiva #undef s'utilitza per no definir una macro existent.Directiva #pragma: és una directiva de propòsit especial i s'utilitza per activar o desactivar algunes funcions.

C++ Gestió del senyal

Els senyals són les interrupcions que el sistema operatiu proporciona a un procés que acabarà prematurament un programa. Prement Ctrl+C en un UNIX, LINUX , Mac OS X o Windows, podeu crear interrupcions.

Hi ha senyals que el programari no pot detectar, però hi ha una llista de senyals que podeu captar al vostre programa i prendre accions acceptables basades en senyals. El fitxer de capçalera C++ descriu aquests senyals.

S.No Senyal Descripció
1 SIGFPE Una operació aritmètica errònia, com ara una ruptura de zero o una operació de desbordament.
2 SIGABRT Finalització anormal del programa, com ara una trucada per avortar.
3 SIGINT Recepció d'un senyal d'enfocament interactiu
4 SEGELL Descobriment d'una instrucció il·legítima.
5 SIGTERM S'ha enviat una sol·licitud de finalització al programa.
6 SIGSEGV Accés al disc no vàlid.

La funció signal().

La biblioteca de gestió de senyals C++ inclou una funció de senyal per atrapar esdeveniments impredictibles.

SINTAXI

|_+_|

EXEMPLE

|_+_|

SORTIDA

|_+_|

La funció augmentar().

Amb la funció raise(), que pren un nombre de senyal enter com a argument, podeu produir senyals.

SINTAXI

|_+_|

EXEMPLE

|_+_|

SORTIDA

|_+_|

El multithreading és un tipus especialitzat de multitasca i la funció que permet que la vostra màquina executi dos o més programes simultàniament és una funció multitasca. Hi ha dos tipus de multitasca en general: basada en processos i basada en fils. L'execució paral·lela de programes es gestiona mitjançant la multitasca basada en processos. La multitasca basada en fils s'ocupa de l'execució paral·lela de parts del mateix programa. Hi ha dos o tres components d'un programa multifil que s'executaran simultàniament.

SINTAXI

|_+_|
S.NO Paràmetre Descripció
1 enfadat Una sola declaració que es pot enviar a routine-start. S'ha de transferir com un punter de tipus void per comparació. NULL es pot utilitzar quan no hi ha cap argument per moure's.
2 fil Un identificador opac i especial per al fil actual que retorna la subrutina.
3 attr Un atribut d'objecte invisible que es pot utilitzar per establir atributs de fil. Podeu definir un objecte amb propietats de fil, o NULL amb els valors per defecte.
4 iniciar_rutina La rutina C++ que un cop establerta, el fil s'executarà.

Fils que s'acaben

Utilitzem la següent rutina per finalitzar un fil POSIX:

|_+_|

Aquí, pthread exit s'utilitza per sortir d'un fil directament. Normalment, una vegada que un fil ha acabat la seva feina i ja no és necessari per funcionar, s'anomena la rutina pthread exit() .

Si main() acaba i surt amb pthread exit() abans dels fils que produeix, els altres fils poden començar a executar-se. En cas contrari, a mesura que main() acaba, s'acaben immediatament

Fils d'entrada i separació

Es segueixen dues rutines que podem utilitzar per introduir o eliminar fils.

|_+_|

La subrutina pthread join() bloqueja el fil cridant fins que s'acabi el fil 'threadid'. Un dels seus atributs determina si es pot unir o desconnectar quan es forma un fil. Només es pot unir per fils que es generen com a unibles. No es pot unir mai si es forma un fil com a separat.

Programació web en C++

I què és CGI?

Una col·lecció de directrius que descriuen com es comparteix la informació entre el servidor web i un script personalitzat és la típica interfície de passarel·la o CGI. Per als sistemes de passarel·la externs, la Interfície de passarel·la genèrica, o CGI, és un estàndard per a la interfície amb servidors d'informació com ara servidors HTTP. CGI/1.1 és l'última versió i CGI/1.2 està en desenvolupament.

Navegació per Internet

Vegem què passa quan premem un hiperenllaç per navegar per una determinada pàgina web o URL per tal de copsar el concepte de CGI. El vostre navegador es posa en contacte amb el servidor web HTTP i demana l'URL, és a dir, nom de fitxer per nom de fitxer. El servidor web analitza l'URL i cerca un nom de fitxer. Si es troba el fitxer sol·licitat, el servidor web tornarà a transferir el fitxer al navegador; en cas contrari, enviarà un missatge d'error dient que heu sol·licitat un fitxer no vàlid.

La Interfície de passarel·la popular (CGI) és un protocol bàsic que permet que les aplicacions es comuniquin amb servidors web i amb clients. És possible escriure aquests programes CGI en Python, PERL, Shell, C o C++, etc.

EXEMPLE

|_+_|

Configuració del servidor web

Assegureu-vos que el servidor web accepta CGI abans de continuar amb la programació CGI i que està dissenyat per acollir programes CGI. Molts dels programes CGI que executa el servidor HTTP es troben en un directori preconfigurat. Aquest directori s'anomena directori CGI i s'anomena /var/www/cgi-bin per convenció. Els fitxers CGI tindran extensions com a .cgi per convenció, tot i que són executables amb C++.

Capçaleres HTTP

    Set-Cookie: cadena

Configura la galeta que passa per la cadena.

    Última modificació: data

La data de l'última actualització del recurs.

    Durada del contingut: N

La longitud, en bytes, de les dades retornades. Per informar del temps aproximat de càrrega d'un fitxer, el navegador utilitza aquest valor.

    Tipus de contingut:

Una cadena MIME que especifica el format de la cadena

    Ubicació: URL

L'URL que s'ha de retornar, en lloc de l'URL sol·licitat. Aquest fitxer s'utilitzarà per redirigir una sol·licitud a un altre fitxer.

    Caducitat: Data

El dia en què les dades es van tornar inútils. El navegador hauria d'utilitzar-ho per decidir si s'ha d'actualitzar un lloc web.

Variables del mediambient

    TIPUS DE CONTINGUT: el tipus de dades de contingut que s'utilitzen quan el client envia el contingut adjunt al servidor. Per exemple, la càrrega de fitxers, etc.DURADA DEL CONTINGUT: Durada de la informació del qüestionari que només es pot obtenir per a sol·licituds POST.HTTP-COOKIE: retorna les galetes configurades en tipus de parell clau i valor.USUARI HTTP AGENT: El camp User-Agent de la capçalera de la sol·licitud proporciona informació sobre l'agent d'usuari que va iniciar la sol·licitud. És el nom d'un navegador a Internet.INFORMACIÓ RUTA: La direcció al fitxer d'script CGI.QUERY STRING: informació codificada per URL que s'envia amb una sol·licitud del procés GET.ADDRR REMOTO: l'adreça IP de l'amfitrió remot que permet l'apel·lació. Això pot ser útil per al registre o per a l'autenticació.HOSTRE REMUT: el nom complet de l'amfitrió que la cerca. Si aquesta informació no està disponible, és possible utilitzar REMOTE ADDR per obtenir una adreça IR.MÈTODE DE SOL·LICITUD: La metodologia utilitzada per produir la presentació. GET i POST són els enfocaments més populars.SCRIPT FILENAME: El camí complet cap a un script CGISERVER_NAME: El nom de domini o l'adreça IP del servidor.SERVER_SOFTWARE: El nom del programa i la versió que està executant el servidor.

Mètodes GET i POST

Quan intenteu transferir qualsevol detall del vostre navegador al servidor web i, eventualment, a la vostra aplicació CGI, heu de trobar-vos amb determinats escenaris. Dos enfocaments són els més utilitzats pel navegador per transferir aquesta informació al servidor web. Aquests enfocaments són el mètode GET i el mètode POST.

URL EXEMPLE Mètode GET

|_+_|

Ús de cookies

El protocol HTTP és un protocol sense estat. Però és important que un lloc web comercial conservi les dades de sessió entre diversos llocs. El registre d'un usuari, per exemple, finalitza un cop s'han completat diverses pàgines. Però com mantenir els detalls de la sessió per a l'usuari a tots els llocs web. La manera més fiable de recordar i controlar els interessos, les vendes, les comissions i altres detalls necessaris per millorar l'experiència dels visitants o les estadístiques del lloc és utilitzar galetes en determinats casos.

En forma de galeta, el vostre servidor transfereix algunes dades a la finestra del visitant. La cookie serà aprovada pel navegador. Si ho fa, es desa al disc dur del visitant com a arxiu de text sense format. Ara la galeta està preparada per a la recuperació quan l'usuari accedeix a una altra pàgina del vostre web. Quan es recupera, el servidor coneix/recorda allò emmagatzemat.

    Caduca-Això significa la data de caducitat de la cookie. Si està en blanc, quan el visitant surt del navegador, la galeta caducarà.Domini− Això mostra el nom de domini del lloc.Camí− Això indica el camí al directori o pàgina web de configuració de galetes. Si intenteu agafar una galeta d'algun directori o pestanya, pot ser nul·la.Segur− Si aquest camp inclou la paraula segur, només un servidor segur pot recuperar la galeta. Si aquest camp està en blanc, no s'aplica cap altra restricció.Nom = valor− En forma de parelles clau i valor, s'estableixen i es recuperen les galetes.

Exemple de càrrega de fitxers

|_+_|

Conclusió

Amb això arribem al final d'aquest tutorial de C++. Espero que això us hagi ajudat a entendre els conceptes bàsics sobre la programació en C++.