• Acasă
  • Despre noi
  • Autori
  • Mărturii
  • Arhivă
  • Trimite Articol
  • Contact

WORLDIT

Lumea în 1 și 0.

  • Știri
    • Tehnologie
    • Tehnologie mobilă
    • Securitate
    • Developers
    • Știință
    • Benzi desenate
    • Jocuri
    • Intern
  • Tehnic
    • Browser
    • C#
    • C/C++
    • Challenge
    • HTML/CSS
    • Javascript, Ajax, jQuery
    • Open Source
    • PHP
    • Python
    • Securitate IT
    • Socializare
    • WordPress
    • Altele
  • Recenzii
  • Interviuri
  • Evenimente

Variabile, constante si expresii in C++/Pascal[2]

3
  • Publicat de bamboocha
  • în Tehnic
  • — 23 iul., 2009 at 12:33 pm

In postul anterior, variabile in C++/Pascal, am aflat cum se declara o variabila, cum o citim, cum o afisam, etc. Acum, vom vorbi despre „sfera de actiune” a unei variabile.

Sa luam fiecare limbaj in parte si sa analizam. Vom incepe, respectand traditia, cu Pascalul. Daca doriti sa treceti peste, mergeti la Sfera de actiune a variabilelor in C++.

Sfera de actiune a unei variabile in Pascal

O variabila poate fi: locala sau globala. Ce inseamna asta ? Variabilele locale sunt cele declarate in interiorul unui subprogram(functie sau procedura) si sfera lor de actiune se limiteaza doar la subprogramul din care face parte. Stiu, este greu ca v-am bagat in astfel de lucruri cu subprograme, functii si proceduri, insa mai tarziu cand vom ajunge la ele, va veti intoarce si veti intelege.

Sa presupunem ca avem urmatorul program:

program variabila_locala;
var local: integer;
function func1(a: integer):integer;
var loc: integer;
begin
end;
begin
end.

Variabila loc pe care am definit-o in interiorul functiei func este o variabila locala, ea fiind creata DOAR cat timp ruleaza functia, apoi dispare. Daca veti incerca sa afisati variabila loc in programul principal, veti primi o eroare. In schimb, variabila local este o variabila globala, ea putand fi utilizata in functii, proceduri, in programul principal => peste tot.

Cam asta a fost despre sfera de actiune a variabilelor in Pascal, pentru nelamuriri(fiindca sigur aveti) va stau la dispozitie. Acum, vom trece repede prin constante si ne vom opri la tipul char.

Constante in Pascal

Dupa cum am aflat in articolul precedent, o constanta se declara in zona declarativa inainte de declararea variabilelor. Exemplu:

program constante;
const PI = 3.14;
var x: integer;
begin
end.

Dupa cum puteti observa, am folosit litere mari la definirea constantei PI. De ce am facut asta ? Pentru ca in timp, cu cat vom progresa vom construi programe din ce in ce mai complexe cu foarte multe variabile, iar daca noi declaram constantele cu litere mici, ne va fi greu sa facem debugging. Asadar, folosirea literelor mari nu este o regula, dar ajuta mult la programele complexe pentru a diferentia constantele de variabile.
De asemenea, nu putem schimba valoarea constantelor in timpul executiei programului.

Tipul real

Pana acum am lucrat doar cu numere naturale, iar de cele reale nu am pomenit. Tipul real se ocupa cu stocarea numerelor cu virgula. Sa luam un exemplu pentru a intelege mai bine:

program numere_reale;
var d, i: integer;
x: real;
begin
writeln(‘Dati deimpartitul si impartitorul’);
readln(d);
readln(i);
x := d / i;
writeln(‘Rezultatul impartirii este ‘, x:6:2);
end.

Apar cateva elemente noi in peisaj. Sa discutam putin codul de mai sus.
In primul rand, observam ca am declarat 3 variabile, 2 de tip integer si una de tip real. Ce trebuie sa retinem din aceasta declarare ? Felul in care s-a declarat. Observam ca s-a folosit un singur cuvant cheie var pentru cele 3 variabile. Variabilele d si i sunt prescurtari de la deimpartit si impartitor, iar variabila x este de tip real si va stoca un numar cu virgula indiferent de se va imparti exact ori nu. Numarul in virgula mobila va reprezenta rezultatul impartirii lui d la i.
In al doilea rand, observam ca pentru afisare s-a folosit x:6:2. Daca nu am folosi :2, in special, atunci numarul ne-ar fi avisat in format stiintific. 6 reprezinta numarul total de cifre punandu-se la socoteala si virgula, iar 2 este numarul de cifre care va fi afisat dupa virgula.

Tipul char

Sa lasam numerele deoparte si sa aruncam o privire si asupra tipului char din Pascal. Variabilele de tip char inmagazineaza caractere. O variabila poate stoca doar un singur caracter. Caracter putand fi si o cifra, si un semn, orice.

Atrbuirea variabilelor de tip char, se face astfel:
var c: char;
…
c := ‘i’;
In rest, citirea de la tastatura se face ca in cazul oricarei variabile.

Sfera de actiune a variabilelor in C++

Variabilele in C++, din punct de vedere al „sferei de actiune”, sunt:  locale sau globale.

Variabilele globale sunt cele care au fost definite in corpul principal al codului sursa, in afara oricarei functii. De exemplu:

#include <iostream>
using namespace std;
int var_glob;
int main() {
}

Variabila var_glob este declarata in afara oricarei functii, deci este o variabila globala.
In schimb, variabilele locale sunt delimitate de parantezele acolade.

#include <iostream>
using namespace std;

int main() {
int x; /* variabila x este "valabila" pana cand se inchide paranteza acolada la functia main() */
while (1 = 1)
{
    int y; /* variabila y "traieste" pana cand se inchide paranteza acolada la ciclul repetitiv while */
} //acum variabila y nu mai exista;
}//acum nici variabila x nu mai exista;

Dupa cum am vazut mai sus, variabilele locale „traiesc” pana cand se inchid parantezele acolade cele mai apropiate. Sfera lor de actiune se intinde intre parantezele acolade{ }. Poate va intrebati ce sunt semnele /* */ si //. Acestea delimiteaza comentariile, in momentul in care compilatorul intalneste o astfel de linie, o ignora. Cand folosim /* */ delimitam, in general, un comentariu pe mai multe linii, iar cand folosim // avem un comentariu pe o singura linie.  Comentariile sunt folositoare pentru cei care se uita in codul dumneavostra, pentru lamuriri suplimentare. Cu alte cuvinte „unde exista ambiguitati, comentezi linia ca sa inteleaga omul ce ai vrut sa faci”.

Inainte de a trece la tipul float, as mai avea ceva de precizat la declararea variabilelor. Mai mult ca sigur ati vazut in tabelul cu valori ale tipurilor de baza C++ ca unele tipuri pot stoca numere cu minus, dar pot stoca si numai numere pozitive, astfel putandu-se sa se ajunga la valori maxime mai mari. Sa incerc sa va explic ce se intampla.

Sa presupunem ca avem un tip de date ce este stocat pe 8 biti. Dupa cum stim, 1 bit poate stoca cifre de 0 si 1. Deci, in momentul in care noi introducem de la tastatura un numar, el este reprezentat de cifrele 0 si 1. Pentru noi daca de exemplu introducem numarul 29, vom avea o reprezentare pe biti in felul urmator:
0 0 0 1 1 1 0 1
Am izolat primul bit din stanga care este bitul de semn. Bitul de semn da semnul numarului stocat: 0 reprezinta plus, iar 1 reprezinta minus. Uneori, nu avem nevoie de valori negative, deci bitul de semn nu ne-ar fi de folos. In acest moment intervine posibilitatea de a folosi bitul de semn in componenta numarului, acest lucru fiind posibil prin declararea variabilelor astfel: unsigned tip identificator;
Exemplu: unsigned short int x;
unsigned se traduce din engleza „fara semn” => declaratia de mai sus se traduce „creaza o variabila de tip short int fara semn”.
Sa revenim la exemplul nostru care este stocat pe 8 biti. In momentul in care el este declarat ca fiind fara semn, cel mai mic numar care poate fi stocat este 0 (0 0 0 0 0 0 0 0 ), iar cel mai mare numar este 255 (1 1 1 1 1 1 1 1). In total 256 de numere ce pot fi stocate.

In cazul nostru, daca declaram tipul de data ca fiind cu semn(signed) tot 256 de numere pot fi stocate, insa intervalul este altul. Cel mai mic numar ce poate fi stocat este -128 (1 1 1 1 1 1 1 1), iar cel numarul maxim este 127 (0 1 1 1 1 1 1 1).  Cu alte cuvinte, trebuie sa impartim cele 256 de numere ce pot fi stocate in 2 parti egale: negative si pozitive. Sunt de la -1 -> -128 => 128 de numere negative, si de la 0 -> 127 sunt 128 de numere pozitive.

Tipul float

Tipul float stocheaza numere in virgula mobila. O diferenta fata de Pascal este ca nu trebuie sa ii spui compilatorului cate cifre sa aiba dupa virgula, ci afiseaza automat. Bineinteles, daca doriti neaparat sa vi se afiseze un numar x de cifre dupa virgula, puteti folosi manipulatorul setprecision(x), unde x este numarul de zecimale. Pentru a putea folosi manipulatorul de mai sus, aveti nevoie sa includeti headerul #include <iomanip>.
Exemplu: cout << setprecision(2) << x; /* x este o variabila declara ca fiind de tip float */

Tipul char

Tipul char se ocupa cu caractere. O variabila de tip char poate stoca un singur caracter. De asemenea, prin caracter nu trebuie sa intelegem neaparat o litera, ci poate fi un semn, o cifra. Insa, este o diferenta intre char c = ‘1’ si int i = 1. Variabila c nu contine un numar, contine un caracter. Daca vom compara cele 2 variabile, nu sunt egale.

Teme pentru acasa

1. Sa se calculeze aria unui cerc.

2. Sa se faca media aritmetica a 3 numere si sa se afiseze cu 5 zecimale.

3. Avem un numar initial x. Acesta se inmulteste cu 3 se adauga 10% din numarul nou obtinut se imparte la 2 si da valoarea y, unde y se cere de la tastatura.

Va astept cu solutille la exercitiile de mai sus si daca aveti nelamuriri intrebati.

P.S. Temele pentru acasa sunt atat pentru Pascal cat si C++.

Operatori pascal si c++ partea 1

Etichete: C++durata de viata a variabilelorPascalsfera de actiune a variabilelor

— Porumbel Valentin a scris 6 articole

Nu există o descriere a autorului.

  • Articolul anterior Apple and LG on top
  • Articolul următor Hashing

3 Comentarii

  1. Avadanei Andrei spune:
    iulie 23, 2009 la 4:26 pm

    O continuare excelenta si o explicatie foarte buna a reprezentarii pe biti. De retinut este faptul ca operatiile pe biti pot scuti de multa memorie,iar alteori pot imbunatati viteza!

  2. Variabile, constante si expresii in C++/Pascal[1] | WorldIT spune:
    octombrie 3, 2009 la 4:40 pm

    […] Update: Am terminat si continuarea acestui articol Variabile, constante si expresii in C++/Pascal[2] […]

  3. tipul int | awesomeway spune:
    martie 4, 2013 la 8:14 am

    […] Update: Am terminat si continuarea acestui articol Variabile, constante si expresii in C++/Pascal[2] […]


  • Facebook

    WorldIT.info
  • Ultimele Atacuri Cibernetice din Romania – RO Hacked

    [wp_rss_retriever url="https://rohacked.bit-sentinel.com/feed/" excerpt="none" items="5" read_more="false" new_window="true" thumbnail="false" cache="0"] RO Hacked este registrul atacurilor cibernetice din România.
  • Caută

  • Articole Recomandate

    • Recent Posts
    • Tags
    • Număr record de participanți la DefCamp 2015, cel mai important eveniment dedicat securității cibernetice din Europe Centrala si de Estdecembrie 2, 2015
    • La DefCamp 2015 vei afla prin ce tehnici pot fi evitate măsurile de securitate ale sistemelor informatice criticeoctombrie 16, 2015
    • Ultima sansa sa rezervi bilete de tip Early Bird la DefCamp 2015septembrie 1, 2015
    • 15 sfaturi despre cum poti deveni un programator bun venite de la specialisti romaniaugust 4, 2015
    • algoritmica Android antivirus Apple Avadanei Andrei benzi desenate BitDefender blog browser C++ Chrome concurs eveniment Facebook Firefox Google google chrome hacking html5 infografic informatica internet Internet Explorer IT javascript linux Microsoft Mozilla Firefox online PHP programare retea sociala review Romania securitate Tehnologie Twitter web Windows Windows 7 Wordpress WorldIT worldit.info Yahoo! YouTube
  • februarie 2021
    L Ma Mi J V S D
    1234567
    891011121314
    15161718192021
    22232425262728
    « dec.    
  • Link-uri Sponsorizate

    • laptop second hand

    • Calculatoare Second Hand

    • cod voucher pc garage

  • Home
  • Tehnic
  • Variabile, constante si expresii in C++/Pascal[2]
  • Important

    • Bit Sentinel
    • Centrul de Cercetare în Securitate Informatică din România
    • DefCamp
  • Prieteni

    • BetiT.ro
    • bijuterii handmade
    • Computerica | Resurse gratuite PC
    • Descopera.org
    • Gadgeturi si IT – Giz.ro
  • Prieteni

    • PC – Config
    • RO Hacked
    • Stiri IT

Copyright © 2009-2014 WORLDIT. Toate drepturile Rezervate.
Termeni și condiții | Contact | Licența Creative Commons