Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Combinatie de conturi pentru tran...

Adaptor semnal hi to low

Jocuri Android Multiplayer online...

Diferenta consum smart meter - Co...
 Recomandare demontare+instalare ...

CAIET SERVICE PREDEAL II

Internare spital psihiatrie

CM de snooker 2024
 Scot penele dupa montajul tamplar...

Masina de spalat vase si grasimea

Noua lege de acces in paduri

Sunt ouale proaspete?
 Aplicatie invatare limba Germana

Presbiopia - la 43 ani ?

Termen transcriere autovehicul

Cazare Timisoara pe 4-5 zile
 

Variabile si constante

- - - - -
  • Please log in to reply
32 replies to this topic

#1
pale_and_pale

pale_and_pale

    Junior Member

  • Grup: Members
  • Posts: 187
  • Înscris: 11.07.2012
///////////////////////
Aceasta e a treia lecție.
2. http://forum.softped...i-informatiile/
1. http://forum.softped...-si-programare/
/////////////////////////

Variabile, constante expresii
Memoria RAM a calculatorului poate fi privită ca un tablou cu căsuțe.
[ https://i.imgur.com/DIwZFbx.png - Pentru incarcare in pagina (embed) Click aici ]


Fiecare locație sau căsuță are câte un număr, care reprezintă adresa lor.
[ https://i.imgur.com/9OFb9NK.png - Pentru incarcare in pagina (embed) Click aici ]

Mai mult, ele au asociat de asemenea un nume. Însă dacă aș scrie câte unul lângă fiecare adresă, desenul ar fi de neînțeles așa că voi trebuie să vă imaginați noua imagine.

Însă ceea ce ne interesează cu adevărat este conținutul acestora. Veți vedea mai jos de ce.

Cand dați dublu click pe un fișier.exe adică lansați in execuție un program, sistemul de operare îi acordă un spațiu, adică una sau mai multe căsuțe, în această memorie in funcție de cât are nevoie.

Am scris în lecția anterioară că folosim calculatorul pentru a-l pune să rezolve probleme. Îi oferim datele problemei, denumite de asemenea date de intrare, el le prelucrează apoi afișează rezultatele adică datele de ieșire. Felul în care primește datele de intrare și felul in care le afișează pe cele de ieșire depinde de programator.

Dar ca să le prelucreze el trebuie mai intâi să le memoreze, în așa numitele ''căsuțe'' din memorie. Rezultatele sunt și ele memorate astfel de asemenea.


Când vorbim de variabile în programare, gândiți-vă la aceste căsuțe sau locații din memoria RAM, unde sunt salvate datele de intrare și rezultatele prelucrării acestora.
Constantele sunt și ele locații, asemeni variabilelor.


Deosebirea e următoarea: Constantele primesc o valoare înaintea prelucrării datelor și o păstrează până la finalizarea prelucrărilor adică până la ieșirea din program. Variabilele în schimb pot primi o valoare în orice moment al execuției programului. Ele sunt căsuțe ''variabile'' adică schimbătoare cu privire la conținut.



Să vedem acum câteva proprietăți :
1.) O variabilă/constantă are un nume care o deosebește de alte variabile/constante. Programatorul alege numele atunci când scrie programul. Adesea numele sugerează și modul în care este folosită acea variabilă în prelucrare/program. De exemplu, am putea avea o variabilă numită ''sumă'' și în ea să punem rezultatul adunării a două alte variabile. Evident că nu pot exista  variabile/constante cu același nume într-un program. Putem altera conținutul unei variabile folosind numele acesteia. Mai târziu veți vedea cum.
2.)O variabilă/constantă are o adresă în memorie. Și cu ajutorul adresei putem altera conținutul ei. Mai târziu vă voi spune  mai multe despre acest lucru. Până atunci ne vom folosi de numele variabilelor.
3.) O variabila/constantă are o valoare.
4.) O variabilă/constantă are un tip.

Să revenim puțin. Am zis că variabilele sunt ''căsuțele'' din memorie unde sunt salvate/memorate datele de intrare. Mai înainte am zis că datele sunt de fapt numere și/ sau litere și/sau simboluri aranjate in orice combinație. O dată de intrare, adică un număr sau literă sau simbol, este memorată într-o variabilă. Mai multe date de intrare sunt deci memorate în mai multe variabile. Probabil spun aceleași lucruri de mai multe ori însă o fac să mă asigur că pricepeți.

Deci ce este tipul unei variabile/constante? Este un alt cuvânt pentru ''mulțimea valorilor care pot fi atribuite acelei variabile''.
Ați învățat la școală despre mulțimile numerelor, mai precis de :
  + Numerele naturale, N
   + Numerele întregi, Z
+ Numerele raționale, Q
  + Numerele reale, R


Într-un mod similar separă numerele și calculatorul.
Avem deci următoarele tipuri de variabile/:

- Variabile/constante de tip întreg. Acestea pot memora numai numere întregi. Cred că nu e cazul să menționez că pot memora și numere naturale, dar o fac totuși.

- Variabile/constante de tip real.   După cum sugerează numele, acestea pot lua valori reale, cum ar fi 2.5, 0.5, 4.7 dar și valori întregi de asemenea. Observați că nu folosim virgula pentru a separa partea întreagă de cea fracționară.

- Variabile/constante de tip caracter. În ele poate fi memorat practic orice diferă de numere. Litere simple : A, a, B, b ... etc. sau simboluri simple :  -,  ),  _,  /,... ș.a.m.d.

Variabilele și constantele reprezintă o parte importantă a programelor și toate prelucrările sunt centrate asupra lor pentru că ele conțin datele problemei și rezultatele care sunt afișate. Deocamdată atât despre acestea.

Next stop : Operatori și expresii

#2
HurrleyProg

HurrleyProg

    Member

  • Grup: Validating
  • Posts: 279
  • Înscris: 15.03.2013
E bun tutorialul pentru incepatori... Felicitari Posted Image

Edited by HurrleyProg, 05 August 2013 - 22:45.


#3
Gady_paul

Gady_paul

    Senior Member

  • Grup: Senior Members
  • Posts: 2,421
  • Înscris: 12.01.2008
Cu toate astea, RAM-ul e de obicei abstractizat ca vector (liniar) nu ca matrice (tablou). Dar asta nu e tocmai relevant :).
De asemenea, e bine de stiut faptul ca o variabila desi are o adresa de memorie, ea poate ocupa mai multe "casute". De exemplu, o variabila de tip int sade pe 4 casute. Dintre aceasta, cea cu adresa cea mai mica da si adresa variabilei (de exemplu, daca variabila noastra sta pe casutele aflate la adresele 100, 101, 102, 103, ea va avea adresa 100).

#4
sergiu37

sergiu37

    Member

  • Grup: Members
  • Posts: 328
  • Înscris: 13.11.2006
HurrleyProg Pentru înțepători ai vrut să zici nu?
Sincer apreciez interesul și entuziasmul tău, dar poate n-ar strica să dai cuiva care chiar se pricepe textul pentru o revizuire sau pentru niște păreri. Prea multe erori sunt pe-acolo. Știu că e pentru cei care chiar nu știu nimic și uneori e ok să ignori detaliile, dar câte-un asterix în care să spui că te referi doar la limbajul C sau explici mai târziu anumite chestii, dar pe moment pentru simplitate ai scris așa.

#5
HurrleyProg

HurrleyProg

    Member

  • Grup: Validating
  • Posts: 279
  • Înscris: 15.03.2013

View Postsergiu37, on 05 august 2013 - 22:39, said:

HurrleyProg Pentru înțepători ai vrut să zici nu?
....care chiar se pricepe textul...

1-1

#6
sergiu37

sergiu37

    Member

  • Grup: Members
  • Posts: 328
  • Înscris: 13.11.2006

View PostHurrleyProg, on 05 august 2013 - 22:48, said:


1-1

De fapt e 2-0 pentru mine. Tu doar ai accentuat ce am vrut eu să spun.
Practic ai intervenit doar pentru că ai vrut atenție și să demonstrezi că ai dreptate cu toate că nu aduci nimic constructiv conversației și deraiezi discuția de la subiect.
Așa pot interveni mulți pentru orice greșeală minoră sau majoră și prin urmare o mai mare atenție la mesaj nu strică.

#7
Gady_paul

Gady_paul

    Senior Member

  • Grup: Senior Members
  • Posts: 2,421
  • Înscris: 12.01.2008
Eu am o propunere. Am observat ca in ultimul timp sunt din ce in ce mai multi doritori sa scrie articole (lucru bun, de altfel), dar care fie nu o fac din diverse motive fie o fac, si rezultatul este mai bun sau mai putin bun. Problema e ca nu ne putem aduce cu totii contributia la un articol (ar iesi un topic imens, care pentru un incepator ar fi 50% material interesant, 50% discutii related). Asa ca propun sa gasim o metoda, astfel incat sa putem edita mai multi articolele, nu neaparat pe forum, dar astfel incat rezultatul sa fie un articol in adevaratul sens al cuvantului, si sa ne putem aduce cu totii contributia. De exemplu mie mi-ar place sa dau o mana de ajutor dezvoltarii acestei...idei sa zic asa, dar scrisul de articole nu e punctul meu forte :D.
Si, pe langa asta, toata povestea poate deveni mult mai dinamica, mai multa interactiune intre useri, mai mult transfer de informatii, beneficii mai mari pentru toata lumea :).

#8
pale_and_pale

pale_and_pale

    Junior Member

  • Grup: Members
  • Posts: 187
  • Înscris: 11.07.2012
@sergiu37
Hei, eu am scris cu erori tocmai pentru simplitate. Asta nu inseamna ca nu ma pricep. Scopul nu este sa ii invat cum sunt memorate de fapt valorile, ci ce sa faca cu ele. Nu stiu cum a fost profesorul tau in liceu sau facultate, dar precis nu te-a luat cu sistemul de numeratie in baza 2,  ce sunt bitii, organizarea lor in blocuri de puteri ale lui 2 precum si restrictiile impuse la memorarea valorilor inainte de a-ti preda algoritmi fundamentali in pseudocod.

Am adus memoria RAM in discutie pentru a oferi un sentiment de concretitudine care sa faca intelegerea textului mai facila. Binenteles ca aveam sa "repar" erorile inainte de a face trecerea de la pseudocod la limbaj.

#9
Gady_paul

Gady_paul

    Senior Member

  • Grup: Senior Members
  • Posts: 2,421
  • Înscris: 12.01.2008

View Postpale_and_pale, on 05 august 2013 - 23:05, said:

dar precis nu te-a luat cu sistemul de numeratie in baza 2,  ce sunt bitii, organizarea lor in blocuri de puteri ale lui 2 precum si restrictiile impuse la memorarea valorilor inainte de a-ti preda algoritmi fundamentali in pseudocod.

Nu stiu pe altii dar pe mine nu m-a luat. Si am regretat amarnic.

#10
pale_and_pale

pale_and_pale

    Junior Member

  • Grup: Members
  • Posts: 187
  • Înscris: 11.07.2012
De ce?
Ce relevanta avea pe cati biti este memorat un intreg atunci cand invatai despre scoaterea cifrelor sale?

#11
adrian93

adrian93

    Active Member

  • Grup: Members
  • Posts: 1,740
  • Înscris: 29.10.2009

View Postpale_and_pale, on 05 august 2013 - 21:34, said:

- Variabile/constante de tip caracter. În ele poate fi memorat practic orice diferă de numere. Litere simple : A, a, B, b ... etc. sau simboluri simple :  -,  ),  _,  /,... ş.a.m.d.

Eu zic că putem memora și numere. Posted Image
char c = '1';


View Postpale_and_pale, on 06 august 2013 - 00:47, said:

De ce?
Ce relevanta avea pe cati biti este memorat un intreg atunci cand invatai despre scoaterea cifrelor sale?

Era bine dacă în liceu se începea cu așa ceva. Eu în a 9-a la olimpiadă am luat 0 pe o problemă din cauză că am depășit limita de memorie pentru problema respectivă. Am alocat foarte multă memorie pentru o matrice, deoarece eu credeam la vremea respectivă că dacă alocăm memorie, dar nu o folosim, e ca și când nu am fi alocat nimic. În cazul int v[10], eu aveam impresia că dacă operez cu primele 3 poziții din vector, voi utiliza numai (3*sizeof(int)) memorie, iar cu restul de memorie face calculatorul ce vrea.


View PostGady_paul, on 05 august 2013 - 23:02, said:

Problema e ca nu ne putem aduce cu totii contributia la un articol (ar iesi un topic imens, care pentru un incepator ar fi 50% material interesant, 50% discutii related). Asa ca propun sa gasim o metoda, astfel incat sa putem edita mai multi articolele, nu neaparat pe forum, dar astfel incat rezultatul sa fie un articol in adevaratul sens al cuvantului, si sa ne putem aduce cu totii contributia.
Ar merge un wiki :).

Edited by adrian93, 06 August 2013 - 10:20.


#12
neagu_laurentiu

neagu_laurentiu

    Guru Member

  • Grup: Senior Members
  • Posts: 40,601
  • Înscris: 30.07.2003

View Postpale_and_pale, on 05 august 2013 - 23:05, said:

Nu stiu cum a fost profesorul tau in liceu sau facultate, dar precis nu te-a luat cu sistemul de numeratie in baza 2,  ce sunt bitii, organizarea lor in blocuri de puteri ale lui 2 precum si restrictiile impuse la memorarea valorilor inainte de a-ti preda algoritmi fundamentali in pseudocod.
La mine s-au predat notiunile in cauza, era in perioda cand nu existau liceele cu profil mate-info si la facultate m-au invatat de la zero.

#13
Gady_paul

Gady_paul

    Senior Member

  • Grup: Senior Members
  • Posts: 2,421
  • Înscris: 12.01.2008

View Postpale_and_pale, on 06 august 2013 - 00:47, said:

De ce?
Ce relevanta avea pe cati biti este memorat un intreg atunci cand invatai despre scoaterea cifrelor sale?
Nu stiu daca avea importanta semnificativa (oricum eu din a 9-a la orele de info nu prea ascultam ce zice profa, invatam singur), dar e vorba despre felul cum "simti" lucrurile. Plus ca daca nu le inveti la inceput, cand le inveti?

#14
sergiu37

sergiu37

    Member

  • Grup: Members
  • Posts: 328
  • Înscris: 13.11.2006
@pale_and_pale
De fapt primul meu curs a fost cu desenarea de pătrățele în BASIC. Apoi copierea de zeci de linii de cod dintr-un manual și rularea lor. Sau hackuirea jocurilor de pe casete să pot câștiga mai ușor.

Apoi la liceu au venit și lecțiile teoretice.

Legat de baza 2, nu zic nimic tu ai zis de căsuțe, dar de exemplu de ce zici că o variabilă are o valoare sau un tip?
Ok, e adevărat pentru C, dar în alte limbaje nu e nevoie. De exemplu să zicem că o variabilă conține un cadou, care poate fi o excursie, un birou sau un purcel. Sunt de același tip? Nu, dar unele limbaje îți permit să dai unei variabile oricare dintre cele 3 tipuri.
Dacă tot e general puteai spune că o variabilă stochează informație undeva în memorie.
De ce să dai proprietăți despre care apoi să spui că sunt false. Pot exista mai multe variabile cu același nume în același program, variabilele pot avea mai multe adrese și nu trebuie să aibă o valoare sau un tip. Ok, știu că ești pe aria de C/C++ și că ce ai spus e destul de ok pentru C/C++, dar ai spus că vorbești în general, nu doar despre C/C++.

#15
neagu_laurentiu

neagu_laurentiu

    Guru Member

  • Grup: Senior Members
  • Posts: 40,601
  • Înscris: 30.07.2003

View Postsergiu37, on 06 august 2013 - 11:05, said:

unele limbaje îți permit să dai unei variabile oricare dintre cele 3 tipuri.
Si in C/C++ poti avea tipuri diferite la spre care pointeaza o variabila, de asta s-a inventat void si (tip*) variabila;

#16
sergiu37

sergiu37

    Member

  • Grup: Members
  • Posts: 328
  • Înscris: 13.11.2006
Dar void e un tip. Iar (tip*) variabila e un pointer, care tot un tip e. Și void* tot un pointer e.

Așa că poți lucra cu pointeri chiar dacă pointează la diferite tipuri și afirmația că fiecare variabilă are un singur tip e adevărată.

Dacă gândești la un nivel mai abstract, atunci într-adevăr pot fi tipuri diferite.

#17
neagu_laurentiu

neagu_laurentiu

    Guru Member

  • Grup: Senior Members
  • Posts: 40,601
  • Înscris: 30.07.2003
Pai si in limbajele ce suporta tipuri dinamice e vorba tot despre asa ceva.

View Postpale_and_pale, on 05 august 2013 - 21:34, said:

Evident că nu pot exista  variabile/constante cu acelaşi nume într-un program.
Povesti ! Insa merge si asa pt. nivelul cui te adresezi. Altfel sa citeasca literatura de specialitate scrisa de profesionisti.

Edited by neagu_laurentiu, 06 August 2013 - 12:29.


#18
sergiu37

sergiu37

    Member

  • Grup: Members
  • Posts: 328
  • Înscris: 13.11.2006
Sigur putem merge cu tipurile dinamice, care se comportă similar cu pointerul void, dar comportamentul poate fi suportat direct în limbaj, nu în codul compilat sau interpretat.

În Javascript var t; apoi  t="2"; și apoi t=43; Gata i-am schimbat tipul de câteva ori. Direct în limbaj, fără pointeri sau alte chichițe.
În C# scriu int? t=null; un tip. Apoi dacă scriu t=2; am alt tip. Din nou direct în limbaj. Ok aici pot să-i dau doar 2 tipuri.

(bine poate nu e doar pentru începători și nu e C/C++)

Edited by sergiu37, 06 August 2013 - 12:44.


Anunturi

Neurochirurgie minim invazivă Neurochirurgie minim invazivă

"Primum non nocere" este ideea ce a deschis drumul medicinei spre minim invaziv.

Avansul tehnologic extraordinar din ultimele decenii a permis dezvoltarea tuturor domeniilor medicinei. Microscopul operator, neuronavigația, tehnicile anestezice avansate permit intervenții chirurgicale tot mai precise, tot mai sigure. Neurochirurgia minim invazivă, sau prin "gaura cheii", oferă pacienților posibilitatea de a se opera cu riscuri minime, fie ele neurologice, infecțioase, medicale sau estetice.

www.neurohope.ro

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate