Chirurgia cranio-cerebrală minim invazivă
Tehnicile minim invazive impun utilizarea unei tehnologii ultramoderne. Endoscoapele operatorii de diverse tipuri, microscopul operator dedicat, neuronavigația, neuroelectrofiziologia, tehnicile avansate de anestezie, chirurgia cu pacientul treaz reprezintă armamentarium fără de care neurochirurgia prin "gaura cheii" nu ar fi posibilă. Folosind tehnicile de mai sus, tratăm un spectru larg de patologii cranio-cerebrale. www.neurohope.ro |
Variabile si constante
#19
Posted 06 August 2013 - 13:07
Cam rudimentar conceputa lectia.
Quote 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. O valoare const nu poate fi modificata direct. Prin conversii dubioase, compilatorul accepta expresii ce "modifica" un obiect const dar rezultatul e nedfinit. |
#20
Posted 06 August 2013 - 13:07
Quote Așa că poți lucra cu pointeri chiar dacă pointează la diferite tipuri. Gresit. Nu are sens sa lucrezi cu un pointer spre struct X (200 bytes) si cu altul la struct Y (39 bytes). Corupi memoria in majoritatea situatiilor. Iar void * este un pointer generic care-ti ofera castarea(definesti reprezentarea in memorie) in siguranta la orice alt tip de pointer. Nu poti lucra direct cu un pointer generic. Quote In C++, spre deosebire de C, o constanta nu este intotdeauna alocata, codul e optimizat de compilator astfel incat valoarea constantei e direct folosita (similar cu #define) As vrea sa-mi spui sursa citata. Este o diferenta foarte bine definia dintre 'static const' si #define in C++. Elementele constante sunt stocate in functie de implementarea compilatorului. (e.g in zone read-only; GCC le pune in sectiunea segment text). Tot ce este non-preprocesor mananca resurse cand sunt definite. Iar compilatorul NU iti va inlocui o constanta explicita (non-preprocesor) cu valoarea ei direct in cod masina la compile-time, pentru ca iti va da peste cap totul la run-time cand vei dori sa o accesezi. Quote in alt fisier atunci i se aloca memorie obligatoriu. Te referi la scope-ul unei entitati (constanta, obiect etc.) probabil. Intr-un fisier nu se aloca memorie. Si daca este declarata extern, vei fi obligat sa o definesti (si implicit sa ii aloce resurse compilatorul) inainte de linkare sau sa o marchezi ca weak reference. Edited by xalexx, 06 August 2013 - 13:28. |
#21
Posted 06 August 2013 - 13:20
xalexx, on 06 august 2013 - 13:07, said:
Gresit. Nu are sens sa lucrezi cu un pointer spre struct X (200 bytes) si cu altul la struct Y (39 bytes). Corupi memoria in majoritatea situatiilor. xalexx, on 06 august 2013 - 13:07, said:
Nu poti lucra direct cu un pointer generic. void* p = (void*) new char[10]; memset(p, 123, 10); ... Edited by neagu_laurentiu, 06 August 2013 - 13:24. |
#22
Posted 06 August 2013 - 13:27
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? este relevant sa stii unde sa te opresti, MAX_INT adrian93, on 06 august 2013 - 10:08, said:
Eu zic că putem memora și numere. |
#23
Posted 06 August 2013 - 13:39
Quote
Da, insa unii vor zice ca au gasit portita Posted Image : void* p = (void*) new char[10]; memset(p, 123, 10); ... Ai voie sa memsetezi toata zona aia, pentru ca o ai alocata si ii cunosti si size-ul. Ma refeream la faptul ca nu ai voie sa operezi pe el. (e.g p[0] va genera eroare pentru ca faci aritmetica pe pointer generic, si habar nu are compilatorul cum sa reprezinte asta). |
#24
Posted 06 August 2013 - 13:41
xalexx, on 06 august 2013 - 13:07, said:
As vrea sa-mi spui sursa citata. Este o diferenta foarte bine definia dintre 'static const' si #define in C++. Elementele constante sunt stocate in functie de implementarea compilatorului. (e.g in zone read-only; GCC le pune in sectiunea segment text). Tot ce este non-preprocesor mananca resurse cand sunt definite. Iar compilatorul NU iti va inlocui o constanta explicita (non-preprocesor) cu valoarea ei direct in cod masina la compile-time, pentru ca iti va da peste cap totul la run-time cand vei dori sa o accesezi. Te referi la scope-ul unei entitati (constanta, obiect etc.) probabil. Intr-un fisier nu se aloca memorie. Si daca este declarata extern, vei fi obligat sa o definesti (si implicit sa ii aloce resurse compilatorul) inainte de linkare sau sa o marchezi ca weak reference. Uite aici: Quote In C++, a const doesn’t necessarily create storage. In C a const always creates storage. Whether or not storage is reserved for a const in C++ depends on how it is used. In general, if a const is used simply to replace a name with a value (just as you would use a #define), then storage doesn’t have to be created for the const. If no storage is created (this depends on the complexity of the data type and the sophistication of the compiler), the values may be folded into the code for greater efficiency after type checking, not before, as with #define. If, however, you take an address of a const (even unknowingly, by passing it to a function that takes a reference argument) or you define it as extern, then storage is created for the const. In C++, a const that is outside all functions has file scope (i.e., it is invisible outside the file). That is, it defaults to internal linkage. Implicit, const e static in C++. Normal ca static, const sunt chestiuni diferite de #define. Dar in C++ compilatorului chiar ii e permis si indicat sa inlocuiasca un const (de tip built-in) in cazurile de utilizare normala. Ce ai vrut sa spui ca in fisier nu se aloca memorie? |
#25
Posted 06 August 2013 - 13:47
#26
Posted 06 August 2013 - 15:58
pale_and_pale, on 05 august 2013 - 21:34, said:
Evident că nu pot exista variabile/constante cu acelaşi nume într-un program. int x = 5; { int x = 10; cout << x << endl; } cout << x; Quote În ele poate fi memorat practic orice diferă de numere. Litere simple : A, a, B, b ... etc. sau simboluri simple : -, ), _, /,... ş.a.m.d. in fine... din exprimare sugerezi ca asa functioneaza calculatorul (cu variabile & stuff) insa asta tine strict de limbaj (calculatorul nu stie de tipuri int, char etc., el stocheaza doar bytes [grupuri de 8 biti] si atat)... parerea mea e ca e bine sa mai aprofundezi tu, inainte sa continui.... |
#27
Posted 06 August 2013 - 15:59
neagu_laurentiu, on 06 august 2013 - 12:27, said: Quote
Evident că nu pot exista variabile/constante cu același nume într-un program. |
#29
Posted 06 August 2013 - 20:19
In multe dintre urmatoarele articole voi folosi pseudocodul, C-ul va fi prezentat mai spre final.
@MrReason te invit sa-i explici unui pusti de a 9-a care este diferenta dintre o variabila globala si una locala, cand nici n-a inceput sa faca exercitii in pseudocod . Sau sa citesti ceea ce au raspuns altii inaintea ta inainte de a-ti forma o parere : pale_and_pale, on 05 august 2013 - 23:05, said:
@ 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. . . . Binenteles ca aveam sa "repar" erorile inainte de a face trecerea de la pseudocod la limbaj. Motivul pentru care am ales C este ca printre cititori s-ar putea sa se afle elevi ai specializarii mate-info sau care sunt in gimnaziu dar vor alege aceasta specializare in viitor. De aceea nu e loc de limbaje high-level cum e Javascript aici. DAR limbajul il prezint mai tarziu, dupa cum am spus in topicul de introducere. Mai intai va fi pseudocodul, pentru ca tehnicalitatile limbajului + regulile de sintaxa nu vor constitui decat o distragere. Atentia NU trebuie concentrata pe aceste lucruri ACUM. Cand am spus ca voi face astfel incat trecerea de la pseudocod la limbaj sa fie usoara m-am referit la faptul ca voi construi regulile pseudocodului sa fie similare cat de cat cu cele ale C-ului. Mai e nevoie sa justific proprietatile variabilelor? REPET, momentan nu este necesar sa stie despre adevarata reprezentare a datelor in calculator. Vor asimila aceste lucruri si multe altele mai tarziu si mai usor, cu o gandire ordonata si bine definita, motiv pentru care am inceput seria de articole. Dar hei, multumesc pentru criticle !constructive si pentru ca !(v-ati abtinut de la mistouri) , unii. Daca eu de fapt prostesc mai tare cititorii atunci luati initiativa fratilor si propuneti articole noi care sa-mi inlocuiasca aberatiile ! Edited by pale_and_pale, 06 August 2013 - 20:23. |
#30
Posted 06 August 2013 - 20:49
pale_and_pale, on 06 august 2013 - 20:19, said:
Dar hei, multumesc pentru criticle !constructive si pentru ca !(v-ati abtinut de la mistouri) , unii. Daca eu de fapt prostesc mai tare cititorii atunci luati initiativa fratilor si propuneti articole noi care sa-mi inlocuiasca aberatiile ! Mai ales ca in fiecare zi apare cate un subiect unde lumea nu stie minimul de bun simt si se apuca de programare sarind direct in mijlocul lacului. Cine citeste chestii pe net ar trebui deja sa stie (ca deh, suntem in 2013) ca articolele pot contine erori, asta e, suntem oameni. |
#31
Posted 06 August 2013 - 21:22
pale_and_pale, on 06 august 2013 - 20:19, said:
Daca eu de fapt prostesc mai tare cititorii atunci luati initiativa fratilor si propuneti articole noi care sa-mi inlocuiasca aberatiile ! Edited by neagu_laurentiu, 06 August 2013 - 21:33. |
#32
Posted 06 August 2013 - 22:12
Dacă nu vrei Javascript nu vrei și gata.
Dar Javascript e unul din cele mai apropiate limbaje de pseudocod. Adică ambele sunt high-level. Și unii chiar ar putea aduce argumente solide cum că ar fi mai ușor să înveți Javascript decât C/C++. (am zis mai ușor, nu mai util sau mai frumos sau mai plăcut) |
#33
Posted 06 August 2013 - 23:03
sergiu37, on 06 august 2013 - 22:12, said:
Dacă nu vrei Javascript nu vrei și gata. Dar Javascript e unul din cele mai apropiate limbaje de pseudocod. Adică ambele sunt high-level. Și unii chiar ar putea aduce argumente solide cum că ar fi mai ușor să înveți Javascript decât C/C++. (am zis mai ușor, nu mai util sau mai frumos sau mai plăcut) E adevarat ca las deoparte Pascal, dar conceptele pot fi aplicate cu minim efort si acolo. |
|
Anunturi
▶ 0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users