Sunteți pe pagina 1din 35

Programarea calculatoarelor și limbaje de programare I

Universitatea din Oradea


Anul universitar 2021-2022
Profesor dr. ing. Cornelia Győrödi
Email: cgyorodi@uoradea.ro
1
Organizarea cursului

 Acest modul de curs are 2 ore de curs si două ore de


lucrări practice pe săptămână
 Nota obținută la examen este divizată :
 66% - exemenul final (teorie și probleme)
 14% - lurările practice de la laborator
 20% - testul final de laborator
 Prezența la curs și laborator este obligatorie !!!

2
Evaluare
Medie ponderată:
 Examen scris: 66 %

 Laborator: 34 %

 Condiția de promovare: media 4.50

Cerințe
 Prezența la laborator: minimum 12 ședințe de laborator
 Rezolvarea problemelor de la laborator
 Parcurgerea materialelor obligatorii de curs și laborator

prof. dr. ing. Cornelia Gyorodi 3


Structura cursului
 Introducere
 Introducere în programarea în limbajul C
 Programarea structurată în limbajul C
 Structuri de control în limbajul C
 Variabile, operatori și expresii
 Funcții
 Tablouri
 Pointeri
 Șiruri de caractere
 Structuri și uniuni, câmpuri pe biți

4
Structura cursului

 Recursivitatea
 Funcții de intrare/ieșire (I/O) pentru fișiere
 Funcții folosite în lucru cu fișierele

5
Bibliografie
 Bibl1 - Győrödi Cornelia, Győrödi Robert, Pecherle George, “Programarea în limbajul
C. Teorie și Aplicații”, Editura Universității din Oradea, 2015, ISBN 978-606-10-1522-
1, nr. pag 250.
 C: How to Program 5rd Edition – H.M. Deitel, P.J. Deitel – 2007, Prentice-Hall – ISBN
013239300-X
 Programming: Principles and Practice Using C++ (2nd Edition), Bjarne Stroustrup,
May 25, 2014, Addison-Wesley, ISBN - 978-0321992789.
 Data Structures, Algorithms & Software Principles in C – Thomas A. Standish – 1995
Addison-Wesley – ISBN 0201591189
 Győrödi Cornelia Aurora - “Programare în limbajul C”, 2013 – curs in format
electronic
 D. Costea - “Iniţiere în limbajul C” - Editura Teora - 1995
 V. Cristea, C. Giumale ş.a. - “Limbajul C standard” - Editura Teora - 1992

6
Ce este un Calculator?
 Calculator
 Un dispozitiv capabil să execute operații și să

ia decizii logice
 Calculatorul procesează datele cu ajutorul unor seturi de instrucțiuni

numite programe
 Componente Hardware
 Varietate de dispozitive care compun un calculator

 Tastatură, ecran, mouse, disc, memorie, CD_ROM, unitate de procesare

(unitatea centrală)
 Componente Software
 Programele care se execută pe un calculator

7
Componentele unui sistem de calcul (Computer)
 Un sistem de calcul este compus din 6 unități:
1. Unitatea de intrare
 Obține informații de la dispozitivele de intrare (keyboard, mouse)
2. Unitatea de ieșire (Output unit)
 Transmite informația spre vizualizare (ecranul, imprimanta alte unități de
control)
3. Unitatea de memorie
 Acces rapid, capacitate mică, stochează informația de intrare, programele
active
4. Unitatea aritmetică și logică (Arithmetic and logic unit -ALU)
 Execută operațiile aritmetice și logice
5. Unitatea centrală (Central processing unit -CPU)
 Supervizeză și coordonează alte secțiuni ale calculatorului
6. Unitatea de memorie secundară (Secondary storage unit)
 capacitate mare, mai ieftină
 Stochază programele inactive (Stores inactive programs)
8
Evoluția limbajelor de programare

 First-generation
 binary machine code – switches
 Second-generation (1940’s – 1950’s)
 assembler – one-to-one
 Third-generation (1960’s – 1970’s)
 high-level languages like C, Pascal … C++, Java – one-to-5 …
10
 Fourth-generation (late 1970’s)
 4GL’s – one-to-30 … 50 (Focus, Natural)

9
Limbaje de nivel înalt: scurt istoric
 conceptul de compilator : descris prima data de Grace Hopper (1952)
 1954-1957: limbajul si compilatorul FORTRAN (John Backus, IBM)
 1958: LISP (LISt Processing, John McCarthy, la MIT)
 (Lots of Idiotic, Silly Parantheses :))
 1959: COBOL (Common Business Oriented Language)
dezvoltat de CODASYL: Committee on Data Systems Languages
 1960: ALGOL 60: limbaj structurat, sta la baza multor limbaje
 1964: BASIC (John Kemeny, Tom Kurtz; la Dartmouth)
 1967: SIMULA (Ole-Johan Dahl, Kristen Nygaard):
primul limbaj orientat pe obiecte !
 1968: Edsger W. Dijkstra: \GO TO Considered Harmful"
 - principiile programarii structurate
 1971: PASCAL (Niklaus Wirth); ulterior MODULA-2

10
Istoricul limbajului C
 dezvoltat si implementat în 1972 la AT&T Bell Laboratories de
Dennis Ritchie http://cm.bell-labs.com/cm/cs/who/dmr/chist.html
 contextul: evolutia conceptului de programare structurata
(C inspirat de ALGOL 68, via BCPL si B)
 necesitatea unui limbaj pentru programe de sistem
 legatura strânsa cu sistemul de operare UNIX dezvoltat la Bell Labs)
 C dezvoltat initial sub UNIX; în 1973, UNIX rescris în totalitate în C cartea de referinta:
Brian Kernighan, Dennis Ritchie:
 The C Programming Language (1978) în 1988 (vezi K&R editia II) limbajul a fost
standardizat de ANSI (American National Standards Institute)
 dezvoltari ulterioare: C99 (standard ISO 9899)

11
Libraria standard C
 Programele C sunt împărțite în module numite funcții
 Un programator își poate crea propriile funcții

 Avantaj: programatorul știe exact cum funcționează

 Dezavantaj: consumator de timp

 Programatorii vor folosi adeseori funcțiile de bibliotecă C:

 Evitarea reinventării rotii

 Daca o funcție exista deja, e mai bine sa fie folosită decât să se scrie alta
 Funcțiile de biblioteca sunt scrise cu atenție, sunt eficiente și portabile

12
Tendința principală: programarea obiectuală
 Obiective
 Componente software reutilizabile care modelează obiecte din viața

reală
 Unități software

 Obiecte de tip dată, obiecte timp, obiecte plata, obiecte pt.

facturare, obiecte audio, obiecte video, obiecte fișier, obiecte de


tip înregistrare, etc.
 Orice substantiv poate fi reprezentat ca și un obiect

 Reutilizare foarte bună

 Mai ușor de înțeles, organizat mai bine, și mai ușor de întreținut

decât programarea procedurală

13
C++ și cum se programează în C++
 C++
 Superset al lui C dezvoltat de Bjarne Stroustrup la Bell Labs

 Are abilități orientate pe obiect

 Modelarea orientată pe obiecte foarte bine dezvoltată

 Productivitate de la 10 până la 100 ori mai mare

 Limbajul dominant in industrie și in mediile academice

 Invățarea lui C++


 Deoarece C++ include C, unii cred că e mai bine să stăpânești C și apoi sa înveți C++

 Incepând cu semestrul 2 din anul I se va începe introducerea în C++

14
Elementele unui mediu de dezvoltare C
• Fazele unui program
Editor Disk
C++
Programul preprocesor
1. Editare Preprocesor Disk proceseaza codul
2. Preprocesare Compilatorul creaza
3. Compilare Compilator Disk codul obiect si il
stocheaza pe disc.
4. Editarea de Linker Disk Editarea de legaturi
legături Primary Memory leaga codul obiect de
librarii
5. Incărcare Incarcator
6. Execuție Programul de
incarcare pune
Disk ..
.. programul in
..
memorie
Primary Memory
CPU executa fiecare
CPU instructiune, stocand
eventual noi date pe
masura executiei
..
..
..
programului
15
Modalitatea de scriere a unui program

 Inainte de a scrie un program:


 Trebuie sa aveți o înțelegere deplină a problemei
 Faceți un plan pentru rezolvarea ei
 In timpul scrierii unui program:
 Trebuie sa știți ce blocuri de cod sunt disponibile
 Trebuie sa folosiți principii de programare eficiente

Programarea calculatoarelor I - Gyorodi


Cornelia 16
Erori de sintaxă și logice

 Bloc:
 Instrucțiuni compuse cu declarații
 Erori de sintaxa
 Detectate de compilator
 Erori logice:
 Iși fac efectul în faza de execuție
 Non-fatale: programul rulează, dar furnizează rezultate
eronate
 Fatale: program se termină prematur
Programarea calculatoarelor I - Gyorodi
Cornelia 17
Algoritmi

 Probleme de programare
 Pot fi rezolvate executând o serie de acțiuni într-o ordine anume

 Algoritm: procedura constând în


 Acțiunile care trebuie să fie executate

 Ordinea în care aceste acțiuni să fie executate

 Controlul programului
 Specificarea ordinii în care instrucțiunile sunt executate

Programarea calculatoarelor I - Gyorodi


Cornelia 18
Pseudocod

 Pseudocod
 Limbaj informal, artificial care ne ajută să dezvoltăm algoritmi
 Similar cu vorbirea curentă
 Nu este executat pe calculatoare
 Ne ajută să “gândim” un program înainte de a-l scrie
 Ușor de convertit într-un program C++
 Se compune doar din instrucțiuni executabile

Programarea calculatoarelor I - Gyorodi


Cornelia 19
Reprezentarea algoritmilor
 Pentru reprezentarea algoritmilor se folosesc diferite forme de
reprezentare caracteristice

 Formele convenţionale cele mai folosite în reprezentarea


algoritmilor sunt:
 schemele logice sau organigramele
 limbajele pseudocod

 Principala calitate a acestora este posibilitatea de a evidenţia cu claritate


fluxul controlului algoritmilor, adică succesiunile posibile ale acţiunilor.

20
Reprezentarea algoritmilor

 Schemele logice utilizează săgeţi de legătură între


diversele forme geometrice care simbolizează diferite tipuri de
acţiuni.

 Limbajele pseudocod folosesc cuvinte cheie - cuvinte cu


înţeles prestabilit ce identifică operaţia care se execută, şi câteva
reguli simple de aliniere a textului scris.

21
Scheme logice – mod de reprezentare

 Blocul delimitator are forma unei elipse alungite.


 Blocul delimitator se foloseşte pentru a marca
începutul sau sfârşitul schemei logice.

22
Scheme logice – mod de reprezentare

 Blocul de intrare / ieşire are forma unui


paralelogram.
 Acest bloc se foloseşte la introducerea datelor de
intrare şi afişarea rezultatelor.

23
Scheme logice – mod de reprezentare
 Blocul de calcul se foloseşte pentru a reprezenta operațiile
de calcul care sunt realizate

 În blocurile de acest tip apar comenzi de forma:


v=e (variabilei v i se atribuie valoarea e)
- v este o variabilă, iar e este o expresie de tip compatibil cu v

24
Reprezentarea blocurilor de decizie

 Dacă condiție
{
instrucțiuni1
}
Altfel
{
instrucțiuni2
}

25
Structura repetitivă cu test inițial

 Structura repetitivă cu test inițial corespunde schemei


alăturate și este de forma:
cât timp condiție
{
instrucțiuni
}

26
Exemplu 1 – Rezolvarea ecuației ax+b =0
 Schema logică de rezolvare a ecuaţiei ax+b=0 cu a şi b numere reale. Evident, dacă a=0
şi b=0, atunci ecuaţia este satisfăcută de orice x. Prin urmare, în acest caz ecuaţia are o
infinitate de soluţii. Dacă a = 0 şi b ≠ 0, atunci apare o incompatibilitate. În fine, dacă a
≠ 0, atunci ecuaţia are o singură soluţie: x = -b/a, pentru orice b.
 Schema logică de rezolvare a problemei este:

27
Exemplu 2 – Rezolvarea ecuației de gradul II
 Schema logică de rezolvare a ecuaţiei de gradul 2, ax2+bx+c=0

28
Exemplu 3 – Afișarea numerelor prime dintr-un
șir de N numere
 Schema logică pentru a afla dacă un număr este prim.

29
Exemplu 4 – Determinarea valori maxime
dintr-un șir de N numere

30
Caracteristici ale limbajului C
 limbaj de nivel mediu
 oferă tipuri, operații, instrucțiuni simple
fără facilitățile complexe ale limbajelor de nivel (foarte) înalt
 limbaj de programare structurat

 permite programarea la nivel scăzut, apropiat de hardware


 acces la reprezentarea binară a datelor
 mare libertate în lucrul cu memoria
 foarte folosit în programarea de sistem, interfața cu hardware

 produce un cod eficient (compact în dimensiune, rapid la rulare)


 apropiat de eficiența limbajului de asamblare datorită caracteristicilor
limbajului, și maturității compilatoarelor
 slab tipizat (spre deosebire de PASCAL)

31
Principiile limbajului C

 Programele C conţin una sau mai multe funcţii


 Toate instrucţiunile se termină cu ;
 C nu recunoaşte sfârşitul liniei ca terminator.
function_name ( )
{
secvenţa instrucţiunilor
}
 Limbajul C recunoaşte deosebirile dintre litere mari şi litere
mici.

32
Componentele unui program C
 Funcţia main ( ) este funcţia cu care începe execuţia programului.
 O componentă comună celor mai multe programe C sunt fişierele header. Aceste fişiere header pot fi
adăugate programului folosind directiva preprocesor # include.
Un exemplu de program C:
# include <stdio.h>
main ( )
{
printf ("Acesta este un scurt program C ");
}

 printf( ) este funcţie de bibliotecă care afişează pe ecran caracterele care sunt cuprinse între
ghilimele.

33
Componentele unui program C
Un program C cuprinde:
 atomi lexicali
 identificatori,
 constante (numerice, caracter, șir)
 operatori,
 semne de punctuație
 separatori ( spații, comentarii, terminator de linie )
 Atomii și separatorii se construiesc din simbolurile care constituie alfabetul limbajului C.
 Simbolurile se codifică conform codului ASCII ( American Standard Code for Information
Interchange), prin câte o configurație de 8 biți (un octet), astfel rezultă că sunt 256 ( 0 - 255 ) de
caractere în codul ASCII.

Mai multe detalii sunt prezentate în Bibl1 Tabelul 1.1 și Tabelul 1-2.

34
Mulțumesc pentru atenție!

35

S-ar putea să vă placă și

  • Proiect Arhitectura Sistemelor de Calcul (DOCA, PATER, KOVACS 1631)
    Proiect Arhitectura Sistemelor de Calcul (DOCA, PATER, KOVACS 1631)
    Document20 pagini
    Proiect Arhitectura Sistemelor de Calcul (DOCA, PATER, KOVACS 1631)
    Bogdan Sopota
    Încă nu există evaluări
  • Curs PCLP
    Curs PCLP
    Document39 pagini
    Curs PCLP
    Bogdan Sopota
    Încă nu există evaluări
  • Problema UBD
    Problema UBD
    Document20 pagini
    Problema UBD
    Bogdan Sopota
    Încă nu există evaluări
  • Curs PCLP
    Curs PCLP
    Document35 pagini
    Curs PCLP
    Bogdan Sopota
    Încă nu există evaluări
  • Curs PCLP
    Curs PCLP
    Document44 pagini
    Curs PCLP
    Bogdan Sopota
    Încă nu există evaluări
  • Curs PCLP
    Curs PCLP
    Document40 pagini
    Curs PCLP
    Bogdan Sopota
    Încă nu există evaluări
  • Curs PCLP
    Curs PCLP
    Document40 pagini
    Curs PCLP
    Bogdan Sopota
    Încă nu există evaluări
  • Curs PCLP
    Curs PCLP
    Document38 pagini
    Curs PCLP
    Bogdan Sopota
    Încă nu există evaluări
  • Curs PCLP
    Curs PCLP
    Document44 pagini
    Curs PCLP
    Bogdan Sopota
    Încă nu există evaluări
  • Curs PCLP
    Curs PCLP
    Document37 pagini
    Curs PCLP
    Bogdan Sopota
    Încă nu există evaluări