Friday, July 5, 2019

Limbajul C ++




https://www.edusoft.ro/introp/index.php/cursuri/curs2/

CURS 3 Limbajul C 

1 CURS 3Limbajul Cdezvoltat între anii (D.M.Ritchie), o dată cu dezvoltarea sistemului de operare Unix. (Ken Thompson & D.M.Ritchie);anul "naşterii" limbajului C.elementele esenţiale ale limbajului C au fost completeschimbari majore1978 – apare cartea "The C programming language" scrisă de către B.W.Kernighan, D.M.Ritchie1983 incepe standardizarea limbajului C de către ANSI (American National Standards Institute)a apărut ANSI C.
2 Avantaje 1. limbaj de programare de scop general
=> dezvoltarea de aplicaţii diverse:soft ştiinţific,soft pentru gestiunea bazelor de date,editoare de texte,jocuri, etc.- nu este specializat pe un domeniu particular de aplicaţii- control modern al funcţiilor şi al structurilor de date- set bogat de operatori2. permite o foarte bună portabilitate a programelor3. permite programarea structurată (modulară)4. permite scrierea softului de bază (programare de sistem)5. oferă posibilitatea lucrului pe biţi şi a calculului adreselor
3 Elementele limbajului C
Exemple
4 Categorii de elementeComentariinote explicative (adnotări) în programcomplet ignorate de către compilatorşiruri de caractere (pot fi şi caractere speciale sau cuvinte cheie) cuprinse între/* */ sau care se găsesc pe un singur rând după caracterele //
5 Cuvinte cheiecuvinte rezervate limbajului de programare, cu utilizare predefinitănume cu destinaţii specialese scriu cu litere miciExemple
6 Identificatori (nume)
folosiţi pentru a denumi variabile, constante, funcţii, structuri de date, etc.= succesiuni de caractere alfanumerice, primul caracter trebuind să fie literarin C, de ex., S  sun identificator poate conţine oricâte caractere dar sunt luate în considerare doar primele 32 caracterenu pot conţine caractere speciale:+ - / ^ < > ( ) [ ] { } . , : ; ' # $ @ - spatiuRecomandaresa fie sugestivix2: x2, xx, xla2, xp, etc.Exemple:a, suma, SUMA, m2, nr_stud_an1f, NrStudAn1F2x, a*b, ifObs.Identificatorii care încep cu _ sau conţin _ _ sunt folositi pentru implementare şi pentru librăriile standard în C şi C++.
7 Variabilenume simbolice asociate unor locaţii de memorievalorile lor pot fi modificate prin instrucţiuni ale programuluideclararea (definirea) variabilelor constă în precizarea tipului şi numelui lor.Exemple:  
8 Variabile globalevariabile declarate in afara functiei mainse initializeaza automat cu zeroExercitiuScrieti programul pentru transformarea oC->oF
9 Constantevalori care nu pot fi modificate în decursul programuluiconstante simboliceconstante obiectConstante simbolicese definesc cu directiva defineconstante fara tipDirectiva define- stabileşte (defineşte) un nume simbolic pentru o anumită valoarese compune din: cuvântul cheie #define, o denumire simbolică, o valoarenu se termină cu ;autorizează substituţia pe care o defineşte din punctul în care este scrisă până la sfârşitul fişierului sursa sau până la întâlnirea unei directive undef.
10 declararea acestor constante se termină cu caracterul ;
Constantele obiectconstante cu tipSe declara folosind cuvântul cheie const urmat de tipul constantei şi de un identificator iniţializat.declararea acestor constante se termină cu caracterul ;ExempluO constantă de tip char (caracter) este un întreg, scris ca un singur caracter între două simboluri '. Valoarea constantei caracter este valoarea caracterului respectiv în setul de caractere ASCII (American Standard Code for Information Interchange).Astfel, de exemplu, '0' are valoarea 48, 'A' are valoarea 65, iar 'a' are valoarea 97.
11 Instrucţiunipărţi (linii) de program care prin compilare produc acţiuni (coduri) executabilese termină cu caracterul ; - terminator de instrucţiunelipsa caracterului ; este semnalata la începutul liniei următoare
12 Exemple► In urma execuţiei programului se tipăresc valorile de la 5 la 105► Dacă nu se pun acolade la while se va tipări doar valoarea 105
13 Expresiiconstrucţii formate din operanzi şi operatori.au valori şi tipurivalorile şi tipurile expresiilor sunt determinate de către valorile şi tipurilor operanzilor şi de către operatorii care compun expresia.Exemplub*b-4*a*c expresiea , b , c operanzii expresiei*, operatorii expresieidelta = b*b - 4*a*c ; instrucţiune prin care se atribuie variabilei delta rezultatul evaluarii expresiei b2 - 4acOperanzii pot fi :- constante- identificatori (nume) de variabile- nume de tipuri de date- apeluri de funcţii- expresii cuprinse între paranteze rotunde
14 grupuri de instrucţiuni recunoscute sub un anumit nume 
Funcţiigrupuri de instrucţiuni recunoscute sub un anumit numerealizează acţiuni şi întorc (returnează) valori programului principal (funcţiei principale) sau altei funcţii apelante.se apelează prin nume şi lista lor de parametri.Parametrii funcţiilor sau valorile cu care sunt apelate transferă informaţia din exteriorul funcţiilor în interiorul lor.Valorile pe care le returnează funcţiile nu trebuie folosite în mod obligatoriu (vezi de ex. funcţiile scanf() şi printf())Funcţia principală returnează valori sistemului de operare, acesta fiind programul apelant al ei.Anumite funcţii standard sunt gata scrise şi prototipurile lor se găsesc în bibliotecile limbajului (header files).<stdio.h> - conţine funcţii standard de intrare ieşire (I/O): printf, scanf, getch, ...<stdlib.h> - conţine funcţii standard precum: abort, exit, rand, atoi, itoa,...<string.h> - conţine funcţii pentru prelucrarea şirurilor de caractere: strcpy, strlen, strcmp, strcat,...<math.h> - conţine funcţii matematice: cos, sin, pow, fabs, abs, ...<graphics.h> - conţine funcţii pentru gestiunea ecranului în mod grafic(initgraph, putpixel, line, outtext, outtextxy , cleardevice, ...)<conio.h> - conţine funcţii standard de intrare ieşire de la consolă(clrscr, getch, getche, gotoxy, putch, wherex, wherey,...)<time.h> - conţine funcţii pentru gestiunea orei şi a datei sistemului de calcul(gettime, settime, ctime,...)<dos.h> - conţine funcţii pentru interacţiunea cu sistemul de operare DOS(setdrive, inport, outport)… etc.
15 Funcţia itoa (nu este suportată de toate compilatoarele) 
16 Structura funcţiilorAntetultipul valorii pe care o returnează funcţia + numele funcţiei + lista parametrilor funcţiei (tipul şi numele variabilelor funcţiei)Corpul de instructiuni- grupul de instrucţiuni care se execută la apelul funcţiei respective.
17 Apelul functiilorprin nume şi lista de parametri.La apelul funcţiei, controlul programului este pasat acelei funcţii.La întâlnirea instrucţiunii return în interiorul unei funcţii se face saltul în afara funcţiei, controlul fiind preluat de către funcţia main, din locul imediat următor celui în care a fost apelată funcţia din care se face saltul.
18 Funcţia mainpartea principală a unui program Ceste apelată şi lansată în execuţie de către sistemul de operare.Funcţii recursivefunctii care se autoapeleazăse folosesc la definirea proceselor recursive.Proces este recursiv- proces care are o parte care se defineşte prin el însuşi.
19 Funcţia fact recursivă:
ExempleFuncţia factorialdacă n==0 fact(n)=1 <- aceasta este partea apelului recursiv care nu se defineşte prin el însuşi (partea definită direct)altfelfact(n)=n*fact(n-1) <- se defineşte funcţia fact prin ea însăşiFuncţia fact recursivă:Cel mai mare divizor comundacă a%b==0 cmmdc(a,b)=baltfelcmmdc(a,b)=cmmdc(b,a%b)Funcţia cmmdc recursivă:Recursivitatea nu conduce la coduri mai rapide şi nici la necesităţi de memorie mai mici.- convenabila pentru structuri de date definite recursiv (arbori)Codurile recursive sunt mai compacte şi uneori mai uşor de înţeles.
20 Tablouri Exemple colecţii de valori de acelaşi tip
plasate in zone contigue de memorieelementele- pot fi referentiate si accesate individual folosind un index- sunt indexate de la 0 la n-1 unde n reprezintă dimensiunea tablouluiExempleEste declarat un tablou unidimensional de 5 elemente şi elementele tabloului sunt apoi iniţializate cu valoarea 0.float medii[10];medii[10]=9.85;int a[5];int i;for(i=0;i<5;i++)a[i]=0;float x[6];x[1] = 12; x[2]=34; … x[5] = 14; //x[0] = nedefinit !!float x[6] = {12, 34, 1, 9, 14}//rezultă: x[0] = 12; ... x[4] = 14; şi x[5] = nedefinit !!
21 Care va fi output-ul urmatorului program 
22 Care va fi output-ul urmatorului program
Fara _kbhit() si fara <conio.h>
23 Tema: Modificati programul de mai sus astfel incat sa se tipareasca notatia tablei de sah: 
24 Şirurile de caractere trebuie cuprinse între " ".
Şiruri de caractereCitirea şi tipărirea şirurilor- cu funcţiile gets( ) şi puts( )- tablouri cu elemente de tip char (caractere).Exemple:#include <string.h>char nume[20];gets(nume);puts(nume);char nume[20], prenume[20];char nume[20] = "Popescu";Şirurile de caractere trebuie cuprinse între " ".Dacă avem declaraţia:char nume[20] = "Popescu”;Atunci o reiniţializare de forma:nume = "Ionescu"va produce o eroare.Iniţializare şirurilor:- la declararea lor- folosind funcţia strcpy (string copy)# include <stdio.h>char nume[20] = "Popescu";strcpy (nume, "Ionescu");
25 - este scris folosind secvenţa escape '\0’ 
Un şir de caractere este terminat cu caracterul NULL (caracterul '\0').ExempluSirul de caractere "Programare" este stocat în tabloul de caractere sircar[] după cum urmează:char sircar[DIM]sircar[0]='P'; sircar[1]='r'; sircar[2]='o‘; sircar[3]='g‘ sircar[4]='r' sircar[5]='a'; sircar[6]='m'; sircar[7]='a'; sircar[8]='r’ sircar[9]='e'; sircar[10]='\0';Caracterul NULL- este scris folosind secvenţa escape '\0’- este definit în <stdio.h>- valoarea sa ASCII este 0.Exempleprintf("String1:\t");strcpy(S1,"testare\0siruri"); //’\0’ = NULLprintf("\n%s",S1);l1=strlen(S1);printf("\nLungimea sirului 1: %d\n",l1);printf("String1:\t");strcpy(S1,"testare\\0siruri"); //’\0’ = NULLprintf("\n%s",S1);l1=strlen(S1);printf("\nLungimea sirului 1: %d\n",l1);
26 http://www.cplusplus.com/reference/ Exemplificare strcmp() si strlen()
strcmpyint strcmp ( const char * str1, const char * str2 );Compare two stringsCompares the C string str1 to the C string str2. This function starts comparing the first character of each string. If they are equal to each other, it continues with the following pairs until the characters differ or until a terminating null-character is reached. This function performs a binary comparison of the characters.Parametersstr1C string to be compared.str2Return ValueReturns an integral value indicating the relationship between the strings: A zero value indicates that both strings are equal. A value greater than zero indicates that the first character that does not match has a greater value in str1 than instr2; And a value less than zero indicates the opposite.strcmp este utila la ordonarea alfabetica a cuvintelor!
27 http://www.cplusplus.com/reference/ Exemplificare strcmp() si strlen()
size_t strlen ( const char * str );Get string lengthReturns the length of the C string str. The length of a C string is determined by the terminating null-character: A C string is as long as the number of characters between the beginning of the string and the terminating null character (without including the terminating null character itself). This should not be confused with the size of the array that holds the string. For example: char mystr[100]="test string";  defines an array of characters with a size of 100 chars, but the C string with which mystr has been initialized has a length of only 11 characters. Therefore, while sizeof(mystr) evaluates to 100, strlen(mystr) returns 11. In C++, char_traits::length implements the same behavior. ParametersstrC string.Return ValueThe length of string. 
28 Secvenţe escapecoduri de control (spaţii albe), folosite pentru specificarea formatelor de scriere a datelorconstau din combinaţii dintre un caracter backslash \ urmat de o literă sau de o combinaţie de cifre .Setul de secvente escape în C:Unele secvenţe escape sunt specifice perifericelor folosite.\v (tabulator vertical) şi \f (pagină nouă la imprimantă) nu afectează formatul de ieşire al datelor pe monitor ci numai la imprimantă.Exemple:printf("\nSuma celor %d numere este %g\t\a“,n,s);Suma celor 5 numere este ♫_ (cursor)
29 #define fis_intrare "d:\\fiz1r\\centru.dat“ 
printf("\n\tSem I\t\tSem II");for(i=1; i<=nrstud; i++)printf("\n%d:\t%5.2f\t\t%5.2f",i,medsem1[i],medsem2[i]);Sem I Sem II1: 2: 3:#define fis_intrare "d:\\fiz1r\\centru.dat“Pentru despărţirea directoarelor într-o cale de directoare scrisă într-un program Ctrebuie folosite două caractere backslash (\\).

30 Codul ASCII (American Standard Code for Information Interchange)
cod standard de reprezentare a caracterelor ca valori întregi pe 7 biţi.introdus pentru a se obţine o compatibilitate între tipuri diferite de echipamente folosite la procesarea datelor.ASCII standardconstă din 128 de numere întregi (reprezentate pe 7 biţi, cu valori între 0 şi 127) atribuite unor caractere (cele englezeşti), numere, semne de punctuaţie, celor mai uzuale caractere speciale şi unor coduri de control (comenzi) netipăribile (primele 32 de caractere).Codul ASCII extinsconstă de asemenea din 128 numere întregi, cu valori între 128 şi 255 (pentru reprezentarea lor folosindu-se toţi cei 8 biţi ai unui octet), care reprezintă caractere suplimentare din alte limbi, simboluri matematice, grafice, caractere speciale sau sau simboluri ale unor monede străine.Folosirea acestor coduri face posibilă şi prelucrarea caracterelor, nu numai a numerelor.

Tutoriale

1. https://www.youtube.com/watch?v=JjY9U9lu37I
https://videotutorial.ro/introducere-in-programare-tutorial-c-cursul-1/

1. https://www.youtube.com/watch?v=lAvIuQIhbOQ
2. https://www.youtube.com/watch?v=nem8KXgNkI8
3. https://www.youtube.com/watch?v=XpvS830k1fo
4. https://www.youtube.com/watch?v=G-DdrgY1mAI
5. https://www.youtube.com/watch?v=2YfQwbh8IoA
6. https://www.youtube.com/watch?v=c6QwYGuUmpM
7. https://www.youtube.com/watch?v=wE8U3FSMWto
8. https://www.youtube.com/watch?v=VUhSfBc-Nkk
9. https://www.youtube.com/watch?v=E6VF1VA2lBo
10. https://www.youtube.com/watch?v=E6VF1VA2lBo
11. https://www.youtube.com/watch?v=xAjG68GIz5Q
12. https://www.youtube.com/watch?v=7dyD7kMAK2g
13. https://www.youtube.com/watch?v=2GIPxpspyR0
14. https://www.youtube.com/watch?v=4X4DsZSdHls
15. https://www.youtube.com/watch?v=GS92zv_YUYQ
16. https://www.youtube.com/watch?v=I1NVmyVWreM
17. 

#003 – Limbajul de programare C++  – instructiuni repetitive


Majoritatea instrucţiunilor dintr-o aplicaţie software constau în instrucţiuni repetitive şi instrucţiuni de test. Mai jos sunt prezentate instrucţiunile repetitive din limbajele C/C++:
  • for
  • do-while
  • while
Instrucţiunea for execută o secvenţă de cod până când este îndeplinită condiţia de test.
De exemplu, instrucţiunea printf(„Valoarea lui i este %d. Apasa o tasta\n”, i), va fi executată de 5 ori atâta vreme cât i este mai mic sau egal cu  5:
?
for (i=1;i<=5;i++)
{
            printf("Valoarea lui i este %d. Apasa o tasta\n",i);
            getchar();
}
La fiecare repetare secvenţa i++ măreşte valoarea lui i cu 1, iar funcţia getchar() aşteaptă apăsarea unei taste pentru a continua executarea următoarei instrucţiuni.
Acelaşi rezultat poate fi obţinut folosind instrucţiunea do-while. Instrucţiunea printf („Valoarea lui i este %d. Apasa o tasta\n”, i), va fi executată de 5 ori atâta vreme cât i este mai mic sau egal cu  5:
?
do
{
            printf("Valoarea lui i este %d. Apasa o tasta\n",i);
            getchar();
            i++;
} while (i<=5);
Instrucţiunea do-while execută secvenţa de cod până se indeplineşte condiţia impusă de expresia while.
Similar cu ce a fost prezentat mai sus, instrucţiunea,  while repetă secvenţa ce urmează după ea atâta vreme cât condiţia de test este îndeplinită:
?
while (i<=5)
{
            printf("Valoarea lui i este %d. Apasa o tasta\n",i);
            getchar();
            i++;
}
Probabil că vă puneţi întrebarea de ce sunt nevoie trei instrucţiuni care aparent fac acelaşi lucru. După cum am spus la începutul acestei serii de articole : luaţi-o aşa cum este, o să înţelegeţi mai târziu de ce.
Codul comentat  pentru C/C++ îl găsiţi mai jos. Acesta poate fi compilat online la adresa onlinecompiler.net.
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#include <stdio.h>
int main()
{
int i;
printf("Demonstram utilizarea instructiunii for. Apasa o tasta\\n");
getchar();
for (i=1;i<=5;i++)
{
            printf("Valoarea lui i este %d. Apasa o tasta\\n",i);
            getchar();
}
printf("Demonstram utilizarea instructiunii do-while. Apasa o tasta\\n");
i=1;
getchar();
do
{
printf("Valoarea lui i este %d. Apasa o tasta\\n",i);
getchar();
 i++;
} while (i<=5);
printf("Demonstram utilizarea instructiunii while. Apasa o tasta\\n");
i=1;
getchar();
while (i<=5)
{
printf("Valoarea lui i este %d. Apasa o tasta\\n",i);
getchar();
i++;
}
getchar();
return 0;
}

No comments:

Post a Comment