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 |
Variabile si constante
Last Updated: Aug 06 2013 23:03, Started by
pale_and_pale
, Aug 05 2013 21:34
·
0
#1
Posted 05 August 2013 - 21:34
///////////////////////
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
Posted 05 August 2013 - 22:26
E bun tutorialul pentru incepatori... Felicitari
Edited by HurrleyProg, 05 August 2013 - 22:45. |
#3
Posted 05 August 2013 - 22:35
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
Posted 05 August 2013 - 22:39
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
Posted 05 August 2013 - 22:48
#6
Posted 05 August 2013 - 22:59
HurrleyProg, 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
Posted 05 August 2013 - 23:02
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 .
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
Posted 05 August 2013 - 23:05
@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
Posted 05 August 2013 - 23:49
pale_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
Posted 06 August 2013 - 00:47
De ce?
Ce relevanta avea pe cati biti este memorat un intreg atunci cand invatai despre scoaterea cifrelor sale? |
|
#11
Posted 06 August 2013 - 10:08
pale_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. char c = '1'; pale_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. Gady_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. Edited by adrian93, 06 August 2013 - 10:20. |
#12
Posted 06 August 2013 - 10:34
pale_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. |
#13
Posted 06 August 2013 - 10:38
pale_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? |
#14
Posted 06 August 2013 - 11:05
@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
Posted 06 August 2013 - 11:23
|
#16
Posted 06 August 2013 - 12:02
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
Posted 06 August 2013 - 12:27
Pai si in limbajele ce suporta tipuri dinamice e vorba tot despre asa ceva.
pale_and_pale, on 05 august 2013 - 21:34, said: Evident că nu pot exista variabile/constante cu acelaşi nume într-un program. Edited by neagu_laurentiu, 06 August 2013 - 12:29. |
#18
Posted 06 August 2013 - 12:40
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
▶ 0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users