PRELEGERE XIII PROGRAMAREA CALCULATOARELOR ŞI LIMBAJE DE PROGRAMARE Noţiunea de funcţie - continuare VI. Funcţii recursive O funcţie se poate activa n

Mărimea: px
Porniți afișarea la pagina:

Download "PRELEGERE XIII PROGRAMAREA CALCULATOARELOR ŞI LIMBAJE DE PROGRAMARE Noţiunea de funcţie - continuare VI. Funcţii recursive O funcţie se poate activa n"

Transcriere

1 PRELEGERE XIII PROGRAMAREA CALCULATOARELOR ŞI LIMBAJE DE PROGRAMARE Noţiunea de funcţie - continuare VI. Funcţii recursive O funcţie se poate activa nemijlocit pe ea însăşi de un număr nedeterminat de ori. În această situaţie, funcţia se numeşte recursivă. O condiţie de oprire a acestui proces trebuie prevăzută şi programată. În caz contrar, spaţiul afectat în stivă pentru depozitarea adresei de retur, a valorilor parametrilor transmişi prin valoare, a informaţiilor despre parametrii transmişi prin adresă, a rezultatelor ermediare şi al apelului de funcţie va creşte rapid, riscînd depăşirea acestuia. Etapele care apar în desfăşurarea fiecărui proces de activare a unei funcţii recursive sînt acelaşi ca la activarea unei funcţii obişnuite, chiar dacă apelul de funcţie este situat în definiţia unui bloc de funcţie şi nu în funcţia apelantă. Aici, funcţia fact() realizează calculul factorialului conform formulei n! = nx(n-1)!, care permite organizarea acesteia ca o funcţie recursivă. /* Functie recursiva */ fact( n) { if (n == 0) return 1; else return n*fact(n-1); } Funcţia De fapt, determinarea expresiei n! cu ajutorul unei funcţii recursive fact() se face pe baza formulei n! = fact(n)*fact(n-1)* fact(1)*fact(0). Se observă că, sînt necesare n apeluri ale funcţiei fact(), urmate de secvenţele corespunzătoare de reveniri. Terminarea apelurilor recursive are loc atunci cînd se întîlneşte apelul fact(0). Calculul factorialilor se face acum de la dreapta către stînga. Dacă n este foarte mare, atunci este posibil depăşirea spaţiului din stivă cu semnalarea unei erori corespunzătoare şi oprirea programului. În consecinţă, simplitatea şi eleganţa funcţiilor recursive nu sînt motivaţii suficiente în recomandarea utilizării lor în rezolvarea unor probleme. Şi funcţia predefinită main() poate primi atributul de recursiv, după cum se observă în exemplu de mai jos: main(void) { prf("\n Acest mesaj se tipareste la infinit"); main(); return 0; } Funcţia

2 VI. Funcţii predefinite Biblioteca limbajului oferă un sortiment bogat de funcţii predefinite, care sînt un instrument eficace la doispoziţia utilizatorului în scrierea unor programe rapide, elegante, uşor de urmărit şi de întreţinut. Acestea sînt destinate în utilizarea funcţiilor matematice, prelucrarea valorilor ordinale, tratarea şirurilor de caractere, definirea, actualizarea şi exploatarea fişierelor, folosirea poerilor, alocarea dinamică a memoriei, eficientizarea folosirii display-ului, dezvoltarea unei grafici diverse, etc. În această secţiune vom prezenta contextul general de apelare a unor funcţii predefinite care rezolvă operaţii privitoare la şirurile de caractere, la alocarea dinamică a memoriei, la construirea de funcţii cu număr variabil de parametri şi la descrierea modulului principal de program. 1) Cîteva funcţii din string.h Declaraţiile de date împreună cu macrodefiniţiile şi prototipurile funcţiilor cu referire la şiruri de caractere sînt grupate în fişierul antet string.h (extensia h provine de la cuvîntul header) existent în directorul include. La începutul programelor, care utilizează funcţiile enumerate mai jos şi nu numai, trebuie să se prevadă directiva #include <string.h>. a) Întoarcerea numărului de caractere (lungimea) dr-un şir de caractere se obţine prin apelarea funcţiei predefinite strlen(). Antetul acestei funcţii are următorul format general: unsigned long strlen(const char *sir). De exemplu, lungimea şirului evidenţiat în figura este 3, adică, strlen(şir)=3. abc sir Figura b) Duplicarea unui şir de caractere se realizează prin ermediul funcţiei predefinite strdup(), al cărui antet de definiţie este următorul: char *strdup(const char *sir1). Atribuirea sir2 = strdup(sir1); poate fi reprezentată schematic ca în figura : aabb11cc sir1 sir2 aabb11c Figura c c) Concatenarea (suma) a două şiruri de caractere este efectul apelului funcţiei predefinite strat(). Linia de definiţie a acestei funcţii este următoarea: char *strat(char *sir1, const char *sir2). Şirul al doilea de caractere se memorează în spaţiul alocat lui sir1, după valoarea acestuia, aşa cum se preză în figura sir1 sir2 sir1 sir2 sir2 Figura

3 d) Compararea a două şiruri de caractere se rezolvă, prin apelul fucţiei predefinite strcmp(), după schema: - dacă sir1 < sir2, atunci funcţia întoarce 1; - dacă sir1 > sir2, atunci funcţia întoarce 1; în caz contrar se întoarce 0. Antetul de definiţie al funcţiei strcmp() este următorul: strcmp(const char *sir1, const char *sir2). e) Prin apelul funcţiei predefinită strcpy(), care are linia de definiţie char *strcpy(char *sir1, const char *sir2), se realizează copierea şirului al doilea de caractere în zona de memorie afectată lui sir1. Operaţia de copiere poate fi urmărită în reprezentarea grafică din figura , schimbînd doar sensul săgeţii verticale. f) Funcţia strchr() caută într-un şir de caractere prima apariţie a unui caracter dat şi întoarce poer la acea apariţie, după cum se observă în figura Saxa generală a antetului de definiţie este următoarea: char *strchr(const char *sir1, c). sir1 c c Figura În programul ervin funcţiile strlen() şi strcat(). Prin apelul funcţiei strlen() se află lungimea tuturor şirurilor de caractere manipulate în program, iar rezultatul returnat prin apelarea funcţiei strcat() este sir3, care repreză concatenarea şirurilor de caractere sir1 cu sir2. /*Utilizarea functiilor strlen() si strcat() */ #include <stdio.h> #include <conio.h> #include <string.h> void main(void) { clrscr(); char *sir1 = Programare ; char *sir2 = in Turbo C++ ; char *sir3; prf("\n Sirul %s are lungimea de %d caractere ", sir1, strlen(sir1)); prf("\n Sirul %s are lungimea de %d caractere ", sir2, strlen(sir2)); sir3 = strcat(sir1, sir2); prf("\n Sirul %s are lungimea de %d caractere ", sir3, strlen(sir3)); getch(); } Sirul Programare are 10 caractere Sirul in Turbo C++ are 13 caractere Sirul Programare in Turbo C++ are 23 caractere Programul Pentru a stîrni mai mult curiozitatea cititorilor, textul definiţiilor funcţiilor strlen() şi strcat() se preză în cele ce urmează. /* Functia strlen() */ unsigned long strlen(const char * sir) 3

4 { register n; for(n=0; *sir!= \0 ; ++sir) ++n; return n; } Funcţia După cum se observă, se utilizează registrele de memorie pentru alocarea numărătorului de paşi, în vederea optimizării procesării structurii repetitive for. De cîte ori se găseşte un caracter diferit de caracterul terminator de şir de caractere (\0) se incrementează valoarea contorului n. /* Functia strcat() */ char*strcat(char * sir1, const char *sir2) { register char *p = sir1; while(*p) ++p; while(*p++ = *sir2++); return sir1; } Funcţia Cu prima instrucţiune while se localizează terminatorul de sfîrşit de şir de caractere pentru sir1, apoi cu a doua instrucţiune while se memorează, în continuare, caracter după caracter, conţinutul lui sir2. Zona de memorie afectată lui sir2 nu suportă nici o modificare. 2. Funcţii de alocare dinamică Alocarea dinamică a variabililor, care nu au dimensiunea cunoscută sau la care dimensiunea variază înte limite largi, prin ermediul funcţiilor predefinite din fişierul antet stdlib.h. a) Cele mai des folosite funcţii predefinite de alocare dinamică în limbajul C++ sînt malloc() şi free(), care se aplică variabililor de tip static şi automatic. Prin apelul funcţiei malloc(), necesarul de memorie pentru o astfel de variabilă se afectează în momentul execuţiei programului, în zona Heap, după care se eliberează prin funcţia free(), în vederea realocării lui în alt scop. Formatul general al antetului de definiţie pentru funcţia malloc() este următorul: void *malloc(unsigned numar_octeti);. Argumentul numar_octeti indică dimensiunea în octeţi rezervată în zona de memorie Heap. Rezultatul funcţiei este un poer de tip void, care conţine adresa primului octet din zona Heap afectată. În situaţia cînd memoria este insuficientă, funcţia întoarce un rezultat NULL. Se reameşte că un poer de tip void poate fi asignat oricărui alt tip de poer. De exemplu, pentru alocare dinamică de memorie unui tablou unidimensional, raţional în simplă precizie şi cu dimensiune precizată se pot utiliza următoarele două linii de program: float *x; x = (float ) malloc(5*sizeof(float)); x[0], x[1], x[2], x[3] şi x[4] sînt componentele tabloului x, care vor fi memorate în zona Heap la adesele x, x+1, x+2, x+3 şi respectiv x+4. Precizarea spaţiului de memorie pentru un anume tip de dată prin operatorul sizeof() şi utilizarea operatorului cast pentru conversie de tip la atribuire sînt recomandate în asigurarea portabilităţii programelor. Dezafectarea unei alocării dinamice de memorie se face prin apelul funcţiei free(), care are următorul format general: void free(void * nume_poer);. 4

5 După prelucrarea tabloului x, din exemplul de mai sus, se impune eliberarea memorie afectate acestuia, prin free(x);. Prin programul se citeşte, de la tastatura computerului, un număr nedeterminat de valori reale nenule şi diferite între ele, a căror sumă se află şi se tipăreşte pe ecranul monitorului în modulul principal de program. /* Functii de alocare dinamica */ #include <stdio.h> #include <conio.h> #include <stdlib.h> float *cit_nr( ); void main(void) { clrscr(); k, i = 0 ; float suma, *t; prf("\n Introduceti numarul valorilor regi : "); scanf("%d", &k); t = cit_nr(k); for ( suma =0., i = 0; i < k; ++i) suma +=*t+i; //Aflarea sumei prf("\nsuma =%f", suma); //Tiparirea sumei free(t); //Eliberarea memoriei getch(); } /* Functia de citire numere regi */ float *cit_nr( k) { i; float *p; if(!(p = (float *) malloc(k*sizeof(float)))) //Alocare dinamica { puts("memorie insuficienta"); return NULL; } prf("\n Nr. s : "); for (i = 0; i < k; ++i) //Citirea sirului de valori { scanf("%f", p+i); prf(" \n ");} return p; } Introduceti numarul valorilor regi : 2 Nr. s: 4 5 Suma = Programul Absenţa funcţiei free(t); în modulul principal are ca efect neeliberarea variabilei dinamice t şi în consecinţă, zona de memorie Heap rămîne alocată şi neadresată pînă la încheierea execuţiei programului. Absenţa argumentului local p în cadrul instrucţiunii return are de asemenea efecte nedorite. Domeniul de vizibilitate al lui p este blocul funcţiei cit_nr() şi dispariţia ei nu implică eliberarea zonei de memorie Heap alocate dinamic şi adresată dinamic pînă la terminarea execuţiei acesteia. În modulul principal, variabila dinamică t nu mai poate fi accesată deşi ea există în memorie şi nici eliberată pentru că poerul p dispare odată cu revenirea în funcţia main(). 5

6 b) În plus, pentru limbajul C++ există mai multe variante de organizare a spaţiului de memorie afectat variabililor dinamice, numite modele de memorie. Acestea necesită cunoştinţe de programare avansată. 3. Funcţii cu număr variabil de parametri Funcţiile cu un număr variabil de parametri ridică probleme legate atît de cunoaşterea dimensiunii zonei de memorie afectată şi de tipul de dată utilizat în fixarea modului de reprezentare a valorii de memorare, cît şi de referirea valorilor parametrilor actuali care se transferă parametrilor actuali, în absenţa indentificatorilor acestora. Dre funcţiile predefinite cu un număr variabil de parametri des utilizate în programele prezentate pînă în prezent se amesc scanf() şi prf Fişierul antet stdarg.h oferă un set de funcţii predefinite, care permite scrierea şi folosirea funcţiilor utilizator cu un număr variabil de parametri. Astfel, cu funcţiile va_start(), va_arg() şi va_end() se pot prelucra liste de parametri formali, pentru care nu se cunoaşte numărul şi tipurile acestora. Funcţia va_start() iniţializează variabila nume_var cu adresa primului parametru formal din sublista variabilă. Formatul general al acestei funcţii este următorul: void va_start(va_list nume_var, par_ultim_fix);, unde va_list este un tip de poer predefinit şi precizat în fişierul antet stdarg.h, către lista variabilă de parametri formali, nume_var este numele simbolic al variabilei prin ermediul căreia se adresează parametri formali, iar par_ultim_fix este indentificatorul ultimului parametru din sublista fixă. Funcţia va_arg() returnează valoarea parametrului indicat de variabila nume_var şi atribuie acesteia adresa următorului parametru formal din sublista variabilă. Saxa generală a funcţiei va_arg() este următoarea: tip_par va_arg(va_list nume_var, tip_var);, unde tip_par este tipul următorului parametru formal din sublista variabilă, care va preciza dimensiunea zonei de memorie alocată variabilei nume_var. Valorile transferate sînt extinse după caz la tipurile şi double. Funcţia va_end() încheie operaţia de extragere a parametrilor din sublista variabilă. Formatul ei general este următorul: void va_end(va_list nume_var);. Orice reluare a operaţiei de extragere a valorilor parametrilor din lista de variabile respectivă trebuie să recurgă din nou, în ordinea precizată mai sus, la cele trei funcţii. În programul ervine funcţia suma(), care află suma unui număr variabil de valori cu tipul double cu ajutorul funcţiilor va_start(), va_arg() şi va_end(). Lista de valori poate să conţină numai constante reale, variabile şi elemente de tablou, cu restricţia că ultimul element al listei este zero. Deci, expresiile chiar cu rezultat de tip double nu sînt admise în lista de valori. Prima neconcordanţă de tip, fără să fie semnalată, generează oprirea prelucrărilor cu afişarea unui rezultat greşit. /* Functii cu numar variabil de parametri */ #include <stdarg.h> #include <stdio.h> typedef double dbl; void suma(char *msg,...) { dbl arg, total =0.; va_list v; 6

7 va_start(v, msg); /*initializarea variabilei v */ while(( arg = va_arg(v, dbl))!= 0.) {total += arg;} prf (msg, total); va_end(v); } /*incheie citirea parametrilor */ void main(void) { dbl x = 7., t[] ={4,5, 6,9, 0}; suma("suma =%lf\n", t[1], 4., t[3], 1., 3., 3., x, t[2], 0.) } Suma = Programul Funcţia main() Funcţia main() determină modulul principal de program. Deci, cu ea se începe şi se încheie execuţia oricărui program. Prin funcţia main() se pot transmite informaţii necesare lansării în execuţie a programului, cum ar fi: indentificatorul de recunoaştere al programului, opţiuni de compilare şi date iniţiale. Aceste informaţii se numesc argumente din linia de comandă, deoarece sînt editate de sistemul de operare în cadrul comenzii de lansare în execuţie a programului respectiv. Funcţia main() are următoarea structură: [tip_de_dată] main([ argc, char *argv[]],[char *env[]]) {..} Atît tipul funcţiei cît şi lista de argumente sînt opţionale. În general, tipul de date care precede cuvîntul rezervat main este void. Dacă funcţia main() întoarce un rezultat, prin utilizarea instrucţiunii return, către programul apelant (adică, sistemul de operare), atunci acesta este 0, care indică terminarea normală a execuţiei funcţiei, sau un cod de eroare în caz de eşec. Argumentele argv[] şi env[] sînt tablouri de poeri. Parametrul argc fixează dimensiunea tabloului argv[] şi trebuie să verifice condiţia argc 1. Linia de comandă cuprinde şiruri de caractere delimitate de spaţiu sau Tab. Adresele acestora se memorează, în ordine, în tablourile de poeri argv[] şi env[]. La adresa argv[0] se înscrie numele programului. Numărul de adrese conţinute de tabloul argv[] depinde de valoarea argumentului argc. În figura se repreză grafic conţinutul următoarei linii de comandă: nume_program o lista de sase argumente, unde argc = 6. argv[0] argv[1] nume_progra m o argv[2] lista argv[3] argv[4] de sase argumente 7

8 argv[5] Figura Următoarele şiruri de caractere vor fi înregistrate la adrese succesive în tabloul de poeri env[]. Aceste şiruri de caractere pot constitui valori pentru unii parametri ai sistemului de operare, cum ar fi tipul prompt-ului tipărit la începutul unei linii de comandă sau căi implicite de căutare în directoare. La ultima adresă din env[] se înscrie valoarea NULL, care marchează sfîrşitul listei de opţiuni. Programul următor vizualizează numele autorului în conformitate cu informaţiile luate din linia de comandă: C:> Test Popescu I. Gheorghe <Enter> /* Functia main() #include <stdio.h> #include <conio.h> main(argc, char* argv[]) { i; prf("\nautor :"); for (i = 1; i < argc; i++) prf(" %s ", argv[i]); return 0; getch(); } Autor: Popescu I. Ghoerghe Programul II. Noţiunea de structură Definirea şi prelucrarea unui grup organizat de date neomogen se realizează prin ermediul noţiunii de structură. Acelaşi lucru se denumeşte în alte limbaje de programare cu articol sau înregistrare logică. Unitatea elementară de informaţie din cadrul unei structuri se numeşte cîmp sau membru. Atît natura cît şi ordinea unui cîmp într-o structură se fixează, de către utilizator, după necesităţi. Numărul de cîmpuri care ră în componenţa unei structuri este nedeterminat. Declararea şi iniţializarea structurilor şi tablourilor de structuri vor fi prezentate în următoarele două secţiuni, iar diverse tipuri de structuri recursive, inclusiv exemple adecvate, vor constitui esenţa secţiuni Declararea şi iniţializarea unei structuri Un ansamblu format dr-un număr nedeterminat de cîmpuri cu diverse tipuri defineşte o structură. Referirea structurii se face prr-un nume simbolic stabilit de programator. Saxa generală de declarare a unei structuri este următoarea: struct nume_tip_structura { tip_cîmp_1 nume_cîmp_1; tip_cîmp_2 nume_cîmp_2;.. tip_cîmp_n nume_cîmp_n; } lista_nume_var_tip_struct; unde, struct este cuvînt cheie. Nume_tip_structura şi nume_cîmp_i, cu i= 1, n, sînt identificatorii de recunoaştere pentru structură şi cîmpurilor componente structurii. Identificatorii de cîmpuri trebuie să fie unici numai în tipul de structură în care au fost definiţi. Tip_cîmp_i, cu i= 1, n, sînt tipuri de date, din cele descrise pînă în prezent, în concordanţă cu natura cîmpurilor corespunzătoare. La rândul lui, tipul unui cîmp poate 8

9 să fie un tip de structură descris anterior, existînd astfel posibilitatea reprezentării şi organizării a unor structuri de date complexe şi imbricate. Lista de variabile de tip structură încheie construcţia sactică de declarare a unei structuri. Ca separator de variabile în cadrul listei se admite doar virgula.. Este posibil să absenteze, fie numele simbolic al structurii, fie lista de variabile. Prima situaţie este mai rară, permiţînd declararea unei structuri anonime. Lista de variabile de tip structură poate fi precizată ulterior, numai cînd identificatorul de recunoaştere al structurii este cunoscut, prr-o construcţie de forma: struct nume_tip_structura lista_var_tip_struct;. O declarare mai simplă a variabililor de tip structură se poate obţine prin utilizarea specificatorului typedef (vezi, secţiunea 2.4.2). Referirea unui cîmp dr-o variabilă de tip structură se realizează, prin calificare, cu operatorul de selectare punct (.), astfel: nume_variabila. nume_cîmp_i, unde i= 1, n. O astfel de referire poate să ervină ca operand în expresii de atribuire sau ca parametru actual în funcţii de citire/scriere. Menţionăm doar că operatorul utilizat în aces caz este cel de selectare indirectă, notat prin săgeată ( ). Iniţializarea unei variabile de tip structură se obţine prin indicarea, în ordine, pentru fiecare cîmp component cîte o valoare corespunzătoare, după cum urmează: struct nume_tip_structura nume_variabila = (lista_valori);. Separatorul de valori în lista_valori este tot virgula. Ulterior, aceste valori pot fi afişate, modificate sau utilizate în diverse operaţii matematice. În programul de mai jos se descrie o structură, de tip catalog şcolar, cu următoarele cîmpuri componente: nume_prenume, adresa, discipline şi medie. A doua linie din programul principal precizează valorea iniţială pentru variabila student de tip structură catalog. Ulterior, o parte din aceste valori sînt schimbate prin instrucţiuni de atribuire, şi anume notele de la a treia disciplină şi a patra şi media. Tipărirea valorii variabilei student se face prin ermediul primelor trei funcţii de scriere prf() şi succede un text de tip comentariu. Alte amănunte despre structura programului sînt date la sfîrşitul secţiunii. /* Declarare structura catalog */ #include <stdio.h> #include <conio.h> struct catalog { char nume_prenume[25]; char adresa[35]; discipline[5]; float medie; }; void main(void) { clrscr(); struct catalog student={"popescu Ioan","M Eminescu 30 Iasi", 10, 9, 9, 8, 10, 9.2}; student.discipline[2] = 10; student.discipline[3] = 10;student.medie=9.80; prf("\n Variabila student este: "); prf("\n%s %s", student.nume_prenume, student.adresa); 9

10 prf("\n %d %d %d %d %d %5.2f\n", student.discipline[0], student.discipline[1], student.discipline[2], student.discipline[3], student.discipline[4], student.medie); struct catalog elev; elev = student; prf("\n Introduceti nume elev: \n"); gets(elev.nume_prenume); elev.discipline[1]=10; elev.medie=(elev.discipline[0]+elev.discipline[1]+elev.discipline[2] + elev.discipline[3]+elev.discipline[4])/5.; prf("\n Variabila elev este: "); prf("\n%s %s",elev.nume_prenume,elev.adresa); prf("\n %d %d %d %d %d %5.2f", elev.discipline[0], elev.discipline[1], elev.discipline[2], elev.discipline[3], elev.discipline[4], elev.medie); getch(); } Variabila student este: Popescu Ioan M Eminescu 30 Iasi Introduceti nume elev: Ionescu Mihai Variabila elev este: Ionescu Mihai M Eminescu 30 Iasi Programul Variabilele, cu tipul structură identic, pot să apară în expresii de atribuire. Asignările se realizează în ordinea apariţiei cîmpurilor din componenţa structurii respective. În cazul programului de mai sus, atribuirea student = elev; este corectă şi se întinde asupra tuturor cîmpurilor componente, adică: nume şi prenume, adresă, discipline şi medie aritmetică. Numele şi prenumele elevului s-au citit de la tastatura calculatorului cu ajutorul funcţiei gets(). După schimbarea notei la a doua disciplină, se recalculează media aritmetică generală. Ultimele trei funcţii de scriere prf() afişează valoarea variabilei elev. III. FIŞIERE ŞI OPERAŢII DE INTRARE/IEŞIRE 1. Consideraţii generale Transferul informaţiilor între calculator şi utilizator se face prin ermediul dispozitivelor de rare/ieşire. Prre acestea se pot enumera tastatura, monitorul, imprimanta şi diverse unităţi de disc. De aceea, noţiunea de fişier trebuie discutată din două puncte de vedere: fizic şi logic. Pentru simplitate, dispozitivele fizice se denumesc prin vocabula fişier. Modul de organizare, de consultare şi de tratare al fişierelor logice depinde de limbajul de programare utilizat, de volumul informaţiilor prelucrate şi nu în ultimul rînd de configuraţia sistemului de calcul. În limbajul C++ s-au gîndit două categorii de fişiere logice (dispozitive de rare/ieşire) logice: predefinite şi de tip utilizator. 10

11 Conţinutul logic al fişierelor de tip utilizator este determinat de noţiunea de structură, în care se precizează numărul şi tipurile cîmpurilor componente structurii. Astfel, fişierul logic de tip utilizator este un ansamblu organizat de un număr nedeterminat de structuri. De fapt, fişierul logic de tip utilizator poate fi considerat un tablou multidimensional de lungime variabilă, în care coloanele au diferite tipuri de date. O situaţie specială o constituie fişierele predefinite (dispozitivele logice predefinite), care sînt gestionate automat la lansarea în execuţie a programului de tip C. Fişierele predefinite asociate claviaturii stdin şi stderr permit numai operaţii de citire, iar fişierele predefinite asociate ecranului şi imprimantei stdout şi respectiv stdprn permit numai operaţii de scriere. Fişierul predefinit auxiliar stdaux este de rare/ieşire. Cele 5 cuve cheie sînt constante poer de tip file declarate în stdio.h. Operaţiile de rare/ieşire suportate de un fişier se efectuează cu ajutorul funcţiilor predefinite care formează conţinutul fişierelor antet stdio.h şi conio.h. Aceste fişiere nu fac parte egrantă din structura limbajelor de tip C, aşa cum se întîmplă cu toate celelalte fişere cu extensia.h. De aceea, este necesar să se prevadă roducerea lor, în antetul programului C++, prin directiva #include <nume_fişier_antet>. Cînd apare o cerere de citire/scriere, sistemul de operare iniţiază o procedură de control şi execuţie cu privire la transferul de informaţii, între dispozitivul fizic de rare/ieşire (ecran, tastatură, imprimantă, unitate de disc) şi dispozitivul logic de rare/ ieşire similar, numit stream (flux). Deschiderea stream-ului asociat unui anumit dispozitiv logic de rare/ieşire presupune, pe de o parte crearea indicatorilor standard de stare (variabile de tip File) corespunzători şi poziţionarea acestora pe valorile iniţiale iar pe de alta, alocarea necesarului de memorie zonei tampon (buffer-ului) prin ermediul căreia se realizează efectiv transferul de informaţie. Rezultatul controlului transferului de informaţie de către sistemul de operare se va reflecta în valorile actualizate ale indicatorilor de stare, care pot fi aflate prr-o serie de funcţii standard, aşa cum vom vedea mai tîrziu. Închiderea stream-ului va permite eliberarea memoriei afectate zonei tampon după golirea acesteia. Stream-urile pot fi de tip text sau de tip binar. Un stream de tip text transferă şiruri de texte organizate în linii de lungime variabilă, în concordanţă cu numărul maxim de caractere gestionat de dispozitivul logic de rare/ieşire. Separarea liniilor se face prin caracterele de control sfîrşit de linie (0DH) şi salt la linia următoare (0AH). Un astfel de stream se poate asocia cu stdin, stderr şi stdout, din care numai stdin necesită o zonă tampon de memorie, cu dimensiunea egală cu lungimea maximă a linei de text transferată. Un stream de tip binar transferă o secvenţă de cifre binare fără o structură anume. Completarea zonei tampon se face automat dacă şirul binar este mai scurt, avînd în vedere că dimensiunea standard a zonei tampon este de 256 octeţi. Un stream de tip binar se poate asocia cu stdprn şi stdaux. În paragraful următor se preză prototipul funcţiilor predefinite care permit operaţii de citire/scriere direct legate de dispozitivele logice predefinite de rare/ieşire şi care sînt mai des utilizate în structura programelor de tip C. 2. Funcţii predefinite pentru dispozitivele standard de rare/ieşire Funcţiile predefinite pentru tastatură permit realizarea operaţiei de citire a unor caractere sub anumite condiţii: cu sau fără afişarea caracterelor cititite pe ecran şi cu sau fără 11

12 formatare lor. Funcţiile getch(), getche(), getchar() şi gets() permit o citire cu afişare, cu excepţia lui getche() şi fără formatare. Atît tipărirea pe ecran, cît şi formatarea datelor citite se realizează cu funcţia scanf(). Corespunzător, pentru operaţia de scriere fără formatare pe ecranul monitorului s- au conceput funcţiile putchar() şi puts(), iar pentru cea cu formatare prf(). Lungimea şirului de rare/ieşire diferă la ambele categorii de funcţii astfel getch(), getche(), getchar() şi putchar() prelucrează un singur caracter şi nu are importanţă în rest. 2.1 Operaţia de citire fără formatare Introducerea unor caractere de la tastatură (dispozitivul de rare standard stdin) poate fi cu sau fără ecou (cu sau fără afişare pe ecran), iar funcţiile predefinite uzuale folosite în acest scop se preză după cum urmează: - getch(void); Această funcţie aşteaptă apăsarea unei taste, după care afişează pe ecran caracterul citit. Prototipul ei se află în fişierul conio.h. Aproape în toate programele C prezentate în capitolele anterioare s-a utilizat această funcţie ca un subterfugiu pentru obţinerea accesului nelimitat de către programator la pagina cu rezultatele programului (pagina de ecran utilizator). - getche(void); Funcţia getche() este analoagă cu getch(), atît ca localizare, cît şi ca efect, doar că returnarea caracterului furnizat de la tastatură este fără ecou; - getchar(void); Această funcţie transformă caracterul citit în întreg fără semn numai după apăsarea tastei Enter (CR). În caz de eroare sau condiţie de sfîrşit de fişier (EOF) furnizează valoarea 1 (deoarece caracterul EOF are valoarea în hexazecimal 0xff = -1); - char *gets(char *s); Cu funcţia gets() se poate roduce de la claviatura calculatorului un şir de caractere de lungime variabilă. Caracterele tastate succesiv sînt memorate, pe rînd, în tabloul de la adresa s, iar după apăsarea tastei Enter se adaugă terminatorul de şir de caractere \0. În caz de eroare funcţia gets() întoarce NULL, altfel adresa şirului de caractere. Exemplul 1. char sir[15]; gets(sir); puts(sir);.. Cu gets() se citeşte din stdin un şir de caractere de lungime maximă 15, care se tipăreşte apoi la stdout prin ermediul funcţiei predefinite puts(). 2.2 Operaţia de citire cu formatare Operaţia de citire cu formatare permite pe lîngă roducerea de date de diverse tipuri de la suportul de rare, conversia acestora de la reprezentarea externă la reprezentarea binară, cu respectarea restricţiilor impuse (numărul total de caractere alocate, numărul de zecimale, caractere de spaţiere, etc.). Prototipul funcţiei scanf() de citire cu formatare este următorul: scanf(const char *şir_de_formatare [, lista_adrese_variabile]); Lista cu adresele variabililor de rare este opţională. Există o corespondenţă strictă de tip, de număr şi de poziţie între descriptorii de format (specificatorii de format) 12

13 din şirul de formatare şi variabilile a căror adrese sînt precizate în lista_adrese_variabile. Orice neconcordanţă va fi sancţionată cu un mesaj de eroare. Şirul de formatare poate să conţină: - descriptori de format, care sînt şiruri de caractere precedate de % conforme cu tipurile de date atribuite variabililor a căror adrese ervin în lista_adrese_variabile. Lista acestora se precizează în figura secvenţele escape \n (linie nouă) şi \t (tab); - blancul (spaţiul liber); - orice alt caracter ASCII. Funcţia scanf() citeşte în ordine caracterele tastate de la claviatura calculatorului, care constituie valoarea unei variabile de rare, le erpretează conform precizărilor furnizate de descriptorul de format corespunzător şi le depune la adresa alocată în memorie variabilei respective. După satisfacerea întregii liste de variabile, funcţia returnează numărul de valori citite. Dacă lista de adrese de variabile este vidă, atunci rezultatul întors este nul. Ultimile două categorii de caractere din şirul de formatare declanşează citirea fără memorare a caracterului citit din stdin, dacă există identitate între ele. Saxa generală a unui descriptor de format se preză astfel: %[*][n1[.n2]][c1][c2]indentificator_descriptor, unde singurile argumente obligatorii sînt % şi indentificator_descriptor. Lista descriptorilor de fomat se preză în tabelul Celelelalte argumente sînt cu următoarele semnificaţii: - * precizează că următoarea valoare citită nu se mai atribuie variabilei care urmează în lista de adrese; - n1 repreză numărul maxim de caractere alocate unei valori; - n2 este numărul de cifre situate după punctul zecimal în cazul unei valori raţionale; - c1 repreză un modificator de adresă pentru variabila de rare corespunzătoare, şi anume: F pentru far (modelul depărtat) sau N pentru near (modelul apropiat); - c2 repreză un modificator de tip pentru argumentul de rare respectiv, după cum urmează: h (short ) pentru descriptorii de format d, i, o, u şi x; b) l (long ) pentru descriptorii de format d, i, o, u şi x sau în situaţia tipului double pentru descriptorii de format e, f şi g; c) L (long double) pentru descriptorii de format e, f şi g. Dacă n1 este precizat în componenţa descriptorului de format, atunci citirea valorii respective se termină după preluarea din stdin a unui număr de caractere egal cu n1 sau la întîlnirea unui caracter incompatibil cu formatul precizat. Dacă n1 este absent, atunci citirea valorii respective se încheie după întîlnirea unui blanc, a unui tab, a unui caracter incompatibil cu formatul precizat sau după tastarea unui sfîrşit de linie (Enter). c s d D Indentificator descriptor Valoarea de rare caracter şir de caractere întreg zecimal întreg zecimal Tip variabilă * char char 13

14 u U e, f, g, E, G o O x X i I n p întreg zecimal fără semn întreg zecimal fără semn număr raţional întreg octal întreg octal întreg hexazecimal fără semn întreg hexazecimal fără semn întreg (d, o sau x) întreg (D, O sau X) - adresa în hexazecimal: far: YYYY:ZZZZ near: ZZZZ unsigned unsigned long float long long long poer Tabelul Se precizează că descriptorul de format n specifică lungimea şirului de rare în citirea curentă. Dacă şirul de rare este prea lung, ultimele caractere sînt ignorate la citirea curentă, dar rămînînd în dispozitivul de rare pot afecta următoarea citire. Cu funcţia predefinită fflush() se înlătură, prin program, balastul rămas în dispozitivul de rare. Dacă lista adreselor de variabile nu se satisface complet, şirul de rare fiind prea scurt, atunci computerul ră într-o stare de aşteptare. Indiferent de lungimea şirului de rare, execuţia funcţiei scanf() se încheie la citirea unui caracter incompatibil cu specificaţia de format erpretată, cu afişarea unui mesaj de eroare corespunzător. Cîteva exemple. 1.. char c1,s1; i; long j; float x; double y; scanf ( %c%s, c1, s1); scanf( %3d%4D%f%lf, &i, &j, &x, &y);.. Pentru şirul de rare aabcd se produc următoarele atribuiri: c1 = a, s1 = ABCD, i = 123, j = 1234, x = 7.5 şi termină normal. 2.. float z[10]; y = şi funcţiile scanf se i; for ( i = 0; i<10; ++i) scanf( %f, z[i]); fflush(stdin);.. În situaţia şirului de rare instrucţiunea for se încheie normal, dar este necesar să se prevadă funcţia fflush() pentru 14

15 golirea dispozitivului de rare, altfel ultimile două valori din şir pot afecta citirea următoarea din program a, b; scanf ( %d%d, a, b);.. Funcţia scanf() se termină cu eroare în cazul şirului de rare 15 1x3y, deoarece a doua valoare conţine litere în locul a două cifre zecimale. 2.3 Operaţia de scriere fără formatare Scrierea unui caracter pe ecranul monitorului se realizează prin ermediul funcţiei predefinite putchar(). Prototipul acestei funcţii este următorul: putchar( c);. În situaţia cînd operaţia de scriere decurge normal, funcţia putchar() întoarce ca rezultat caracterul afişat pe ecran. Altfel, rezultatul ei se consideră EOF (-1). Cu funcţia predefinită puts() se poate tipări la stdout un şir de caractere. Aceasta are următorul prototip: puts(const char *s);. Funcţia puts() scrie pe ecran şirul de caractere memorat la adresa s şi sare la linie nouă. În caz de eroare rezultatul ei este EOF (adică, -1). 2.4 Operaţia de scriere cu formatare Operaţia de scriere cu formatare presupune conversia unei secvenţe binare din reprezentarea ernă într-un şir de caractere ASCII şi afişarea acestui şir la stdout, conform specificaţiilor de formatare precizate în componenţa funcţiei predefinită prf. Formatul general al prototipului funcţiei prf() este următorul: prf(const char * şir_de_formatare, listă_valori_ieşire);. Şirul de formatare cuprinde: - descriptori de format, care sînt şiruri de caractere precedate de % conforme cu tipurile valorilor de ieşire. Lista descriptorilor de format se precizează în figura ; - caractere ASCII, care se tipăresc ca atare la dispozitivul de ieşire; - secvenţe escape de spaţiere de tipul \n (linie nouă) şi \t (tab); - blancul. Indentificator Format de scriere Tip variabilă c s d, i u f e E g G o x ( sau X) descriptor caracter şir de caractere întreg zecimal cu semn întreg zecimal fără semn [-]n1.dddddd [-]n1.dddde[+/-]ddd [-]n1.dddde[+/-]ddd similar cu f sau e, în funcţie de precizie similar cu E întreg octal fără semn întreg hexazecimal fără semn char char * float float float float float 15

16 % n p cu a,, f (sau A,, F) caracterul % la adresa indicată afişează numărul de caractere transferate curent adresa în hexazecimal: far: YYYY:ZZZZ near: ZZZZ - * poer Tabelul În această situaţie, spre deosebire de operaţia de citire cu formatare, structura descriptorilor de format poate fi completată cu o serie de precizări privitoare la alinierea valorilor în limitele spaţiului alocat, la semn, la punctul zecimal sau la prefixul datelor octale şi hexazecimale, după cum urmează: %[a][n1[.n2]][c1][c2]indentificator_descriptor, unde singurile argumente obligatorii, după cum se ştie, sînt % şi indentificator_descriptor. Majoritatea argumentelor sînt cu semnificaţii similare celor prezentate în paragraful Urmează să discutăm doar semnificaţia lui a. Alinierea valorilor în spaţiul precizat prin descriptorul de format se face ţinînd cont de regulile de mai jos: - alinierea implicită (în absenţa lui a) a valorilor numerice se face la dreapta, iar a şirurilor de caractere la stînga şi completare cu spaţii sau 0 în rest. Precizia implicită pentru valorilor de tip raţional este de 6 cifre zecimale (adică, după punctul zecimal se afişează 6 cifre, eventual cu adăugare de zerouri); - dacă a este, atunci alinierea valorilor numerice se face la stînga şi completare cu spaţii în dreapta; - dacă a este +, atunci valorilor numerice sînt precedate de + sau -; - dacă a este spaţiu liber, numai valorile negative sînte precedate de semnul minus; - dacă a este #, atunci se produc inserări de caractere distinctive, astfel: se adaugă prefixul 0 la valorile octale (pentru o); 2) se adaugă prefixul 0x sau 0X la valorile hexazecimale (pentru x sau X); 3) se înscrie punctul zecimal pentru e, E, f, g sau G, iar în cazul descriptorilor g şi G nu se elimină digiţii 0 finali. Cîteva exemple. 1. În tabelul se descriu cîteva formate de scriere pentru tipuri de date întregi şi raţionale în simplă precizie: Tip de dată Descriptor de format Format de scriere întregi raţoinale %d %3d %2d (se ignoră) %5d %f %f4.2 %f4.2 %f6.2 %f3.1 (se ignoră) Tabelul

17 . k = 14; double z = ; prf( \nk=%3d\tz=%9.2lf, k, z); Şirul de formatare cuprinde secvenţe de evitare, caractere ASCII şi descriptorii de format d şi lf. Valorile variabililor k şi z vor fi tipărite în clar, la linie nouă, iar spaţiul liber între ele este egal cu o tabulare standard. 3 Operaţii aplicabile fişierelor utilizator Fişierele de tip utilizator pot suporta operaţiile de creare, exploatare şi actualizare. Operaţia de creare constă în scrierea structurilor componente una după alta pe suportul magnetic afectat fişierului sau în directorul precizat în calea fişierului. Indicatorul care fixează poziţia curentă în fişier se iniţializează cu 0. Valoarea acestuia va fi actualizată la fiecare transfer. Fişierul se încheie cu un caracter special EOF (end of file - sfîrşit de fişier). Operaţia de exploatare permite citirea parţială sau totală a unui fişier în vederea inventarierii, prelucrării sau tipăririi informaţiilor conţinute de către acesta. Operaţia de actualizare constă în modificare de cîmpuri componente unor structuri, în adăugare de noi structuri, nu neapărat la sfîrşitul fişierului, sau în şteregere de structuri cu un conţinut perimat. Actualizare presupune în anumite situaţii crearea unui nou fişier de acelaşi tip sau nu cu cel iniţial, cu luare de măsuri referitoare la indentificarea corectă a fişierului nou (în general, se utilizează un nume simblic diferit de cel al fişierului iniţial). Indiferent de operaţia de rare/ieşire executată asupra fişierului, progresarea în fişier se face prin funcţii predefinite de citire/scriere de un tip corespunzător. Accesul la informaţiile unui fişier poate fi secvenţial sau aleator (direct). Accesul secvenţial presupune citirea/scrierea structurilor una după alta, începînd cu prima şi terminînd la ultima. Valoarea variabilei poziţie în fişier se incrementează automat cu un anumit număr de octeţi după fiecare operaţie scanf()/prf(). Pe baza informaţiilor furnizate prin program, accesul aleator permite direct depistarea unei anumite structuri din componenţa fişierului prin ermediul funcţiei predefinită fseek(), fără a se mai trece prin toate structurile dinaea acesteia. Cu alte cuve, valorea indicatorului poziţie în fişier este gestionată prin program, realizîndu-se astfel operaţii de rare/ieşire în diverse zone ale fişierului. Este util de remarcat că în fişierele memorate pe disc se pot combina cele două tipuri de accese, în sensul că o anumită porţiune din fişier poate fi procesată în totalitate. Orice ervenţie într-un fişier este precedată de operaţia de deschidere a fişierului prin funcţia predefinită fopen(), care pregăteşte fişierul pentru acest lucru şi succedată de operaţia de închidere a fişierului prin fclose(). Aşa cum s-a mai spus, nu acelaşi lucru se întîmplă în cazul fişierelor predefinite, unde cele două operaţii se realizează automat. Indentificarea unui fişier se face prr-un şir de caractere ce include numele unităţii de disc, calea, numele simbolic al fişierului şi extensia acestuia. Şirul de caractere poate să conţină litere, cifre, liniuţa de subliniere, blancul, :, şi \ (backslash-ul se repreză prin secvenţa \\). Sistemul de operare nu face distincţie înte majuscule şi minuscule. Se recomandă ca fixarea numelui simbolic al fişierului să se facă în aşa fel încît să sugereze funcţia lui, deoarece acesta rămîne o caracteristică permanentă şi independentă de programul care îl va utiliza de acum înae. Dacă numele unităţii de disc absentează, atunci se consideră unitatea de disc implicită. Fişierul va fi căutat în directorul de lucru în cazul cînd lipseşte calea. 17

18 În concluzie, pentru a se lucra corect cu fişiere utilizator trebuie să se parcurgă următoarele etape: - să se precizeze numele formal al fişierului prr-o variabilă de tip FILE în partea de declaraţii a unităţii de program corespunzătoare. Trebuie să existe concordanţă de nume între fişierul formal (declarat ca o variabilă FILE) şi numele unui fişier ce există sau va exista pe un suprt magnetic; - să se deschidă fişierul prin fopen(), cu precizarea tipurilor operaţiei de citire/scriere şi stream-ului (text sau binar) executate; - să se scrie/citească în fişier cu funcţia predefinită fwrite()/fread(); - să se închidă fişierul cu fclose(). Indentificatorii declaraţi în domeniul fişierului cu caracter global au, în mod implicit, legătură de tip extern. Cu specificatorul static ultimul atribut poate fi schimbat în unul de tip ern. Indentificatorii neglobali au legătură identică cu cea rezultată din declaraţia indentificatorilor globali, dacă există şi este cu vizibilitate. În mod similar, specificatorul static poate determina o legătură ernă, iar specificatorul extern una externă. Urmărirea reperelor anunţate mai sus se poate face în exemplu prezentat în ultima secţiune. 18

Microsoft Word - CarteC.doc

Microsoft Word - CarteC.doc Transmiterea parametrilor unei funcții Parametrii se transmit de la funcţia apelantă la funcţia apelată prin intermediul stivei. La apelul unei funcţii, pe stivă se crează o înregistrare de activare, care

Mai mult

Limbaje de Programare Curs 6 – Functii de intrare-iesire

Limbaje de Programare   Curs 6 – Functii de intrare-iesire Limbaje de Programare Curs 6 Funcţii de intrare-ieşire Dr. Casandra Holotescu Universitatea Politehnica Timişoara Ce discutăm azi... 1 Citire formatată 2 Citirea şirurilor de caractere 3 Citirea unor linii

Mai mult

Limbaje de Programare Curs 8 – Fisiere

Limbaje de Programare   Curs 8 – Fisiere Limbaje de Programare Curs 8 Fişiere Dr. Casandra Holotescu Universitatea Politehnica Timişoara Ce discutăm azi... 1 Lucrul cu fişiere 2 Fişiere de tip text 3 Funcţii pentru cazuri de eroare 4 Fişiere

Mai mult

SUBPROGRAME

SUBPROGRAME SUBPROGRAME Un subprogram este un ansamblu ce poate conţine tipuri de date, variabile şi instrucţiuni destinate unei anumite prelucrări (calcule, citiri, scrieri). Subprogramul poate fi executat doar dacă

Mai mult

Microsoft Word - CarteC.doc

Microsoft Word - CarteC.doc Introducere în limbajul de programare C - C este un limbaj de programare ale cărui caracteristici sunt economia de expresie, structuri moderne de control al fluxului şi de date, precum şi un set bogat

Mai mult

Microsoft Word - PCLP2_Curs_4_2019.doc

Microsoft Word - PCLP2_Curs_4_2019.doc 12. Tipuri de date derivate direct - Tipul pointer Tipurile de date derivate direct sunt tipuri de date create pe baza unor tipuri de date existente. In limbajul C, un astfel de tip, nestructurat (simplu),

Mai mult

E_d_Informatica_sp_SN_2014_bar_10_LRO

E_d_Informatica_sp_SN_2014_bar_10_LRO Examenul de bacalaureat naţional 2014 Proba E. d) Informatică Varianta 10 Toate subiectele sunt obligatorii. Se acordă 10 puncte din oficiu. Timpul de lucru efectiv este de 3 ore. În rezolvările cerute,

Mai mult

L7

L7 Lucrarea de laborator nr. 7 POINTERI 1. Conţinutul lucrării În lucrare se prezintă tipul pointer, operaţiile permise asupra pointerilor, modul de alocare şi eliberare dinamică a memoriei. 2. Consideraţii

Mai mult

Programarea şi utilizarea calculatoarelor

Programarea şi utilizarea calculatoarelor Universitatea Constantin Brâncuşi din Târgu-Jiu Facultatea de Inginerie Departamentul de Automatică, Energie şi Mediu Programarea calculatoarelor Lect.dr. Adrian Runceanu Curs 3 Elemente introductive ale

Mai mult

Limbaje de programare Pointeri. Alocare dinamică (continuare) 26 noiembrie 2012

Limbaje de programare Pointeri. Alocare dinamică (continuare) 26 noiembrie 2012 Limbaje de programare Pointeri. Alocare dinamică (continuare) 26 noiembrie 2012 EROARE: lipsa iniţializării E o EROARE să folosim o variabilă neiniţializată int sum; for (i=0; i++ < 10; ) sum += a[i];

Mai mult

LUCRAREA NR

LUCRAREA NR LUCRAREA NR. 5 TIPURI DE DATE STRUCTURATE În C există două categorii de tipuri de date structurate: tablourile şi structurile. Un tablou este o colecţie omogenă de valori de acelaşi tip identificate printr-un

Mai mult

Limbaje de Programare Curs 5 – Siruri de caractere

Limbaje de Programare   Curs 5 – Siruri de caractere Limbaje de Programare Curs 5 Şiruri de caractere Dr. Casandra Holotescu Universitatea Politehnica Timişoara Ce discutăm azi... 1 Şiruri de caractere 2 Tipul pointer 3 Funcţii cu şiruri de caractere Şiruri

Mai mult

Logică și structuri discrete Limbaje regulate și automate Marius Minea marius/curs/lsd/ 24 noiembrie 2014

Logică și structuri discrete Limbaje regulate și automate Marius Minea   marius/curs/lsd/ 24 noiembrie 2014 Logică și structuri discrete Limbaje regulate și automate Marius Minea marius@cs.upt.ro http://www.cs.upt.ro/ marius/curs/lsd/ 24 noiembrie 2014 Un exemplu: automatul de cafea acțiuni (utilizator): introdu

Mai mult

E_d_Informatica_sp_MI_2015_bar_02_LRO

E_d_Informatica_sp_MI_2015_bar_02_LRO Examenul de bacalaureat naţional 2015 Proba E. d) Informatică Varianta 2 Filiera teoretică, profilul real, specializările: matematică-informatică matematică-informatică intensiv informatică Toate subiectele

Mai mult

Laborator 2 Incompatibilităţi/Diferenţe între C şi C++ Completări C++ Supraîncărcarea (redefinirea) numelui de funcţii În C nu este permisă existenţa

Laborator 2 Incompatibilităţi/Diferenţe între C şi C++ Completări C++ Supraîncărcarea (redefinirea) numelui de funcţii În C nu este permisă existenţa Laborator 2 Incompatibilităţi/Diferenţe între C şi C++ Completări C++ Supraîncărcarea (redefinirea) numelui de funcţii În C nu este permisă existenţa a două funcţii care au acelaşi nume În C++ acest lucru

Mai mult

Slide 1

Slide 1 CURS 4 Structura generală a unui program C Program - ansamblu de instrucţiuni incluse în una sau mai multe funcţii, care specifică operaţiile ce trebuie efectuate asupra unor date pentru a fi prelucrate

Mai mult

Microsoft PowerPoint - ImplementareLimbaj [Read-Only] [Compatibility Mode]

Microsoft PowerPoint - ImplementareLimbaj [Read-Only] [Compatibility Mode] Detalii de implementare. Declararea variabilelor, transmiterea parametrilor catre subprograme. Declararea variabilelor variabile globale -declarate in afara oricarei functii variabile locale -declarate

Mai mult

Paradigme de programare

Paradigme de programare Curs 4 Transparență referențială. Legare statică / dinamică. Modelul contextual de evaluare. Transparență referențială Cuprins Efecte laterale Transparență referențială 2 Efecte laterale Efecte laterale

Mai mult

ALGORITMII ŞI REPREZENTAREA LOR Noţiunea de algoritm Noţiunea de algoritm este foarte veche. Ea a fost introdusă în secolele VIII-IX de către Abu Ja f

ALGORITMII ŞI REPREZENTAREA LOR Noţiunea de algoritm Noţiunea de algoritm este foarte veche. Ea a fost introdusă în secolele VIII-IX de către Abu Ja f ALGORITMII ŞI REPREZENTAREA LOR Noţiunea de algoritm Noţiunea de algoritm este foarte veche. Ea a fost introdusă în secolele VIII-IX de către Abu Ja far Mohammed ibn Musâ al- Khowârizmî în cartea sa intitulată

Mai mult

Microsoft PowerPoint - Curs_SDA_4_RO_2019_v2.pptx

Microsoft PowerPoint - Curs_SDA_4_RO_2019_v2.pptx Curs SDA (PC2) Curs 4 Structuri de date (continuare) Iulian Năstac 10. Funcţii pentru alocarea dinamică a memoriei (Recapitulare) Alocarea dinamică este caracteristica prin care un program poate obţine

Mai mult

Operatorii in C Expresii Operatori aritmetici Operatori de asignare Operatori de incrementare si decrementare Operatori relationali Operatori logici O

Operatorii in C Expresii Operatori aritmetici Operatori de asignare Operatori de incrementare si decrementare Operatori relationali Operatori logici O Operatorii in C Expresii Operatori aritmetici Operatori de asignare Operatori de incrementare si decrementare Operatori relationali Operatori logici Operatii pe biti Operatorul conditional Operatori Logici

Mai mult

Microsoft Word - Lab1a.doc

Microsoft Word - Lab1a.doc Sisteme de numeraţie şi coduri numerice 1.1. Sisteme de numeraţie 1.2. Conversii generale între sisteme de numeraţie 1.3. Reprezentarea numerelor binare negative 1.4. Coduri numerice 1.5. Aplicaţii In

Mai mult

Object Oriented Programming

Object Oriented Programming UNIVERSITATEA BABEŞ-BOLYAI Facultatea de Matematică şi Informatică Programare orientată obiect Curs 02 Laura Dioşan 2 POO Elemente de bază ale limbajului C++ Referinţe şi pointeri Vectori TAD-uri 3 Tipul

Mai mult

Programarea calculatoarelor. Note de curs Marius Minea 1 Introducere în programarea în C 1.1 Funcţii în limbajul C Calcule şi funcţii La origine, rolu

Programarea calculatoarelor. Note de curs Marius Minea 1 Introducere în programarea în C 1.1 Funcţii în limbajul C Calcule şi funcţii La origine, rolu 1 Introducere în programarea în C 1.1 Funcţii în limbajul C Calcule şi funcţii La origine, rolul programelor e de a efectua în principal calcule matematice. Discutăm de aceea structura programelor făcând

Mai mult

Lab6LCD

Lab6LCD LABORATOR 6 - Interfaţă pentru afişor cu cristale lichide (LCD), partea II-a Scopul lucrării În laboratorul anterior s-au implementat funcţiile rd_lcdreg(char vrs), wr_lcdreg(char vrs, char data), void

Mai mult

Slide 1

Slide 1 1 PROIECTAREA ALGORITMILOR Lect. univ. dr. Adrian Runceanu 1 Curs Alocarea dinamică de memorie în C++ Conţinutul cursului 1. Tipuri de date. Conceptul de pointer 3. Operatori specifici pointerilor 4. Aritmetica

Mai mult

Microsoft PowerPoint - Curs_SDA_3_RO_2019_v2.pptx

Microsoft PowerPoint - Curs_SDA_3_RO_2019_v2.pptx Curs SDA (PC2) Curs 3 Pointeri (continuare) Structuri de date Iulian Năstac Pointeri (Recapitulare) Un pointer este o variabilă care conţine o adresă din memorie, unde se află valoarea altei variabile.

Mai mult

tehnologii web

tehnologii web Universitatea Constantin Brâncuşi din Târgu-Jiu Facultatea de Inginerie Departamentul de Automatică, Energie şi Mediu Tehnologii Web Lector univ. dr. Adrian Runceanu 1 Curs 7 Limbajul PHP (partea II) 2

Mai mult

Programarea şi utilizarea calculatoarelor

Programarea şi utilizarea calculatoarelor Universitatea Constantin Brâncuşi din Târgu-Jiu Facultatea de Inginerie Departamentul de Automatică, Energie şi Mediu Programarea calculatoarelor Lect.dr. Adrian Runceanu Curs 6 Instrucţiunile limbajului

Mai mult

Adresarea memoriei Modurile de adresare constituie un instrument principal pentru reprezentarea în memorie a imaginii datelor, aşa cum este ace

Adresarea memoriei Modurile de adresare constituie un instrument principal pentru reprezentarea în memorie a imaginii datelor, aşa cum este ace 174 12 Adresarea memoriei Modurile de adresare constituie un instrument principal pentru reprezentarea în memorie a imaginii datelor, aşa cum este aceasta văzută de programatorul în limbaj de nivel înalt.

Mai mult

Subiectul 1

Subiectul 1 Subiectul 1 În fişierul Numere.txt pe prima linie este memorat un număr natural n (n

Mai mult

Microsoft PowerPoint - Curs_SDA_9_RO_2019_v2.pptx

Microsoft PowerPoint - Curs_SDA_9_RO_2019_v2.pptx SDA (PC2) Curs 9 Liste / Grafuri / Arbori Iulian Năstac Lista dublu înlănțuită Recapitulare Într-o astfel de listă fiecare nod conţine doi pointeri: unul spre nodul următor şi unul spre nodul precedent.

Mai mult

Slide 1

Slide 1 STRUCTURI DE DATE Fundamente C/C++ EVALUARE SEMESTRU: 4 puncte Testare cunostinte: 1. Calculator (2 puncte) 2. Scris/Oral (2 puncte) 2 EVALUARE EXAMEN: 6 puncte Test cunostinte (pe calculator): 1 punct.

Mai mult

Preprocesorul C Funcţii cu numǎr variabil de argumente 6 decembrie 2005 Programarea calculatoarelor 2. Curs 10 Marius Minea

Preprocesorul C Funcţii cu numǎr variabil de argumente 6 decembrie 2005 Programarea calculatoarelor 2. Curs 10 Marius Minea Preprocesorul C Funcţii cu numǎr variabil de argumente 6 decembrie 2005 Preprocesorul C. stdarg.h 2 Preprocesorul C extensii (macro-uri) pentru scrierea mai concisǎ a programelor preprocesorul efectueazǎ

Mai mult

Microsoft Word _POO_Lab_1_Modificari_v01.htm

Microsoft Word _POO_Lab_1_Modificari_v01.htm Laborator POO - 00 (draft) 00-00 / 0//00 00_POO_Lab Modificari_v0.htm POO Laborator Modificarea programelor Java. Studiu de caz: programul Salut.java. Varianta care utilizeaza un argument al programului

Mai mult

Microsoft Word - CarteC.doc

Microsoft Word - CarteC.doc INSTRUCŢIUNILE LIMBAJULUI C (2) Instrucţiuni repetitive Instrucţiunea while Instrucţiunea while are formatul: while(expresie) Expresie DA Instrucţiune NU Instrucţiunea while produce în primul rând evaluarea

Mai mult

1. Operatii cu matrici 1 Cerinte: Sa se realizeze functii pentru operatii cu matrici patratice (de dimensiune maxima 10x10). Operatiile cerute sunt: A

1. Operatii cu matrici 1 Cerinte: Sa se realizeze functii pentru operatii cu matrici patratice (de dimensiune maxima 10x10). Operatiile cerute sunt: A 1. Operatii cu matrici 1 Sa se realizeze functii pentru operatii cu matrici patratice (de dimensiune maxima 10x10). Operatiile cerute sunt: A+B (adunare), aa (inmultire cu scalar), A-B scadere), AT (Transpusa),

Mai mult

Microsoft Word - O problema cu bits.doc

Microsoft Word - O problema cu bits.doc O problemă cu bits 1 Tiberiu Socaciu Enunţul Pe pagina Proful de Mate de pe Facebook 2 am primit de la un elev de clasa a IX-a următoarea provocare 3 : Vom oferi două soluţii, una folosind manipulări de

Mai mult

proiectarea bazelor de date

proiectarea bazelor de date Universitatea Constantin Brâncuşi din Târgu-Jiu Facultatea de Inginerie şi Dezvoltare Durabilă Departamentul de Automatică, Energie, Mediu şi Dezvoltare Durabilă Proiectarea bazelor de date Lect.dr. Adrian

Mai mult

Top

Top PROGRAMARE ORIENTATĂ PE OBIECTE Tratarea excepțiilor O excepție este o eroare care poate să apară la rularea unui program. Exemple: încercarea de deschidere a unui fișier ce nu există depășirea limitelor

Mai mult

Procesarea Imaginilor - Laborator 1: Introducere în utilizarea bibliotecii OpenCV 1 1. Introducere în utilizarea bibliotecii OpenCV 1.1. Introducere S

Procesarea Imaginilor - Laborator 1: Introducere în utilizarea bibliotecii OpenCV 1 1. Introducere în utilizarea bibliotecii OpenCV 1.1. Introducere S Procesarea Imaginilor - Laborator 1: Introducere în utilizarea bibliotecii OpenCV 1 1. Introducere în utilizarea bibliotecii OpenCV 1.1. Introducere Scopul acestei lucrări de laborator este de a familiariza

Mai mult

Interfețe și Protocoale de Comunicații Arduino-Port Paralel Arduino. Laborator 1- Portul Paralel 1 Caracteristici generale Arduino UNO este o placă de

Interfețe și Protocoale de Comunicații Arduino-Port Paralel Arduino. Laborator 1- Portul Paralel 1 Caracteristici generale Arduino UNO este o placă de Arduino. Laborator 1- Portul Paralel 1 Caracteristici generale Arduino UNO este o placă de dezvoltare bazată pe un microcontroller ATmega 328P pe 8 biți cu 32kB memorie flash. Placa de dezvoltare conține:

Mai mult

GHERCĂ MAGDA CASA CORPULUI DIDACTIC BRĂILA PORTOFOLIU EVALUARE INFORMATICĂ ȘI TIC PENTRU GIMNAZIU CLASA A V-A Neamț SERIA 1 GRUPA 1 CURSANT: GHERCĂ G

GHERCĂ MAGDA CASA CORPULUI DIDACTIC BRĂILA PORTOFOLIU EVALUARE INFORMATICĂ ȘI TIC PENTRU GIMNAZIU CLASA A V-A Neamț SERIA 1 GRUPA 1 CURSANT: GHERCĂ G CASA CORPULUI DIDACTIC BRĂILA PORTOFOLIU EVALUARE INFORMATICĂ ȘI TIC PENTRU GIMNAZIU CLASA A V-A Neamț SERIA 1 GRUPA 1 CURSANT: GHERCĂ G MAGDA COLEGIUL NAŢIONAL ROMAN-VODĂ ROMAN PROIECTUL UNITĂŢII DE ÎNVĂŢARE

Mai mult

-

- Cursul 6 Expresii în C/C++ (I) https://docs.microsoft.com/en-us/cpp/cpp/expressions-cpp După cum am văzut, într-un program de calcul scris în limbajul C/C++ prelucrarea datelor se realizează printr-o serie

Mai mult

Microsoft Word - c6.doc

Microsoft Word - c6.doc Proiectarea structurata top-down a programelor complexe Aplicatie Sa se scrie un program care citeste un fisier continand un text format din cuvinte si determina si afiseaza grupe de cuvinte, grupate in

Mai mult

Microsoft Word - Curs1.docx

Microsoft Word - Curs1.docx 1. REPREZENTAREA INFORMAȚIILOR ÎN CALCULATOR 1.1. CONCEPTUL DE DATĂ ȘI INFORMAȚIE Datele desemnează elementele primare, provenind din diverse surse, fără o formă organizată care să permită luarea unor

Mai mult

ALGORITMICĂ. Seminar 3: Analiza eficienţei algoritmilor - estimarea timpului de execuţie şi notaţii asimptotice. Problema 1 (L) Să se determine număru

ALGORITMICĂ. Seminar 3: Analiza eficienţei algoritmilor - estimarea timpului de execuţie şi notaţii asimptotice. Problema 1 (L) Să se determine număru ALGORITMICĂ. Seminar 3: Analiza eficienţei algoritmilor - estimarea timpului de execuţie şi notaţii asimptotice. Problema 1 (L) Să se determine numărul de operaţii efectuate de către un algoritm care determină

Mai mult

Propunator: Morar Florin Colegiul National Silvania Zalau Discipina: Informatica Nivel liceal, cls. XII 1.Să se scrie în limbajul C/C++ definiţia comp

Propunator: Morar Florin Colegiul National Silvania Zalau Discipina: Informatica Nivel liceal, cls. XII 1.Să se scrie în limbajul C/C++ definiţia comp Propunator: Morar Florin Colegiul National Silvania Zalau Discipina: Informatica Nivel liceal, cls. XII 1.Să se scrie în limbajul C/C++ definiţia completă a subprogramului calcul, care primeşte prin intermediul

Mai mult

PROGRAMA DE EXAMEN

PROGRAMA DE EXAMEN CENTRUL NAŢIONAL DE EVALUARE ŞI EXAMINARE PROGRAMA DE EXAMEN PENTRU EVALUAREA COMPETENŢELOR DIGITALE EXAMENUL DE BACALAUREAT 2014 PROGRAMA DE EXAMEN PENTRU EVALUAREA COMPETENŢELOR DIGITALE I. STATUTUL

Mai mult

Laborator 3

Laborator 3 Laborator 3 Programare III săptămâna 8-12.10.2018 OBIECTIVE: - Folosirea modificatorilor unei clase (public, abstract, final) - Folosirea modificatorilor de acces în declaraţiile membrilor unei clase Noţiuni:

Mai mult

Microsoft PowerPoint - Curs_SDA_10_RO_2019_v1.pptx

Microsoft PowerPoint - Curs_SDA_10_RO_2019_v1.pptx SDA (PC2) Curs 10 Arbori Iulian Năstac Definiția 1: Arbori Recapitulare Arborele este un graf orientat, aciclic și simplu conex. Definiția 2: Un arbore este un ansamblu de structuri de date de natură recursivă

Mai mult

PROGRAMARE ORIENTATA PE OBIECTE

PROGRAMARE ORIENTATA PE OBIECTE Curs 2 Principiile Programării Orientate pe Obiecte Programare Orientată pe Obiecte Tehnici de programare Programarea procedurală Modul în care este abordată programarea, din punct de vedere al descompunerii

Mai mult

Diapositive 1

Diapositive 1 Tablouri Operatii pe tablouri bidimensionale Lectii de pregatire pentru Admitere 09 / 03 / 2019 1 Cuprins Operatii pe tablouri bidimensionale 0. Tablouri unidimensionale scurta recapitulare 1.Tablouri

Mai mult

SIRURI DE CARACTERE in C++ O constanta de tip sir de caractere de declara intre doua caractere. In memoria interna, o constanta de acest tip este reti

SIRURI DE CARACTERE in C++ O constanta de tip sir de caractere de declara intre doua caractere. In memoria interna, o constanta de acest tip este reti SIRURI DE CARACTERE in C++ O constanta de tip sir de caractere de declara intre doua caractere. In memoria interna, o constanta de acest tip este retinuta sub forma unui vector de caractere. Fiecare componenta

Mai mult

Tipuri de date abstracte 30 noiembrie 2005 Programarea calculatoarelor 2. Curs 9 Marius Minea

Tipuri de date abstracte 30 noiembrie 2005 Programarea calculatoarelor 2. Curs 9 Marius Minea Tipuri de date abstracte 30 noiembrie 2005 Tipuri de date abstracte 2 Programe compuse din mai multe fişiere Implicit, obiectele declarate la nivel de fişier sunt unice într-un program (douǎ declaraţii

Mai mult

Microsoft Word - 2 ES RO.doc

Microsoft Word - 2 ES RO.doc 2 MULTITASKING 2.1. Preliminarii Este deja foarte bine cunoscut faptul că o programare eficientă în domeniul sistemelor în timp real, în mod evident, vizând aici sistemele în timp real încorporate, este

Mai mult

Microsoft Word - Curs_08.doc

Microsoft Word - Curs_08.doc Partea a II-a. Proiectarea bazelor de date Capitolul 6. Tehnici de proiectare şi modele În capitolele precedente s-au analizat modele de baze de date şi limbaje, presupunând în cele mai multe cazuri că

Mai mult

Laborator 2: Instrucţiuni Java şi lucru cu şiruri de caractere Întocmit de: Adina Neculai Îndrumător: Asist. Drd. Gabriel Danciu 18 octombrie 2011

Laborator 2: Instrucţiuni Java şi lucru cu şiruri de caractere Întocmit de: Adina Neculai Îndrumător: Asist. Drd. Gabriel Danciu 18 octombrie 2011 Laborator 2: Instrucţiuni Java şi lucru cu şiruri de caractere Întocmit de: Adina Neculai Îndrumător: Asist. Drd. Gabriel Danciu 18 octombrie 2011 I. NOŢIUNI TEORETICE A. Instrucţiuni condiţionale 1. Intrucţiunea

Mai mult

Secţiunea 7-8 începători Concurs online de informatică Categoria PROGRAMARE PROBLEMA 1 ID 100 puncte Calculatoarele trebuie să se recunoască în rețeau

Secţiunea 7-8 începători Concurs online de informatică Categoria PROGRAMARE PROBLEMA 1 ID 100 puncte Calculatoarele trebuie să se recunoască în rețeau PROBLEMA ID 00 puncte Calculatoarele trebuie să se recunoască în rețeaua de Internet printr-un ID. În prezent, există metode de identificare a ID-ului folosite la scară globală: IPv4 și IPv6. Adresele

Mai mult

Lucrarea 10

Lucrarea 10 Lucrarea 10. Studierea facilitatilor senzoriale, de calcul si de comunicatie ale unei placi de tip Arduino 1. Obiectivul lucrarii Lucrarea isi propune sa prezinte facilitatile de calcul, senzoriale si

Mai mult

Fişiere 11 ianuarie 2004 Utilizarea şi programarea calculatoarelor. Curs 13 Marius Minea

Fişiere 11 ianuarie 2004 Utilizarea şi programarea calculatoarelor. Curs 13 Marius Minea Fişiere 11 ianuarie 2004 Fişiere 2 Lucrul cu fişiere (stdio.h) Ca utilizatori, de calculatoare, ne referim la un fişier prin nume. Ca programatori, ne intereseazǎ accesul la conţinutul fişierului, un şir

Mai mult

Aggregating Data

Aggregating Data Subinterogări. Subinterogări multi-row. Formatarea rezultatelor unei interogări Obiective Prin parcurgerea acestui referat studentul va dobândi cunoştinţele necesare: identificării funcţiilor grup disponibile;

Mai mult

PPSD

PPSD Modele paralele SPMD Modelul SPMD Comunicarea prin mesaje Message Passing Interface Modelul SPMD Modelul SPMD (Single Program Multiple Data) Acesta este un model adecvat calculatoarelor MIMD In cele ce

Mai mult

Paradigme de Programare

Paradigme de Programare Paradigme de Programare Conf. dr. ing. Andrei Olaru andrei.olaru@cs.pub.ro cs@andreiolaru.ro Departamentul de Calculatoare 2019 9 : 1 / 38 Cursul 9 Concluzie Paradigma Funcțională 9 : 2 / 38 Cursul 9:

Mai mult

PHP (II)

PHP (II) PHP şi MySQL Bazele de date sunt colecţii de date, aranjate într-o anumită formă Operaţii : - Crearea bazei de date; - Conectarea la baza de date; - Inserarea datelor in baza de date; - Ștergerea datelor

Mai mult

Slide 1

Slide 1 SCTR -SZOKE ENIKO - Curs 4 continuare curs 3 3. Componentele hard ale unui sistem de calcul in timp real 3.1 Unitatea centrala de calcul 3.1.1 Moduri de adresare 3.1.2 Clase de arhitecturi ale unitatii

Mai mult

Modul Modbus ASCII SISTEME DE COMUNICATIE CURS 5 - Constantinescu Catalin Atunci cand se foloseste modul MODBUS ASCII fiecare octet din mesaj

Modul Modbus ASCII SISTEME DE COMUNICATIE CURS 5 - Constantinescu Catalin Atunci cand se foloseste modul MODBUS ASCII fiecare octet din mesaj 2.3.5.2 Modul Modbus ASCII Atunci cand se foloseste modul MODBUS ASCII fiecare octet din mesaj este trimis ca doua caractere ASCII (de exemplu, octetul 0x7A este transmis ca doua caractere 0x37 = 7, respectiv

Mai mult

Capitole Speciale de Informatică Curs 4: Calculul scorurilor în un sistem complet de extragere a informaţiilor 18 octombrie 2018 Reamintim că în cursu

Capitole Speciale de Informatică Curs 4: Calculul scorurilor în un sistem complet de extragere a informaţiilor 18 octombrie 2018 Reamintim că în cursu Capitole Speciale de Informatică Curs 4: Calculul scorurilor în un sistem complet de extragere a informaţiilor 18 octombrie 2018 Reamintim că în cursul precedent am prezentat modelul de spaţiu vectorial

Mai mult

PowerPoint Presentation

PowerPoint Presentation Circuite Integrate Digitale Conf. Monica Dascălu Curs Seminar Laborator notă separată Notare: 40% seminar 20% teme // + TEMA SUPLIMENTARA 40% examen 2014 CID - curs 1 2 Bibliografie Note de curs Cursul

Mai mult

Nr. 932 din Avizat ISJ Vâlcea, Inspector școlar informatică, Ciochină Luisa EXAMEN DE ATESTARE A COMPETENȚELOR PROFESIONALE A ABSOLVENȚILOR

Nr. 932 din Avizat ISJ Vâlcea, Inspector școlar informatică, Ciochină Luisa EXAMEN DE ATESTARE A COMPETENȚELOR PROFESIONALE A ABSOLVENȚILOR Nr. 932 din 12.12.2018 Avizat ISJ Vâlcea, Inspector școlar informatică, Ciochină Luisa EXAMEN DE ATESTARE A COMPETENȚELOR PROFESIONALE A ABSOLVENȚILOR DE MATEMATICĂ INFORMATICĂ ȘI MATEMATICĂ INFORMATICĂ,

Mai mult

LUMINIŢA SCRIPCARIU

LUMINIŢA SCRIPCARIU ANEXA A PROGRAMAREA SERVICIILOR INTERNET Programarea serviciilor de reţea implică o cunoaştere amănunţită a modului în care circulă datele prin Internet şi, mai precis, a protocoalelor din suita TCP/IP

Mai mult

Logică și structuri discrete Relații. Funcții parțiale Marius Minea marius/curs/lsd/ 20 octombrie 2014

Logică și structuri discrete Relații. Funcții parțiale Marius Minea   marius/curs/lsd/ 20 octombrie 2014 Logică și structuri discrete Relații. Funcții parțiale Marius Minea marius@cs.upt.ro http://www.cs.upt.ro/ marius/curs/lsd/ 20 octombrie 2014 Relații în lumea reală și informatică Noțiunea matematică de

Mai mult

Microsoft Word - unitati de invatare 11liceu-12 sam

Microsoft Word - unitati de invatare 11liceu-12 sam 1.Unitatea de invatare: Analiza informatiei Forma de organizare: Laborator ( 4 ore) Analiza informaţiei. Noţiuni de bază: date, informaţii procesi informaţional bază informaţională flux informaţional sistem

Mai mult

Fâciu N. Maria-Ema CASA CORPULUI DIDACTIC BRĂILA PROGRAM DE FORMARE INFORMATICĂ ȘI TIC PENTRU GIMNAZIU CLASA A V-A SERIA 1 GRUPA 2 CURSANT: Fâciu N. M

Fâciu N. Maria-Ema CASA CORPULUI DIDACTIC BRĂILA PROGRAM DE FORMARE INFORMATICĂ ȘI TIC PENTRU GIMNAZIU CLASA A V-A SERIA 1 GRUPA 2 CURSANT: Fâciu N. M CASA CORPULUI DIDACTIC BRĂILA PROGRAM DE FORMARE INFORMATICĂ ȘI TIC PENTRU GIMNAZIU CLASA A V-A SERIA 1 GRUPA 2 CURSANT: PROIECTUL UNITĂŢII DE ÎNVĂŢARE ALGORITMI Notă: filmele didactice, dezbaterile, jocurile

Mai mult

Microsoft Word - Curs_10.doc

Microsoft Word - Curs_10.doc Capitolul 8. Proiectarea logică Scop - construirea unei scheme logice ce reprezintă corect şi eficient toate informaţiile descrise într-o schemă entitate-relaţie Etape: Restructurarea schemei E-R fază

Mai mult

Microsoft Word - Curs_07.doc

Microsoft Word - Curs_07.doc 5.3 Modificarea datelor în SQL Pentru modificarea conţinutului unei baze de date SQL pune la dispoziţie instrucţiunile insert, delete şi update. 5.3.1 Inserări în baza de date Sintaxa instrucţiunii insert

Mai mult

B

B F.I.A. Laboratorul numărul 3 Cătălin Stoean Unificarea şi recursivitatea Unificarea Unificarea reprezintă modul în care Prologul realizează potrivirile între termeni. La prima vedere, procesul de unificare

Mai mult

Microsoft Word - Cuprins_LP.doc

Microsoft Word - Cuprins_LP.doc Cuprins CUPRINS Unitatea de învăţare Titlu Pagina INTRODUCERE 5 1 ELEMENTE GENERALE ALE LIMBAJULUI C 7 Obiectivele unităţii de învăţare nr. 1 8 1.1. Structura programelor 8 1.2. Variabile. Tipuri de variabile.

Mai mult

Informație și comunicare

Informație și comunicare 3.1. Folosirea unui motor de căutare Alegerea unui motor de căutare Motorul de căutare este un program disponibil pe internet cu ajutorul căruia se pot căuta diferite informații. Această căutare se realizează

Mai mult

Facultatea de Științe Politice, Administrative și ale Comunicării Str. Traian Moșoiu nr. 71 Cluj-Napoca, RO Tel.: Fax:

Facultatea de Științe Politice, Administrative și ale Comunicării Str. Traian Moșoiu nr. 71 Cluj-Napoca, RO Tel.: Fax: Documentație pentru accesarea platformei e-learning de către studenți Pentru facilitarea demersurilor necesare bunei desfășurări a cursurilor se folosește platforma de e-learning a facultății (care se

Mai mult

PCLPII-C16(9)

PCLPII-C16(9) Programarea Calculatoarelor și Limbaje de Programare - Curs 16 Despre proiect ce s-a studiat? ce se va studia? proiectul tema date de intrare conţinut date de ieşire C9(16)-1 Ce s-a studiat? Instrucţiuni

Mai mult

Baze de date - Anul 2 Laborator 8 Limbajul de definire a datelor (LDD) (partea I) În general, instrucţiunile LDD sunt utilizate pentru definirea struc

Baze de date - Anul 2 Laborator 8 Limbajul de definire a datelor (LDD) (partea I) În general, instrucţiunile LDD sunt utilizate pentru definirea struc Baze de date - Anul 2 Laborator 8 Limbajul de definire a datelor (LDD) (partea I) În general, instrucţiunile LDD sunt utilizate pentru definirea structurii corespunzătoare obiectelor unei scheme: tabele,

Mai mult

Curs de formare Informatică și TIC pentru clasa a V-a Portofoliu pentru evaluarea finală Tema: ELEMENTE DE INTERFAŢĂ ALE UNUI SISTEM DE OPERARE (DESKT

Curs de formare Informatică și TIC pentru clasa a V-a Portofoliu pentru evaluarea finală Tema: ELEMENTE DE INTERFAŢĂ ALE UNUI SISTEM DE OPERARE (DESKT Curs de formare Informatică și TIC pentru clasa a V-a Portofoliu pentru evaluarea finală Tema: ELEMENTE DE INTERFAŢĂ ALE UNUI SISTEM DE OPERARE (DESKTOP, PICTOGRAME, FEREASTRA) Nume și prenume cursant:

Mai mult

Microsoft PowerPoint - Curs_TPI_22_v01.ppt

Microsoft PowerPoint - Curs_TPI_22_v01.ppt UPB Facultatea ETTI Curs TPI an III RST 2009-2010 Tehnologii de Programare in Internet (TPI / RST) Titulari curs: Mihnea Magheti, Eduard-Cristian Popovici Suport curs: http://discipline.elcom.pub.ro/tpi/

Mai mult

Laborator 1-Teoria probabilitatilor si statistica matematica Sef lucrari dr.mat. Daniel N.Pop Departamentul de calculatoare si inginerie electrica 1 P

Laborator 1-Teoria probabilitatilor si statistica matematica Sef lucrari dr.mat. Daniel N.Pop Departamentul de calculatoare si inginerie electrica 1 P Laborator 1-Teoria probabilitatilor si statistica matematica Sef lucrari dr.mat. Daniel N.Pop Departamentul de calculatoare si inginerie electrica 1 Prezentare generală Matlab 1.1 Help on-line 1. Limbajul

Mai mult

Scrieţi pe foaia de examen răspunsul pentru fiecare dintre cerinţele următoare

Scrieţi pe foaia de examen răspunsul pentru fiecare dintre cerinţele următoare Scrieţi pe foaia de examen răspunsul pentru fiecare dintre cerinţele următoare. 1. În declararea alăturată, câmpurile x şi y ale înregistrării pot memora coordonatele carteziene ale unui punct din planul

Mai mult

Microsoft Word - Laborator 6 - Expresii Regulate IV.doc

Microsoft Word - Laborator 6 - Expresii Regulate IV.doc PERL Laborator 6 Adrian Iftene Martie 26, 2007 1 1 Greşeli Comune când lucrăm cu RegExp... 3 2 Câteva Subiecte mai Avansate... 3 2.1 Comentarii Inline... 4 2.2 Modificatori Inline... 4 2.3 Gruparea fără

Mai mult

Cursul 12 (plan de curs) Integrale prime 1 Sisteme diferenţiale autonome. Spaţiul fazelor. Fie Ω R n o mulţime deschisă şi f : Ω R n R n o funcţie de

Cursul 12 (plan de curs) Integrale prime 1 Sisteme diferenţiale autonome. Spaţiul fazelor. Fie Ω R n o mulţime deschisă şi f : Ω R n R n o funcţie de Cursul 12 (plan de curs) Integrale prime 1 Sisteme diferenţiale autonome. Spaţiul fazelor. Fie Ω R n o mulţime deschisă şi f : Ω R n R n o funcţie de clasă C 1. Vom considera sistemul diferenţial x = f(x),

Mai mult

Facultatea de Științe Politice, Administrative și ale Comunicării Str. Traian Moșoiu nr. 71 Cluj-Napoca, RO Tel.: Fax:

Facultatea de Științe Politice, Administrative și ale Comunicării Str. Traian Moșoiu nr. 71 Cluj-Napoca, RO Tel.: Fax: Documentație pentru accesarea platformei e-learning de catre profesori Platforma de e-learning a facultății poate fi accesată la adresa http://fspac.ubbcluj.ro/moodle. Conturile profesorilor sunt create

Mai mult

Înregistrator de temperatură şi umiditate AX-DT100 Instrucţiuni de utilizare

Înregistrator de temperatură şi umiditate AX-DT100 Instrucţiuni de utilizare Înregistrator de temperatură şi umiditate AX-DT100 Instrucţiuni de utilizare Introducere Înregistratorul de temperatură şi umiditate este prevăzut cu un senzor foarte exact de temperatură şi umiditate.

Mai mult

Programarea şi utilizarea calculatoarelor

Programarea şi utilizarea calculatoarelor Programare orientată pe obiecte # 10 JAVA Limbajul JAVA. Clasa String 2018 Adrian Runceanu www.runceanu.ro/adrian copyright@www.adrian.runceanu.ro Curs 10 Clasa String in Java 03.12.2018 Curs - Programare

Mai mult

Microsoft Word - Curs_09.doc

Microsoft Word - Curs_09.doc Capitolul 7. Proiectarea conceptuală Scop: reprezentarea cerinţelor informale ale aplicaţiei în termenii descrierii complete şi formale dar independent de criteriul folosit pentru reprezentare în sistemul

Mai mult

Secţiunea 5-6 începători Concurs online de informatică Categoria PROGRAMARE PROBLEMA puncte PERIODIC Se citește un număr natural nenul N. Se ump

Secţiunea 5-6 începători Concurs online de informatică Categoria PROGRAMARE PROBLEMA puncte PERIODIC Se citește un număr natural nenul N. Se ump PROBLEMA 1 PERIODIC Se citește un număr natural nenul N. Se umple, pe linii, partea de sub diagonală, inclusiv aceasta, a unui tabel pătratic de dimensiune L cu secvențe consecutive de numere : 1, 2,,

Mai mult

ANEXĂ

ANEXĂ CURTEA DE APEL BRAŞOV ANEXA nr. 2 la anunţul de ocupare a funcţiei vacante de CONSILIER (inginer constructor) Detalii referitoare la cunoştinţele minime necesare pentru încadrarea în nivelul mediu de operare

Mai mult

Microsoft Word - 4-Interfete paralele.doc

Microsoft Word - 4-Interfete paralele.doc 4. Cuprins modul 4.1. neprogramabile 4.2.Interfaţa paralelă programabilă 4.3.Protocoale de transfer 4.4.Programarea circuitului de interfaţă paralelă 4.5.Exemplu de implementare Cuprins Introducere După

Mai mult

Secţiunea 5-6 avansaţi PROBLEMA 1 Concurs online de informatică Categoria PROGRAMARE 100 puncte NR Un număr natural nenul V care se plictisea singur,

Secţiunea 5-6 avansaţi PROBLEMA 1 Concurs online de informatică Categoria PROGRAMARE 100 puncte NR Un număr natural nenul V care se plictisea singur, PROBLEMA 1 NR Un număr natural nenul V care se plictisea singur, și-a căutat în prima zi cel mai mare divizor al său mai mic decât el și l-a scăzut din valoarea sa. Numărul rămas, plictisit și el, și-a

Mai mult

1. Găsiți k numerele cele mai apropiate într-un şir nesortat Dându-se un şir nesortat și două numere x și k, găsiți k cele mai apropiate valori de x.

1. Găsiți k numerele cele mai apropiate într-un şir nesortat Dându-se un şir nesortat și două numere x și k, găsiți k cele mai apropiate valori de x. 1. Găsiți k numerele cele mai apropiate într-un şir nesortat Dându-se un şir nesortat și două numere x și k, găsiți k cele mai apropiate valori de x. Date de intrare: arr [] = {10, 2, 14, 4, 7, 6}, x =

Mai mult

Managementul Resurselor Umane

Managementul Resurselor Umane Universitatea Politehnica București Catedra de Calculatoare Laborator 4 Cereri SQL Autori Conf. Dr. Ing. Alexandru Boicea Ș.L. Dr. Ing. Ciprian-Octavian Truică Cuprins Cereri SQL Cereri simple 10.03.2019

Mai mult

Gestionarea I/E

Gestionarea I/E Gestionarea I/E Apelurile de sistem I/O in Linux si apelurile API de I/E pentru Windows Herea Cristian 431 A 1. Linux Apeluri de sistem (system calls) Sistemele de operare au un nivel suplimentar de interfete

Mai mult