Sunteți pe pagina 1din 27

1 1/27 /27

Fundamentele program
Fundamentele program

rii
rii
C C_1 _1 / 5.10.2012 / 5.10.2012
14 14- -16 ~ 2 / I 16 ~ 2 / I
Vineri Vineri
Fundamentele Fundamentele programar programarii ii MI1 MI1 Matematica informatica Matematica informatica
Fundamentele Fundamentele programarii programarii 111 111 Matematica Matematica
Semestrul Semestrul 1 1
6 cr. C 2+2+2 2+2+2+0 Fundamentele programrii MLR5005
Credite Finalizare Ore: C+S+L+P Denumire Cod
Date despre disciplin Date despre disciplin
Obligatorie Reg. Disc.: C Evaluare: 1 Semestrul: 1 Anul de studiu:
Orar Orar
2 2/27 /27
Timpul
Timpul
total
total
estimat
estimat (ore (ore pe pe semestru semestru al al activit activit ilor ilor didactice didactice) )
20 Examinri
4 Tutoriat
21 Pregtire seminarii/laboratoare, teme, referate, portofolii i eseuri
7 Documentare suplimentar n bibliotec, pe platformele electronice de specialitate,
14 Studiul dup manual, suport de curs, bibliografie i notie
ore Distribuia fondului de timp:
28/28 seminar/laborator 28 curs 84 Total ore din planul de nvmnt
2/2 seminar/laborator 2 curs 6 Numr de ore pe sptmn
6 Numrul de credite
150 Total ore pe semestru
66 Total ore studiu individual
3 3/27 /27
Obiectivele disciplinei
Obiectivele disciplinei
- Intelegerea notiunii de algoritm si invatarea limbajului
Pseudocod pentru descrierea algoritmilor;
- Formarea deprinderilor de proiectare a algoritmilor;
- Cunoasterea unor algoritmi pentru unele clase de probleme:
operatii cu vectori, matrice, polinoame, rezolvari de ecuatii si
sisteme liniare, cautare, interclasare si sortare;
- Formarea deprinderilor de concepere, executie, testare si
punere la punct a programelor Pascal cu structurile de date
simple;
- Formarea unui stil de programare.
Obiectivele specifice Obiectivele specifice
- Conceperea i realizarea unui program ntr-un limbaj de nivel
nalt, precum i a documentaiei.
- Alegerea unui algoritm/subalgoritm pentru o
problema/subproblema data, studierea complexitii,
demonstrarea corectitudinii i verificarea i validarea
acestuia, precum i ntocmirea unei decumentatii tehnice.
Obiectivul general al Obiectivul general al
disciplinei disciplinei
4 4/27 /27
Continut:
4. 4. Recursivitate Recursivitate
- Notiunea de Recursivitate
- Recursivitate directa si indirecta
Implementarea Implementarea structuri structuri de date de date statice statice i i dinamice dinamice
- Tablou, ir de caractere, mulime, nregistrare
- Liste, arbori
3. 3. Codificarea Codificarea algoritmilor algoritmilor Pseudocod Pseudocod n n Pascal Pascal
- Elemente de baza ale limbajului Pascal
- Declaratii si Instructiuni
- Structura unui program Pascal
- Codificare
2. 2. Subalgoritmi Subalgoritmi ( (Pseudocod Pseudocod) )
- Notiunea de subalgoritm
- Parametrii formali
- Definirea unui subalgoritm (functie si procedura)
- Apelul unui subalgoritm
- Importanta subalgoritmilor n programare
1. 1. Algoritmi Algoritmi si si descrierea descrierea lor lor
- Notiunea de algoritm
- Variabila, tip, specificare
- Limbajul Pseudocod, structura liniara, alternativa, repetitiva
5 5/27 /27
Continut:
8. 8. Metode Metode generale generale de de elaborare elaborare a a algoritmilor algoritmilor
- Programare modulara; Programare structurata
- Elemente de claritate: indentare, spatiere, denumiri, ...
- Stil n programare
Metoda top-down si Rafinarea n pasi succesivi
- Metoda top-down; Metoda bottom-up
- Rafinarea n pasi succesivi
7. Dezvoltarea corecta a algoritmilor din specificatii 7. Dezvoltarea corecta a algoritmilor din specificatii
- Algoritm abstract; Ideea de rafinare; Reguli de rafinare; Exemple
6. 6. Corectitudinea Corectitudinea algoritmilor algoritmilor
- Stare n executia unui program; Calculul efectuat de un algoritm;
- Rezultatul calculului efectuat de un algoritm; Partial corectitudine, terminare,
(total) corectitudine; Metoda lui Floyd de demonstrare a corectitudinii
5. Faze in 5. Faze in viata viata unui unui program program
- Faze n realizarea unui program: specificare, proiectare, codificare, testare,
documentare, verificare;
- ntretinerea programelor: corectiva, adaptiva, perfectiva;
- Testarea programelor: Metoda cutiei negre, Metoda cutiei transparente
6 6/27 /27
Continut:
14. 14. Algoritmi Algoritmi de de cautare cautare si si complexitatea complexitatea lor lor
- Specificarea problemei de cautare; Metode de cautare: parcurgere secventiala, cautare
binara; Complexitatea algoritmilor de cautare
Algoritmi de sortare si complexitatea lor
- Specificarea problemei de sortare; Metode de sortare (BubbleSort, SelectSort,
InsertSort, QuickSort, MergeSort, )
- Complexitatea algoritmilor de sortare
13. 13. Complexitatea Complexitatea algoritmilor algoritmilor
- Definitia complexitatii; Compararea algoritmilor din punctul de vedere al eficientei;
Complexitatea structurala;
12. Metode euristice 12. Metode euristice
Alte metode Alte metode: Metoda programarii dinamice; Metoda Branch and Bound
11. Metoda Backtracking 11. Metoda Backtracking
- Extinderi ale metodei Backtracking
10. 10. Metoda Metoda Greedy Greedy
Metoda Divide et Impera
9. 9. Tipuri Tipuri Abstracte Abstracte de Date de Date
- Specificarea unui TAD; Unit Pascal; Implementarea unui TAD n Pascal; Folosirea
unui TAD n programare
7 7/27 /27
Evaluarea
Evaluarea
:
:
Nota Nota final final se calculeaz conform ponderilor de mai sus, daca toate toate notele notele sunt >= 5
si prezenta prezenta este este conform conform regulamentului regulamentului (Pr.curs >= 75%, Pr.sem >= 75% si Pr.lab >= 90%).
10%
10%
Documentatia realizat
Programe predate
Documentatie si
Programe realizate
15% Lucrare de control (sem.)
Scrierea de algoritmi si
programe
Seminar Seminar
/ /
l laborator aborator
50%
15%
Examen scris
Examen practic (lab.)
Aplicarea noiunilor
teoretice n realizarea
programelor
Rezolvarea problemelor
Curs Curs
P Pondere din ondere din
nota final nota final
M Metode de evaluare etode de evaluare Criterii de evaluare Criterii de evaluare Tip activitate Tip activitate
8 8/27 /27
Bibliografie
Bibliografie
:
:
1. Frentiu, M., H.F. Pop, Fundamentals of Programming, Cluj University Press, 2006, 220 pagini
2. M.Frentiu si altii, Manualul incepatorului in Programarea Pascal, Ed. Microinformatica, Cluj-
Napoca, 1995, 252 pagini, ISBN 973-9215-04-
3. M.Frentiu si altii, Programare Pascal. Programe ilustrative, probleme propuse, pentru elevi si
studenti, Ed. Promedia, 1995, 229 pagini, ISBN 973-96862-1-4.
4. M.Frentiu, V.Prejmereanu, Algoritmica si programare, Lito. Univ. Babes-Bolyai, Cluj-Napoca,
1995, 261 pagini.
5. Frentiu, M., I.Lazar, S.Motogna si V.Prejmereanu, vol.I - Elaborarea algoritmilor, 1997, 188
pagini; vol.II - Programare Pascal, 392 pagini; Ed.Universitatii Babes-Bolyai, Cluj-Napoca.
6. M.Frentiu si B.Parv, Elaborarea programelor. Metode si tehnici moderne, Ed.Promedia, Cluj-
Napoca, 1994, 217 pag.
7. M.Frentiu, Verificarea i Validarea Programelor, Ed. Presa Universitar clujan, 2007, 173
pagini, ISBN 978-973-610-684-7.-2.
8. M.Frentiu, Verificarea Corectitudinii Programelor, Ed.Univ.Petru-Maior, Tg.-Mure, 2001,
116 pagini, ISBN 973-8084-32-6
9. Livovschi, L., H.Georgescu, Sinteza si analiza algoritmilor, Editura St. si Enciclopedica,
Bucuresti, 1986.
10. M.Freniu, I.Lazr, Bazele Programrii: Proiectarea Algoritmilor, 2000, Ed. Univ. Petru Maior,
Tg.Mure 184 pagini ISBN 973-8084-06-7
11. F.Boian, M.Freniu, I.Lazr i L.Tambulea, Informatica de baz, Ed.Universitii "Babe-
Bolyai", Cluj-Napoca, 2005, 233 pagini, ISBN 973-9261-18-3.
12. Knuth, D., Tratat de programarea calculatoarelor, Ed. Tehnica (Algoritmi fundamentali; Cautare
si sortare)
13. Prejmerean V., Fundamentele programrii notie de curs, http://www.cs.ubbcluj.ro/~per/Fp.html
9 9/27 /27
1. Algoritmi si descrierea lor
1. Algoritmi si descrierea lor
- - Notiunea Notiunea de de algoritm algoritm
- - Variabila Variabila, tip, , tip, specificare specificare
- - Limbajul Limbajul Pseudocod Pseudocod, ,
-structura liniara,
-alternativa,
-repetitiva
10 10/27 /27
Fazele
Fazele
rezolvrii
rezolvrii
unei
unei
probleme
probleme
cu
cu
calculatorul
calculatorul
(
(
ciclul
ciclul
de
de
viata
viata
al
al
programului
programului
) :
) :
Rezolvarea unei probleme cu ajutorul calculatorului presupune
parcurgerea urmtoarelor faze faze:
- precizarea cerinelor beneficiarului (definirea problemei) ;
- specificarea problemei (ce trebuie facut?);
- proiectarea algoritmului de rezolvare a problemei:
(ansamblu-Specif., detaliu-Subalg.);
- programarea propriu-zis, numit i implementare (sau codificare);
- testarea produsului obinut (validare-beneficiar, verificarea-executor);
- exploatarea i ntreinerea programului (corectiva, perfectiva, adaptiva);
- redactarea documentaiei fiecreia din fazele enumerate.
11 11/27 /27
Specifica
Specifica

ie
ie
:
:
Predicat Predicat de de intrare intrare sau precondi precondi ie ie (X): pentru a preciza datele
pentru care problema are sens (pentru celelalte nu are sens s executm
programul).
Var. de iesire
Z Z
Var. de intrare
X X
Program Program P P
Var. de lucru
Y Y
Predicat Predicat de de ie ie ire ire sau postcondi postcondi ie ie (X,Z): pentru a preciza rela rela ia ia
dintre rezultatele Z i datele iniiale X. Acesta este corect pentru acele
valori a i b ale vectorilor X i Z pentru care rezultatele sunt b n cazul cnd
datele iniiale sunt a i este fals n caz contrar.
12 12/27 /27
Specificaie :
Specificaia problemei :
- predicatul de intrare (X) precondi precondi ie ie i
- predicatul de ieire (X,Z) postcondi postcondi ie ie.
cEx.: S S se se calculeze calculeze radical (r) radical (r) dintr dintr- -un un numr numr real real pozitiv pozitiv x x.
Specificaia problemei este:
precondiia (X): "x>0" ,
postcondiia (X,Z): "r
2
=x" .
Corect Corect: : S S se se calculeze calculeze radical din x cu o radical din x cu o eroare eroare absolut absolut maxim maxim dat dat.
Vectorul de intrare este X=(x,) iar specificaia este:
(X): "x>0 i >0" ;
(X,Z): "|r
2
-x|<" .
13 13/27 /27
Descrierea Descrierea algoritmilor algoritmilor : :
Prin algoritm algoritm putem nelege o succesiune finit de operaii. Acesta
presupune executarea unor calcule ntr-o anumit ordine ordine.
Un algoritm algoritm este un text finit, o secven finit de propoziii ale unui limbaj
de descriere a algoritmilor. O propozi propozi ie ie a limbajului precizeaz o
anumit regul regul de de calcul calcul.
Are urmatoarele trei caracteristici: generalitate generalitate, , finitudine finitudine i unicitate unicitate ? ?
Algoritmul Algoritmul A A define define te te o o func func ie ie:
A : D R
Descrierea Descrierea algoritmilor algoritmilor se realizeaza prin mai multe limbaje limbaje de de descriere descriere,
dintre care cele mai des folosite sunt:
- schemele schemele logice logice;
- limbajul Pseudocod Pseudocod.
Variabila (nume, domeniul D, valoare, semnificaie, )
14 14/27 /27
Schemele Schemele logice logice : :
Utilizeaza:
- blocurile pentru calcule;
- sagetile pentru ordinea lor.
Start
Citeste a, b, c
Tipreste Re,Im Tipreste x
1
,x
2
1
Stop
Re:=-b / 2a
Im:=\-A/2a
A<0
Nu Da
Nu
A:=b
2
-4ac
Mesaj a=0
1
Da
x
2
:=
-b-\A
2a
x
1
:=
-b+\A
2a
a=0
15 15/27 /27
Limbajul Limbajul Pseudocod Pseudocod : :
Limbajul Limbajul Pseudocod Pseudocod are dou tipuri de propoziii (pentru calcule):
standard (care au o structur fix i este format cu ajutorul unor cuvinte cheie),
nestandard (care descriu pri ale algoritmului nc incomplet elaborate,
nefinisate, asupra crora urmeaz s se revin)
comentarii (texte scrise ntre acolade utilizate pentru documentarea
algoritmului).
Ordinea executiei este naturala.
Descrierea algoritmilor se poate realiza (structurat) utilizand doar urmtoarele
structuri:
secvenial (format dintr-o succesiune de propziii simple),
alternativ (permite executarea anumitor ramuri n funcie de anumite condiii)
repetitiv (prin care putem execut aceleai propoziii de mai multe ori).
16 16/27 /27
Structura Structura general general a a unui unui algoritm algoritm descris descris n n Pseudocod Pseudocod : :
Algoritmul Nume Este : { Antetul algoritmului }
. . . { Corpul }
Sfarit_Algoritm. { Sfaritul }
Un algoritm (n general) se desfoar n trei etape etape :
- citirea datelor de intrare (iniializarea datelor),
- efectuarea de calcule (prelucrarea datelor),
- tiprirea rezultatelor (extragerea datelor de ieire).
Prelucrare Prelucrare
Date de intrare
Date de iesire
17 17/27 /27
Operatii Operatii ( (propozitii propozitii): ):
Citirea datelor Date List_variabile_de_intrare;
Tiprirea rezultatelor Rezultate List_expresii_de_ieire;
Atribuirea de valori unei var. [Fie] Variabil := Expresie;
Structuri alternative:
- cu o ramur Dac Condiie Atunci
Secven
Sf_Dac ;
- cu doua ramuri Dac Condiie Atunci
Secven1
Altfel
Secven2
Sf_Dac ;
- cu mai multe ramuri Selecteaz Expresie Dintre
List_Valori1 : Secven1;
List_Valori2 : Secven2;
. . .
List_Valorin : Secvenn
[ Altfel Secvenn+1 ]
Sf_Selecteaz;
18 18/27 /27
Structurile Structurile repetitive: repetitive:
Cu numar cunoscut de pasi:
Pentru Varc := Li , Lf [ , Pas ] Execut
Secven
Sf_Pentru;
Cu test initial:
Ct_Timp Condiie Execut
Secven
Sf_Ct_Timp;
Cu test final:
Repet
Secven
Pn_Cnd Condiie;
Secven
Nu
Condiie
Da
Secven
Nu
Condiie
Da
19 19/27 /27
Exemplu Exemplu: : calculeaz calculeaz produsul produsul a a dou dou polinoame polinoame P P i i Q , date Q , date prin prin vect vect. . coef coef. .
Algoritmul Produs Este : { R:=PQ }
Date m,(P
i
, i=0,m), n,(Q
j
, j=0,n); { m=gradul lui P, n=gradul lui Q }
Pentru k:=0,m+n Execut { m+n=gradul lui R }
R
k
:=0
Sf_Pentru;
Pentru i:=0,m Execut
Pentru j:=0,n Execut
R
i+j
:=R
i+j
+P
i
*Q
j
Sf_Pentru;
Sf_Pentru;
Rezultate (R
k
, k=0,m+n)
Sf_Algoritm.
20 20/27 /27
Exemplu Exemplu: : determin primele n (n dat) numere prime
Algoritmul Prime Este : { Primele n numere Prime }
Date n; { primele n numere prime p =2,3,5, ... }
p:=2; i:=0;
Ct_Timp i<n Execut { i reprezint al ctelea numr prim a fost gsit }
d:=2; { p este prim ?( se divide cu 2,3, ... )}
Ct_Timp (d<Sqrt(p)) i (p Mod d > 0) Execut
d:=d+1 {se caut divizori d =2,3,... Rad(p)}
Sf_Ct_Timp;
Dac d>Sqrt(p) Atunci { dac am trecut cu d de Rad(p) atunci p este prim ! }
Rezultate p; i:=i+1
Sf_Dac;
Dac p=2 Atunci p:=p+1 { Se verific doar pentru }
Altfel p:=p+2 { numerele impare de la 3,... }
Sf_Dac;
Sf_Ct_Timp
Sf_Algoritm.
21 21/27 /27
Exemplu Exemplu: : determin cel mai mare numar n de patru cifre pentru care este
ndeplinit condiia
Oglindit (n) + Suma_Cifrelor(n) = n + 99 (Oglinditul lui 123 este 321).
Algoritmul Numr Este : { Cel mai mare numr n de patru cifre : }
n:=9999; { Ogl (n) + Sc (n) = n + 99 }
Repet
n:=n1;
Ct:=n; Sc:=0; Ogl:=0; { Primul Ct este n }
Repet
Uc :=Ct Mod 10; { Determin Ultima cifr a numrului }
Sc :=Sc + Uc; { Adun Ultima cifr la Suma cifrelor }
Ogl :=Ogl *10+ Uc; { Adaug Ultima cifr la Oglindit }
Ct :=[Ct / 10] { Sterg Ultima cifr din numr (Ct Div 10)}
Pn_Cnd Ct=0;
Pn_Cnd (Ogl+Sc=n+99) Sau (n=999);
Dac n>999 Atunci Rezultate n
Altfel Rezultate Nu exist
Sf_Dac
Sf_Algoritm. 4104 + 9 = 4014 + 99
22 22/27 /27
Subalgoritmi Subalgoritmi: : rezolv rezolv o o anumit anumit subproblem subproblem
Apel:
[Cheam] Nume_Subalgoritm (Lista_parametri_actuali);
Subalgoritm Subalgoritm
Parametri de Intrare
Parametri de iesire
Def.:
Subalgoritmul Nume_Subalgoritm (Lista_parametri_formali) Este : {Antet}
. . . { Corp subalgoritm }
Sf_Subalgoritm. { sau Sf_Nume_Subalgoritm. }
Parametri Parametri de de Intrare Intrare Expresii Expresii
Parametri Parametri de de iesire iesire Variabile Variabile
23 23/27 /27
Exemplu Exemplu: : pentru trei mulimi date A, B i C calculm AB, AC i BC
Algoritmul Reuniuni Este :
Date A,B,C;
Cheam Reuniune (A,B,R1);
Cheam Reuniune (A,C,R2);
Cheam Reuniune (B,C,R3);
Rezultate R1;
Rezultate R2;
Rezultate R3;
Sf_Algoritm.
Subalgoritmul Reuniune ( X,Y, R ) Este :
R:=X;
Pentru fiecare yeY Execut
Dac y ye eX X Atunci R:=R{y}
Sf_Dac
Sf_Pentru
Sf_Reuniune.
R:=XY
X , Y R
Subalgoritmul Reuninune determin mulimea R = X Y astfel :
R := X (Y \ X), adic depune n reuniune mai nti elementele din mulimea
X, la care apoi mai adaug acele elemente din Y care nu apar apar in in lui X.
24 24/27 /27
Functii Functii: ~ : ~ Subalgoritm Subalgoritm + Val. + Val. functiei functiei
Apelul unei funcii:
se face scriind ntr-o expresie numele funciei urmat de lista parametrilor actuali.
Nume_Funcie (List_parametri_actuali) { expr.instr.}
Def.:
Funcia Nume_Funcie (List_parametri_formali) Este : { Antetul funciei }
. . .
Nume_Func Nume_Func ie ie := := Expresie Expresie; ; { Corpul funciei }
. . .
Sf_Funcie. { sau Sf_Nume_funcie.}
Parametri Parametri de de Intrare Intrare Expresii Expresii
Parametri Parametri de de iesire iesire Variabile Variabile
25 25/27 /27
Exemple Exemple: : Exist & Apart
Funcia Exist ( b, A, n, p ) Este :
p:=1;
Ct_Timp (p<=n) i (b<>ap) Execut p:=p+1 Sf_Ct_Timp;
Exist := (p<=n)
Sf_Exist.
Funcia Apart (b,A) Este :
p:=1; {Card(A)=|A|}
Ct_Timp (p<=Card(A)) i (b<>A[p]) Execut p:=p+1
Sf_Ct_Timp;
Apart := (p<=Card(A))
Sf_Apart.
Funcia Card (A) Este :
Card := a
0
Sf_Card.
Dac yeX Atunci R:=R{y} Sf_Dac;
Dac Not Apart ( Apart (y,X y,X) ) Atunci R:=R{y} Sf_Dac;
26 26/27 /27
Exemplu Exemplu: : determin determin maximul maximul dintr dintr- -un un ir ir X cu n X cu n componente componente . .
Funcia Max (X,k) Este :
Dac k=1 Atunci Max:=x
1
{Consistena}
Altfel Dac Max(X,k-1) < x
k
Atunci Max:= x
k
Altfel Max:= Max(X,k-1)
Sf_Dac
Sf_Dac
Sf_Max.
Exemplu Exemplu: : decide decide dac dac b b apar apar ine ine primelor primelor k k elemente elemente din din irul irul A A . .
Funcia Apart (b,A,k) Este :
Apart := (k>0) i ( Apart(b,A,k-1) Sau (b=a
k
) )
Sf_Apart.
Apelul:
Apart(b,A,Card(A))
Apelul:
Max(X,n)
27 27/27 /27
| |347 347______ ______
| |16 16_______ _______
| |25 25_______ _______
. . . C
. . . C
_
_
1
1
/
/
5.
5.
10.
10.
20
20
1
1
2
2
|_________ |_________
| |1234567 1234567__ __
|_________ |_________
Se Se dau dau n n vagoane vagoane pe pe trei trei linii linii de de manevra manevra, in , in ordine ordine crescatoare crescatoare pe pe fiecare fiecare
linie linie. Sa se . Sa se depuna depuna toate toate pe pe o o singura singura linie linie precizata precizata, , mutand mutand cate cate un un singur singur
vagon vagon, , astfel astfel incat incat in in orice orice moment moment pe pe toate toate liniile liniile vagoanele vagoanele sa sa fie fie asezate asezate
crescator crescator! !
Super Tema Tema: :
Tema Tema ~ ~ probleme elementare (de baza) pt. un sir (vector/tablou) X1, X2, Xn: :
Suma, Nr, Medie / Cond (propr.),
Min/Max Poz.
Sortare (Ordonare),
Exista/Oricare Cond (propr.),

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