curs 1 - andrei.clubcisco.roandrei.clubcisco.ro/cursuri/1pc/co/curs01.pdf · programarea...

25
Programarea calculatoarelor Limbajul C Ş.l. Carmen Odubăşteanu CURS 1

Upload: tranthuan

Post on 01-Feb-2018

286 views

Category:

Documents


13 download

TRANSCRIPT

Page 1: Curs 1 - andrei.clubcisco.roandrei.clubcisco.ro/cursuri/1pc/co/curs01.pdf · Programarea calculatoarelor Cuprins Introducere Algoritm şi obiectele acestuia Limbaje de programare

Programarea calculatoarelorLimbajul C

Ş.l. Carmen Odubăşteanu

CURS 1

Page 2: Curs 1 - andrei.clubcisco.roandrei.clubcisco.ro/cursuri/1pc/co/curs01.pdf · Programarea calculatoarelor Cuprins Introducere Algoritm şi obiectele acestuia Limbaje de programare

Programarea calculatoarelor

Bibliografie:

curs.cs.pub.ro – Programarea Calculatoarelor seria 1CCNegrescu L - Limbajele C şi C++ pentru începători, volumul 1: Limbajul C, Ed. Albastră, Cluj-Napoca, 2002Florian Moraru – Programarea CalculatoarelorFlorian Moraru – Programarea Calculatoarelor (culegere)Brian W. Kernighan, Dennis M. Ritchie - The C Programming Language

http://www.eskimo.com/~scs/cclass/notes/top.htmlhttp://www.eskimo.com/~scs/cclass/int/top.htmlhttp://cermics.enpc.fr/~ts/C/cref.htmlhttp://www.cs.bath.ac.uk/~pjw/NOTES/ansi_c/http://www.chris-lott.org/resources/cstyle/http://www.infoiasi.ro/fcs/absolvire4info.html

Page 3: Curs 1 - andrei.clubcisco.roandrei.clubcisco.ro/cursuri/1pc/co/curs01.pdf · Programarea calculatoarelor Cuprins Introducere Algoritm şi obiectele acestuia Limbaje de programare

Programarea calculatoarelor

Cuprins

IntroducereAlgoritm şi obiectele acestuiaLimbaje de programareProgramare structuratăScheme logice, pseudocodExemple

Istoric limbaj CElemente de bază ale limbajului C

Tipuri de date şi constante Variabile şi operatoriExpresiiFuncţii I/OInstrucţiuni

Directive de preprocesare Vectori

Page 4: Curs 1 - andrei.clubcisco.roandrei.clubcisco.ro/cursuri/1pc/co/curs01.pdf · Programarea calculatoarelor Cuprins Introducere Algoritm şi obiectele acestuia Limbaje de programare

Programarea calculatoarelor

Cuprins

FuncţiiPointeriVectori şi pointeriFuncţii şi pointeriŞiruri de caractereStructuriAlocare dinamicăFişiere text şi fişiere binare

Programe complexe. Compilări separate. Fişiere proiect.Convenţii de programare

Page 5: Curs 1 - andrei.clubcisco.roandrei.clubcisco.ro/cursuri/1pc/co/curs01.pdf · Programarea calculatoarelor Cuprins Introducere Algoritm şi obiectele acestuia Limbaje de programare

Programarea calculatoarelor

Obiective

Cursanţii vor dobândi următoarele abilităţi:Să scrie, să compileze şi să ruleze un program simplu C utilizând mediul de dezvoltare DevCppSă utilezeze corect elementele de bază ale limbajului CSă foloseasca tipurile structurate de date (vectori, matrici, structuri) Să proiecteze şi să implementeze programemodulare utilizând definirea de funcţii propriiSă acceseze memoria folosind pointeri

Page 6: Curs 1 - andrei.clubcisco.roandrei.clubcisco.ro/cursuri/1pc/co/curs01.pdf · Programarea calculatoarelor Cuprins Introducere Algoritm şi obiectele acestuia Limbaje de programare

Programarea calculatoarelor

Obiective

Să acceseze şi să prelucreze date aflate in fişiereSă proiecteze şi să implementeze programe complexesub formă de proiecteSă testeze şi să depaneze un program C Să folosească un stil de scriere a programelor cât maieficient (comentarii, codificări)

Să treacă examenul de PC şi examenele de programare care vor urma în anii următori.

Uraaaaaa!

Page 7: Curs 1 - andrei.clubcisco.roandrei.clubcisco.ro/cursuri/1pc/co/curs01.pdf · Programarea calculatoarelor Cuprins Introducere Algoritm şi obiectele acestuia Limbaje de programare

Programarea calculatoarelor

Obiective

Condiţiile pentru dobândirea acestor capabilităţi?

Dar beneficiile?

Page 8: Curs 1 - andrei.clubcisco.roandrei.clubcisco.ro/cursuri/1pc/co/curs01.pdf · Programarea calculatoarelor Cuprins Introducere Algoritm şi obiectele acestuia Limbaje de programare

Programarea calculatoarelor

Nota finală

Prezenţa laboratorActivitate laborator

Lucrări neanunţate de maxim 30 min cu probleme asemănătoare sau chiar din laborator (laboratoarele anterioare + cel curent)

Lucrări curs (?)Total din timpul semestrului: maxim 4p

Examen finalcondiţie de intrare în examen: 50% din punctajul maxim din timpul semestrului

Teme de casă pentru cei care vor să lucreze mai mult - bonus (?)

Page 9: Curs 1 - andrei.clubcisco.roandrei.clubcisco.ro/cursuri/1pc/co/curs01.pdf · Programarea calculatoarelor Cuprins Introducere Algoritm şi obiectele acestuia Limbaje de programare

Programarea calculatoarelor

Exemplu

x2-2, x<0F(x)= 3, x=0

x+2, x>0x = {-3, 0,1,7, 2.23, etc} – 100 valori

Etape1. Elaborare algoritm2. Transpunere algoritm în limbaj de programare3. Rulare şi ... din nou etapa 1 dacă nu am obţinut

ce trebuia

Page 10: Curs 1 - andrei.clubcisco.roandrei.clubcisco.ro/cursuri/1pc/co/curs01.pdf · Programarea calculatoarelor Cuprins Introducere Algoritm şi obiectele acestuia Limbaje de programare

Programarea calculatoarelor

Algoritm

Succesiune de etape ce se poate aplica mecanic pentru rezolvarea unei clase de probleme Redactare

Scheme logice PseudocodMental – cine îşi permite?

CerinţeClaritate – fără ambiguităţiGeneralitate – pentru o întreagă clasă de probleme Finitudine – furnizare rezultat în timp finit

Obs: O problemă poate avea mai mulţi algoritmi de rezolvare – cel mai bun?

Page 11: Curs 1 - andrei.clubcisco.roandrei.clubcisco.ro/cursuri/1pc/co/curs01.pdf · Programarea calculatoarelor Cuprins Introducere Algoritm şi obiectele acestuia Limbaje de programare

Programarea calculatoarelor

Obiecte cu care lucrează algoritmii

DateIntrareIeşire

După tipul lor:Întregi: 2, -4Reale: 3.25Logice: true şi falseCaracter: ‘y’Şir de caractere: “ab23_c”

Constante: date conţinute în program fără a fi citite sau calculate - π

Page 12: Curs 1 - andrei.clubcisco.roandrei.clubcisco.ro/cursuri/1pc/co/curs01.pdf · Programarea calculatoarelor Cuprins Introducere Algoritm şi obiectele acestuia Limbaje de programare

Programarea calculatoarelor

Obiecte cu care lucrează algoritmii

Variabile: nume unic, conţinut diferitNumeTipValoarea la un moment datLocul în memorie (adresa)

x1, x2, x3.... -> xF(x1), F(x2), F(x3), ... -> F

x este de tipul real, are valoarea 3 la un moment dat şi se află în memorie la adresa 0xFF32

Page 13: Curs 1 - andrei.clubcisco.roandrei.clubcisco.ro/cursuri/1pc/co/curs01.pdf · Programarea calculatoarelor Cuprins Introducere Algoritm şi obiectele acestuia Limbaje de programare

Programarea calculatoarelor

Obiecte cu care lucrează algoritmii

ExpresiiConstruite cu constante, variabile, operatoriDe mai multe tipuri, ca şi variabilele: 3*x+7, x<y, etc

OperaţiiIntrare: preluarea unei date de la un dispozitiv de intrareIeşire: trecerea unei date din memorie către un dispozitiv de ieşireAtribuire: x=3; y=x; y=x+y

Se evaluează expresia din dreapta atribuiriiValoarea obţinută este atribuită variabilei din stânga, care îşipierde vechea valoare

Decizie

Page 14: Curs 1 - andrei.clubcisco.roandrei.clubcisco.ro/cursuri/1pc/co/curs01.pdf · Programarea calculatoarelor Cuprins Introducere Algoritm şi obiectele acestuia Limbaje de programare

Programarea calculatoarelor

Program

Descriere precisă şi concisă a unui algoritm într-un anumit limbaj de programare

Page 15: Curs 1 - andrei.clubcisco.roandrei.clubcisco.ro/cursuri/1pc/co/curs01.pdf · Programarea calculatoarelor Cuprins Introducere Algoritm şi obiectele acestuia Limbaje de programare

Programarea calculatoarelor

Limbaje de programare

Limbaje de nivel coborât, dependente de calculator:

Limbaj maşină Limbaj de asamblare

mnemonice pentru operaţiuni simboluri pentru adrese

greu, dar interesant!

Page 16: Curs 1 - andrei.clubcisco.roandrei.clubcisco.ro/cursuri/1pc/co/curs01.pdf · Programarea calculatoarelor Cuprins Introducere Algoritm şi obiectele acestuia Limbaje de programare

Programarea calculatoarelor

Limbaje de programare

Limbaje de nivel înalt, independente de structura calculatorului:

Fortran (FORmula TRANslation) – 1955, IBM, probleme tehnico-ştiinţificeCobol – 1959, probleme economiceProgramare structurată – ‘70Programare orientată pe obiecte – ‘80

Page 17: Curs 1 - andrei.clubcisco.roandrei.clubcisco.ro/cursuri/1pc/co/curs01.pdf · Programarea calculatoarelor Cuprins Introducere Algoritm şi obiectele acestuia Limbaje de programare

Programarea calculatoarelor

Programare structurată

Dijkstra şi HoareProgramarea in care abordarea este top-down: descompunerea problemei complexe în subprobleme mai simple - modul Teorema de structură a lui Bohm şi Jacopini: orice algoritm poate fi compus din numai treistructuri de calcul:

structura secvenţială - secvenţa;structura alternativă - decizia;structura repetitivă - ciclul.o singură intrare şi o singură ieşire pentru fiecare

Page 18: Curs 1 - andrei.clubcisco.roandrei.clubcisco.ro/cursuri/1pc/co/curs01.pdf · Programarea calculatoarelor Cuprins Introducere Algoritm şi obiectele acestuia Limbaje de programare

Programarea calculatoarelor

Operaţii auxiliare

Start/Stop

Acţiuni nedetaliate Prelucrare

Start

Stop

Page 19: Curs 1 - andrei.clubcisco.roandrei.clubcisco.ro/cursuri/1pc/co/curs01.pdf · Programarea calculatoarelor Cuprins Introducere Algoritm şi obiectele acestuia Limbaje de programare

Programarea calculatoarelor

Secvenţa

Atribuirea: operaţia prin care unei variabile i se atribuie o valoare.

Operaţiile de intrare/ieşire:programatorul ia de la tastatură o valoare(intrarea)afişează pe ecran o valoare (ieşirea)

Pseudocod:i=7; citeste a;scrie a;

Exemplu: Citirea şi scrierea unei valori.

Page 20: Curs 1 - andrei.clubcisco.roandrei.clubcisco.ro/cursuri/1pc/co/curs01.pdf · Programarea calculatoarelor Cuprins Introducere Algoritm şi obiectele acestuia Limbaje de programare

Programarea calculatoarelor

Decizia

O întrebare ridicată de programator la un moment dat în program. In funcţie de răspunsul la întrebare- care poate fi ori “Da”, ori “Nu” - programul se continuă pe una din ramuri.

daca conditie adevaratainstructiuni1;

altfel instructiuni2;

Să se afişeze maximul dintre două valori a şi b.

Page 21: Curs 1 - andrei.clubcisco.roandrei.clubcisco.ro/cursuri/1pc/co/curs01.pdf · Programarea calculatoarelor Cuprins Introducere Algoritm şi obiectele acestuia Limbaje de programare

Programarea calculatoarelor

Structura alternativă

Caz particular decizieCondiţieInstrucţiunile care se execută dacărespectiva condiţieeste adevaratăInstrucţiunile care se execută dacă estefalsă.

Rezolvarea ecuaţiei de grad 1: ax+b=0

Page 22: Curs 1 - andrei.clubcisco.roandrei.clubcisco.ro/cursuri/1pc/co/curs01.pdf · Programarea calculatoarelor Cuprins Introducere Algoritm şi obiectele acestuia Limbaje de programare

Programarea calculatoarelor

Structura repetitivă cu conditie iniţială

O condiţie, care se află la începutUn bloc de instrucţiuni, care se execută dacă rezultatul evaluariicondiţiei este adevărat

atata timp cat conditie adevaratainstructiuni

Să se afişeze suma primelor n numere naturale, n citit de la tastatură.

Page 23: Curs 1 - andrei.clubcisco.roandrei.clubcisco.ro/cursuri/1pc/co/curs01.pdf · Programarea calculatoarelor Cuprins Introducere Algoritm şi obiectele acestuia Limbaje de programare

Programarea calculatoarelor

Structura repetitivă cu condiţie finală

Bloc de instrucţiuni, apoi condiţie.

Obs: Blocul de instrucţiuni se executăminim o dată, spre deosebire de structura repetitivă cu test iniţial, undeblocul de instrucţiuni era posibil să nuse execute deloc, dacă rezultatulevaluării condiţiei iniţiale era fals.

executa {instructiuni

} atata timp cat conditie adevarata

Page 24: Curs 1 - andrei.clubcisco.roandrei.clubcisco.ro/cursuri/1pc/co/curs01.pdf · Programarea calculatoarelor Cuprins Introducere Algoritm şi obiectele acestuia Limbaje de programare

Programarea calculatoarelor

Structura repetitivă cu contor

Caz particular al structurii de control cu test iniţial.Utilizează o variabilă pe care o foloseşte ca un contor.

pleacă de la o valoare;ajunge la o valoare;înaintează cu un pas.

pentru contor de la val_initialala val_finala cu pasul pas

instructiuni

Suma primelor n numere naturale

Page 25: Curs 1 - andrei.clubcisco.roandrei.clubcisco.ro/cursuri/1pc/co/curs01.pdf · Programarea calculatoarelor Cuprins Introducere Algoritm şi obiectele acestuia Limbaje de programare

Programarea calculatoarelor

Probleme propuse

1. Interschimbul valorilor a două variabile a şi b.2. Rezolvarea ecuaţiei de grad 2: ax2+bx+c=0.3. Să se afişeze în ordine crescătoare valorile a 3 variabile a, b şi

c.4. Să se calculeze şi să se afişeze suma: S=1+1*2+1*2*3+..+n!5. Să se calculeze şi să se afişeze suma cifrelor unui număr

natural n.6. Să se calculeze şi să se afişeze inversul unui număr natural n.7. Să se afişeze dacă un număr natural dat x este prim.8. Să se afişeze primele n numere naturale prime.9. Să se descompună în factori primi un număr dat n.10. Să se afişeze toate numerele naturale mai mici decât 10000

care se pot descompune în două moduri diferite ca sumă de două cuburi.