|
|
|
|
| Subiectul anterior :: Subiectul urmator |
| Autor |
Mesaj |
Royal Administrator


Data inscrierii: 11/Aug/2008 Mesaje: 359
|
Trimis: 24/08/2008 20:02 Titlul subiectului: C++ 5 |
|
|
1. Variabile de tip litera
Cum tinem minte o singura litera: Exemplu 'c'
Folosim variabile de tip litera. întâia data trebuie sa le declaram (a declara inseamna a defini), asta se
face fidel ca la tipul int, doar ca o sa folosim tipul char care este prescurtarea de la character
care in
engleza inseamna litera.
Exemplu: char o_variabila_de_tip_litera;
Daca vrem mai multe variabile: char a, b, c;
Daca vrem sa punem o litera intr-o variabila:
variabila = 'c';
sau
alta_variabila = 'b';
Se observa ca literele se dau intre apostrofuri nu intre ghilimele pentru ca nu este text normal.
Daca vrem sa punem o litera in mai multe variabile: a = b = c = 'd';
In toate variabilele a, b, si c se pune litera 'd'.
Sau daca vrem sa punem ce e intr-o variabila in alta variabila: o_variabila = alta_variabila;
Daca vrem sa afisam o variabila care contine o litera sau daca vrem sa afisam o litera direct:
printf("%c", o_variabila_char);
se afiseaza ce contine o_variabila_char
printf("%c", 'b');
se afiseaza litera b
La fel putem sa le combinam pe toate lucrurile pe care deja le stim:
#include <stdio.h>
1
int a, b, c;
char x, y, z;
main( )
{
a =b= -2;
c = 7;
x = 'b';
y = 'n';
z = x;
printf("%d, %c\n%d, %c\n, %d, %c", a, x, b, y, c, z);
}
Va afisa:
-2,b
-2,n
7,b
Analiza:
primul este %d, corespunde cu variabila intreaga a
care contine -2
al doilea este %c care corespunde cu variabila char x
care contine 'b'
.............si asa mai departe
Observatie: in z este ce este in x deci este litera 'b'.
2. Variabile de tip text
Cum putem utiliza un text intr-o variabila?
O variabila indica un loc din memoria calculatorului care poate contine date de un anumit tip.
Acel loc este limitat, adica are un maxim si nu se poate trece de acel maxim.
De exmplu variabilele de tip intreg pot tine minte numere pana la un maxim, nu pana la infinit.
Test: incearca sa vezi daca poti sa pui intr-o variabila numarul 9999999999999999999999999
si apoi incearca sa-l afisezi. O sa vezi ca nu se afiseaza ce crezi tu ca ar trebui!
De ce? Pentru ca este o zona de memorie care se termina si dupa aia nu mai poate sa tina minte
numere pentru ca sunt prea mari si ies din memoria variabilei.
De obicei un text este destul de mare, adica ocupa mult spatiu, si daca s-ar face o variabila care sa
arate locul unde este textul, textul va trebui sa fie mic. Atunci s-au facut altfel de variabilele de tip
text. Nu mai indica unde este tot textul ci indica in ce zona din memorie este prima litera din text dupa
care se indica cate locuri din memorie mai sunt ocupate de urmatoarele litere.
Ca sa tinem minte textul: acesta este un test
Definim o variabila de tip text care are:
r11;
un nume
r11;
o zona din memorie unde tine minte prima litera
2
r11;
cate litere poate sa aiba maxim textul
Variabila se declara astfel: ca o variabila litera, dar este mai speciala
char a[30];
Am declarat o variabila care se numeste a si arata spre o litera din cauza ca este de tip char dar dupa
ea pot urma maxim inca 30 litere pentru ca in paranteze patrate am pus numarul 30.
Acum dupa zona de memorie unde indica variabila a pot fi texte care sunt de extindere mai mica de
30, dar nu de mărime mai mare de 30. Un text mai mic nu va ocupa toata memoria si va lasa o zona
de memorie libera, dar aceea zona libera este blocata nu mai poate fi folosita pentru alte variabile.
Deci cand declaram o variabila de tip text trebuie sa ne gandim cat de mari vor fi textele care vor fi
tinute minte.
Textul acesta este un text este de lungime mai mic de 30.
in memoria calculatorului va fi astfel:
a cesta este un test \0 ......... spatiu gol....... pana la 30 de litere
. .
variabila a simbol special(este zero, nu litera O)
Am pus mai multe spatii pentru a fi asezat mai bine textul!
Deci in memorie va fi o zona speciala pentru prima litera, acolo va fi unde indica variabila de tip text,
iar apoi urmeaza textul care trebuie sa fie mai mic decat maximul pe care l-am spus noi la inceput
intre paranteze patrate. Apoi se pune un simbol special, simbolul \0 care arata ca textul nostru s-a
terminat.Acest simbol special se pune chiar daca textul nostru ocupa intreaga memorie specificata la
inceput. Deci noi putem avea un text cu o litera mai putin decat lungimea maxima pe care am
spefificat-o in parateze patrate pentru ca mai trebuie sa facem loc si pentru litera speciala de la
sfarsitul textului \0.
Din aceasta cauza textul este mai special in C si nu poate fi pus intr-o variabila pentru ca variabila nu
poate tine minte decat o litera si cat mai urmeaza dupa ea. Folosim o instructiune speciala care poate
pune textul in zona de memorie cum e aratat mai sus: adica copie prima litera, apoi toate celelalte
litere ale textului, apoi litera \0.
De acum inainte vom abuza de limbaj si vom spune ca punem un text intr-o variabila text, desi de fapt
punem textul partial in variabila si restul in zona de memorie de dupa variabila urmat de \0.
Acesta instructiune de punere de text intr-o variabila de tip text este strcpy
Vine de la String Copy care inseamna copiere de text.
O vom folosi astfel:
strcpy(o_variabila_text, "un text");
si va pune textul "un text" in variabila o_variabila
sau
3
strcpy(o_variabila, alta_variabila);
va pune textul din alta_variabila in variabila o_variabila
Acum sa dam un exemplu: Vrem sa afisam textul acesta este un test utilizând o variabila:
Observatie: Functia strcpy este in biblioteca standard indicata de string.h deci va trebui sa includem
aceasta biblioteca in programul nostru.
#include <stdio.h>
#include <string.h>
char a[30];
main( )
{
strcpy(a, "acesta este un test");
printf("%s", a);
}
sau
Functia printf stim ca poate afisa text direct (exemplu printf("ceva") ) si mai poate afisa direct si
variabile de tip text
Exemplu:
#include <stdio.h>
#include <string.h>
char a[30];
main( )
{
strcpy(a, "acesta este un test");
printf(a);
}
Daca vrem sa avem mai numeroase variabile de tip text:
#include <stdio.h>
#include <string.h>
char a[30], b[10], c[50];
main( )
{
strcpy(a, "acesta este un test");
strcpy(b, "hello");
strcpy(c, b);
printf("%s\n%s\n%s", a, b, c);
}
4
Va afisa:
acesta este un test
hello
hello
Atentie: strcpy(c, b) copie ce e in b in c, adica copie "hello" din b in c |
|
| Sus |
|
 |
|
|
Nu puteti crea un subiect nou in acest forum Nu puteti raspunde in subiectele acestui forum Nu puteti modifica mesajele proprii din acest forum Nu puteti sterge mesajele proprii din acest forum Nu puteti vota in chestionarele din acest forum
|
Powered by phpBB © 2001, 2002 phpBB Group Fa-ti si tu propriul forum GRATUIT, pe www.myforum.ro
|
|
|
|
|