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 programar ii 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 programării 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

C Fundamentele programării - cs.ubbcluj.roper/Fp -_-/Fp_1.pdf · Cunoasterea unor algoritmi pentru unele clase de probleme: operatii cu vectori, ... - Structura unui program

  • Upload
    lelien

  • View
    243

  • Download
    7

Embed Size (px)

Citation preview

Page 1: C Fundamentele programării - cs.ubbcluj.roper/Fp -_-/Fp_1.pdf · Cunoasterea unor algoritmi pentru unele clase de probleme: operatii cu vectori, ... - Structura unui program

11/27/27

Fundamentele programFundamentele programăăriiriiCC_1_1 / 5.10.2012/ 5.10.2012

1414--16 ~ 2 / I16 ~ 2 / I

VineriVineri

Fundamentele Fundamentele programarprogramariiiiMI1MI1Matematica informaticaMatematica informatica

Fundamentele Fundamentele programariiprogramarii111111MatematicaMatematica

SemestrulSemestrul 11

6 cr.C2+2+22+2+2+0 Fundamentele programăriiMLR5005

CrediteFinalizareOre: C+S+L+PDenumireCod

Date despre disciplinăDate despre disciplinăObligatorieReg. Disc.:CEvaluare:1Semestrul:1Anul de studiu:

OrarOrar

Page 2: C Fundamentele programării - cs.ubbcluj.roper/Fp -_-/Fp_1.pdf · Cunoasterea unor algoritmi pentru unele clase de probleme: operatii cu vectori, ... - Structura unui program

22/27/27

TimpulTimpul total total estimatestimat (ore (ore pepe semestrusemestru al al activităactivităţţilorilor didacticedidactice))

20Examinări 4Tutoriat

21Pregătire seminarii/laboratoare, teme, referate, portofolii şi eseuri7Documentare suplimentară în bibliotecă, pe platformele electronice de specialitate, …

14Studiul după manual, suport de curs, bibliografie şi notiţeoreDistribuţia fondului de timp:

28/28seminar/laborator28curs84Total ore din planul de învăţământ

2/2seminar/laborator2curs6Număr de ore pe săptămână

6Numărul de credite150Total ore pe semestru66Total ore studiu individual

Page 3: C Fundamentele programării - cs.ubbcluj.roper/Fp -_-/Fp_1.pdf · Cunoasterea unor algoritmi pentru unele clase de probleme: operatii cu vectori, ... - Structura unui program

33/27/27

Obiectivele disciplineiObiectivele disciplinei

Intelegerea notiunii de algoritm si invatarea limbajuluiPseudocod 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 sisisteme liniare, cautare, interclasare si sortare;

Formarea deprinderilor de concepere, executie, testare sipunere la punct a programelor Pascal cu structurile de date simple;

Formarea unui stil de programare.

Obiectivele specificeObiectivele specifice

Conceperea şi realizarea unui program într-un limbaj de nivel înalt, precum şi a documentaţiei.

Alegerea unui algoritm/subalgoritm pentru o problema/subproblema data, studierea complexităţii, demonstrarea corectitudinii şi verificarea şi validarea acestuia, precum şi întocmirea unei decumentatii tehnice.

Obiectivul general al Obiectivul general al disciplineidisciplinei

Page 4: C Fundamentele programării - cs.ubbcluj.roper/Fp -_-/Fp_1.pdf · Cunoasterea unor algoritmi pentru unele clase de probleme: operatii cu vectori, ... - Structura unui program

44/27/27

Continut:

4. 4. RecursivitateRecursivitate- Notiunea de Recursivitate- Recursivitate directa si indirecta

ImplementareaImplementarea structuristructuri de date de date staticestatice şşii dinamicedinamice- Tablou, şir de caractere, mulţime, înregistrare- Liste, arbori

3. 3. CodificareaCodificarea algoritmiloralgoritmilor PseudocodPseudocod îînn PascalPascal- Elemente de baza ale limbajului Pascal - Declaratii si Instructiuni- Structura unui program Pascal- Codificare

2. 2. SubalgoritmiSubalgoritmi ((PseudocodPseudocod) ) - Notiunea de subalgoritm- Parametrii formali- Definirea unui subalgoritm (functie si procedura)- Apelul unui subalgoritm- Importanta subalgoritmilor în programare

1. 1. AlgoritmiAlgoritmi sisi descriereadescrierea lorlor- Notiunea de algoritm- Variabila, tip, specificare- Limbajul Pseudocod, structura liniara, alternativa, repetitiva

Page 5: C Fundamentele programării - cs.ubbcluj.roper/Fp -_-/Fp_1.pdf · Cunoasterea unor algoritmi pentru unele clase de probleme: operatii cu vectori, ... - Structura unui program

55/27/27

… Continut:

8. 8. MetodeMetode generalegenerale de de elaborareelaborare a a algoritmiloralgoritmilor- 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 specificatii7. Dezvoltarea corecta a algoritmilor din specificatii- Algoritm abstract; Ideea de rafinare; Reguli de rafinare; Exemple

6. 6. CorectitudineaCorectitudinea algoritmiloralgoritmilor- 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 viataviata unuiunui 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

Page 6: C Fundamentele programării - cs.ubbcluj.roper/Fp -_-/Fp_1.pdf · Cunoasterea unor algoritmi pentru unele clase de probleme: operatii cu vectori, ... - Structura unui program

66/27/27

… Continut:

14. 14. AlgoritmiAlgoritmi de de cautarecautare sisi complexitateacomplexitatea lorlor- Specificarea problemei de cautare; Metode de cautare: parcurgere secventiala, cautare

binara; Complexitatea algoritmilor de cautareAlgoritmi de sortare si complexitatea lor

- Specificarea problemei de sortare; Metode de sortare (BubbleSort, SelectSort, InsertSort, QuickSort, MergeSort, …)

- Complexitatea algoritmilor de sortare

13. 13. ComplexitateaComplexitatea algoritmiloralgoritmilor- Definitia complexitatii; Compararea algoritmilor din punctul de vedere al eficientei;

Complexitatea structurala; …

12. Metode euristice12. Metode euristiceAlte metodeAlte metode: Metoda programarii dinamice; Metoda Branch and Bound

11. Metoda Backtracking11. Metoda Backtracking- Extinderi ale metodei Backtracking

10. 10. MetodaMetoda Greedy Greedy Metoda Divide et Impera

9. 9. TipuriTipuri AbstracteAbstracte de Date de Date - Specificarea unui TAD; Unit Pascal; Implementarea unui TAD în Pascal; Folosirea

unui TAD în programare

Page 7: C Fundamentele programării - cs.ubbcluj.roper/Fp -_-/Fp_1.pdf · Cunoasterea unor algoritmi pentru unele clase de probleme: operatii cu vectori, ... - Structura unui program

77/27/27

EvaluareaEvaluarea : :

Nota Nota finalăfinală se calculează conform ponderilor de mai sus, daca toatetoate notelenotele sunt >= 5 si prezentaprezenta esteeste conform conform regulamentuluiregulamentului (Pr.curs >= 75%, Pr.sem >= 75% si Pr.lab >= 90%).

10%10%

Documentatia realizată Programe predate

Documentatie siPrograme realizate

15%Lucrare de control (sem.)Scrierea de algoritmi si programeSeminarSeminar

//llaboratoraborator

50%15%

Examen scrisExamen practic (lab.)

Aplicarea noţiunilor teoretice în realizarea programelorRezolvarea problemelor

CursCurs

PPondere din ondere din nota finalănota finalăMMetode de evaluareetode de evaluareCriterii de evaluareCriterii de evaluareTip activitateTip activitate

Page 8: C Fundamentele programării - cs.ubbcluj.roper/Fp -_-/Fp_1.pdf · Cunoasterea unor algoritmi pentru unele clase de probleme: operatii cu vectori, ... - Structura unui program

88/27/27

BibliografieBibliografie : : 1. Frentiu, M., H.F. Pop, Fundamentals of Programming, Cluj University Press, 2006, 220 pagini2. 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-69. Livovschi, L., H.Georgescu, Sinteza si analiza algoritmilor, Editura St. si Enciclopedica,

Bucuresti, 1986.10. M.Frenţiu, I.Lazăr, Bazele Programării: Proiectarea Algoritmilor, 2000, Ed. Univ. Petru Maior,

Tg.Mureş 184 pagini ISBN 973-8084-06-711. F.Boian, M.Frenţiu, I.Lazǎr şi L.Tambulea, Informatica de bază, Ed.Universitǎţii "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 programării – notiţe de curs, http://www.cs.ubbcluj.ro/~per/Fp.html

Page 9: C Fundamentele programării - cs.ubbcluj.roper/Fp -_-/Fp_1.pdf · Cunoasterea unor algoritmi pentru unele clase de probleme: operatii cu vectori, ... - Structura unui program

99/27/27

1. Algoritmi si descrierea lor1. Algoritmi si descrierea lor

-- NotiuneaNotiunea de de algoritmalgoritm-- VariabilaVariabila, tip, , tip, specificarespecificare-- LimbajulLimbajul PseudocodPseudocod, ,

-structura liniara, -alternativa, -repetitiva

Page 10: C Fundamentele programării - cs.ubbcluj.roper/Fp -_-/Fp_1.pdf · Cunoasterea unor algoritmi pentru unele clase de probleme: operatii cu vectori, ... - Structura unui program

1010/27/27

FazeleFazele rezolvăriirezolvării uneiunei problemeprobleme cu cu calculatorulcalculatorul((ciclulciclul de de viataviata al al programuluiprogramului) :) :

Rezolvarea unei probleme cu ajutorul calculatorului presupuneparcurgerea următoarelor fazefaze:

- precizarea cerinţelor 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 obţinut (validare-beneficiar, verificarea-executor);- exploatarea şi întreţinerea programului (corectiva, perfectiva, adaptiva);- redactarea documentaţiei fiecăreia din fazele enumerate.

Page 11: C Fundamentele programării - cs.ubbcluj.roper/Fp -_-/Fp_1.pdf · Cunoasterea unor algoritmi pentru unele clase de probleme: operatii cu vectori, ... - Structura unui program

1111/27/27

SpecificaSpecificaţţieie : :

PredicatPredicat de de intrareintrare sau precondiprecondiţţieie φ(X): pentru a preciza datelepentru care problema are sens (pentru celelalte nu are sens să executămprogramul).

Var. de iesire

ZZ

Var. de intrare

XXProgram Program PPVar. de lucru

YY

PredicatPredicat de de ieieşşireire sau postcondipostcondiţţieie ψ(X,Z): pentru a preciza relarelaţţiaiadintre rezultatele Z şi datele iniţiale X. Acesta este corect pentru acelevalori a şi b ale vectorilor X şi Z pentru care rezultatele sunt b în cazul cânddatele iniţiale sunt a şi este fals în caz contrar.

Page 12: C Fundamentele programării - cs.ubbcluj.roper/Fp -_-/Fp_1.pdf · Cunoasterea unor algoritmi pentru unele clase de probleme: operatii cu vectori, ... - Structura unui program

1212/27/27

… Specificaţie :

Specificaţia problemei :- predicatul de intrare φ(X) – precondiprecondiţţieie şi- predicatul de ieşire ψ(X,Z) – postcondipostcondiţţieie.

cEx.: SăSă se se calculezecalculeze radical (r) radical (r) dintrdintr--un un numărnumăr real real pozitivpozitiv xx.Specificaţia problemei este:

precondiţia φ(X): "x>0" ,postcondiţia ψ(X,Z): "r2=x" .

CorectCorect:: SăSă se se calculezecalculeze radical din x cu o radical din x cu o eroareeroare absolutăabsolută maximămaximă εε datădată. Vectorul de intrare este X=(x,ε) iar specificaţia este:

(X): "x>0 şi ε>0" ;ψ(X,Z): "r2-x<ε" .

Page 13: C Fundamentele programării - cs.ubbcluj.roper/Fp -_-/Fp_1.pdf · Cunoasterea unor algoritmi pentru unele clase de probleme: operatii cu vectori, ... - Structura unui program

1313/27/27

DescriereaDescrierea algoritmiloralgoritmilor : :

Prin algoritmalgoritm putem înţelege o succesiune finită de operaţii. Acestapresupune executarea unor calcule într-o anumită ordineordine.

Un algoritmalgoritm este un text finit, o secvenţă finită de propoziţii ale unui limbajde descriere a algoritmilor. O propozipropoziţţieie a limbajului precizează o anumită regulăregulă de de calculcalcul.

Are urmatoarele trei caracteristici: generalitategeneralitate, , finitudinefinitudine şi unicitateunicitate ??

AlgoritmulAlgoritmul AA definedefineşştete o o funcfuncţţieie:

A : D RDescriereaDescrierea algoritmiloralgoritmilor se realizeaza prin mai multe limbajelimbaje de de descrieredescriere,

dintre care cele mai des folosite sunt: - schemeleschemele logicelogice; - limbajul PseudocodPseudocod.

Variabila (nume, domeniul D, valoare, semnificaţie, …)

Page 14: C Fundamentele programării - cs.ubbcluj.roper/Fp -_-/Fp_1.pdf · Cunoasterea unor algoritmi pentru unele clase de probleme: operatii cu vectori, ... - Structura unui program

1414/27/27

SchemeleSchemele logicelogice : :

Utilizeaza:- blocurile pentru calcule; - sagetile pentru ordinea lor.

Start

Citeste a, b, c

Tipăreste Re,Im Tipăreste x1,x21

Stop

Re:=-b / 2a

Im:=-/2a

<0 NuDa

Nu

:=b2-4ac

Mesaj a=0

1

Da

x2:=-b-

2a

x1:=-b+

2a

a=0

Page 15: C Fundamentele programării - cs.ubbcluj.roper/Fp -_-/Fp_1.pdf · Cunoasterea unor algoritmi pentru unele clase de probleme: operatii cu vectori, ... - Structura unui program

1515/27/27

LimbajulLimbajul PseudocodPseudocod : :

LimbajulLimbajul PseudocodPseudocod are două tipuri de propoziţii (pentru calcule): • standard (care au o structură fixă şi este formată cu ajutorul unor cuvinte cheie), • nestandard (care descriu părţi ale algoritmului încă incomplet elaborate,

nefinisate, asupra cărora 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 următoarelestructuri:

– secvenţială (formată dintr-o succesiune de propziţii simple), – alternativă (permite executarea anumitor ramuri în funcţie de anumite condiţii)– repetitivă (prin care putem execută aceleaşi propoziţii de mai multe ori).

Page 16: C Fundamentele programării - cs.ubbcluj.roper/Fp -_-/Fp_1.pdf · Cunoasterea unor algoritmi pentru unele clase de probleme: operatii cu vectori, ... - Structura unui program

1616/27/27

StructuraStructura generalăgenerală a a unuiunui algoritmalgoritm descrisdescris îînn PseudocodPseudocod ::

Algoritmul Nume Este : { Antetul algoritmului }. . . { Corpul “ }

Sfarşit_Algoritm. { Sfarşitul “ }

Un algoritm (în general) se desfăşoară în trei etapeetape :

- citirea datelor de intrare (iniţializarea datelor),

- efectuarea de calcule (prelucrarea datelor),- tipărirea rezultatelor (extragerea datelor de ieşire).

PrelucrarePrelucrare

Date de intrare

Date de iesire

Page 17: C Fundamentele programării - cs.ubbcluj.roper/Fp -_-/Fp_1.pdf · Cunoasterea unor algoritmi pentru unele clase de probleme: operatii cu vectori, ... - Structura unui program

1717/27/27

OperatiiOperatii ((propozitiipropozitii):):

Citirea datelor Date Listă_variabile_de_intrare;Tipărirea rezultatelor Rezultate Listă_expresii_de_ieşire;Atribuirea de valori unei var. [Fie] Variabilă := Expresie;Structuri alternative:

- cu o ramură Dacă Condiţie AtunciSecvenţăSf_Dacă ;

- cu doua ramuri Dacă Condiţie AtunciSecvenţă1

AltfelSecvenţă2Sf_Dacă ;

- cu mai multe ramuri Selectează Expresie DintreListă_Valori1 : Secvenţă1;Listă_Valori2 : Secvenţă2;

. . .Listă_Valorin : Secvenţăn[ Altfel Secvenţăn+1 ]Sf_Selectează;

Page 18: C Fundamentele programării - cs.ubbcluj.roper/Fp -_-/Fp_1.pdf · Cunoasterea unor algoritmi pentru unele clase de probleme: operatii cu vectori, ... - Structura unui program

1818/27/27

StructurileStructurile repetitive:repetitive:

Cu numar cunoscut de pasi: Pentru Varc := Li , Lf [ , Pas ] Execută

SecvenţăSf_Pentru;

Cu test initial:Cât_Timp Condiţie Execută

SecvenţăSf_Cât_Timp;

Cu test final:Repetă

SecvenţăPână_Când Condiţie;

Secvenţă

Nu

Condiţie Da

Secvenţă

Nu Condiţie

Da

Page 19: C Fundamentele programării - cs.ubbcluj.roper/Fp -_-/Fp_1.pdf · Cunoasterea unor algoritmi pentru unele clase de probleme: operatii cu vectori, ... - Structura unui program

1919/27/27

ExempluExemplu:: calculeazăcalculează produsulprodusul a a douădouă polinoamepolinoame P P şşii Q , date Q , date prinprin vectvect. . coefcoef..

Algoritmul Produs Este : { R:=PQ }

Date m,(Pi , i=0,m), n,(Qj , j=0,n); { m=gradul lui P, n=gradul lui Q }

Pentru k:=0,m+n Execută { m+n=gradul lui R }Rk:=0

Sf_Pentru;

Pentru i:=0,m ExecutăPentru j:=0,n Execută

Ri+j:=Ri+j+Pi*Qj

Sf_Pentru;Sf_Pentru;

Rezultate (Rk, k=0,m+n)

Sf_Algoritm.

Page 20: C Fundamentele programării - cs.ubbcluj.roper/Fp -_-/Fp_1.pdf · Cunoasterea unor algoritmi pentru unele clase de probleme: operatii cu vectori, ... - Structura unui program

2020/27/27

ExempluExemplu:: 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;Cât_Timp i<n Execută { i reprezintă al câtelea număr prim a fost găsit }

d:=2; { p este prim ?( se divide cu 2,3, ... )}Cât_Timp (d<Sqrt(p)) şi (p Mod d > 0) Execută

d:=d+1 {se caută divizori d =2,3,... Rad(p)}Sf_Cât_Timp;Dacă d>Sqrt(p) Atunci { dacă am trecut cu d de Rad(p) atunci p este prim ! }

Rezultate p; i:=i+1Sf_Dacă;Dacă p=2 Atunci p:=p+1 { Se verifică doar pentru }

Altfel p:=p+2 { numerele impare de la 3,... }Sf_Dacă;

Sf_Cât_TimpSf_Algoritm.

Page 21: C Fundamentele programării - cs.ubbcluj.roper/Fp -_-/Fp_1.pdf · Cunoasterea unor algoritmi pentru unele clase de probleme: operatii cu vectori, ... - Structura unui program

2121/27/27

ExempluExemplu:: determină cel mai mare numar n de patru cifre pentru care esteîndeplinită condiţia

Oglindit (n) + Suma_Cifrelor(n) = n + 99 (Oglinditul lui 123 este 321).

Algoritmul Număr Este : { Cel mai mare număr n de patru cifre : }n:=9999; { Ogl (n) + Sc (n) = n + 99 }

Repetăn:=n1;Cât:=n; Sc:=0; Ogl:=0; { Primul Cât este n }Repetă

Uc :=Cât Mod 10; { Determin Ultima cifră a numărului }Sc :=Sc + Uc; { Adun Ultima cifră la Suma cifrelor }Ogl :=Ogl *10+ Uc; { Adaug Ultima cifră la Oglindit }Cât :=[Cât / 10] { Sterg Ultima cifră din număr (Cât Div 10)}

Până_Când Cât=0;Până_Când (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

Page 22: C Fundamentele programării - cs.ubbcluj.roper/Fp -_-/Fp_1.pdf · Cunoasterea unor algoritmi pentru unele clase de probleme: operatii cu vectori, ... - Structura unui program

2222/27/27

SubalgoritmiSubalgoritmi: : rezolvărezolvă o o anumităanumită subproblemăsubproblemă

Apel: [Cheamă] Nume_Subalgoritm (Lista_parametri_actuali);

SubalgoritmSubalgoritmParametri de Intrare Parametri de iesire

Def.: Subalgoritmul Nume_Subalgoritm (Lista_parametri_formali) Este : {Antet}

. . . { Corp subalgoritm }

Sf_Subalgoritm. { sau Sf_Nume_Subalgoritm. }

ParametriParametri de de IntrareIntrare ExpresiiExpresiiParametriParametri de de iesireiesire VariabileVariabile

Page 23: C Fundamentele programării - cs.ubbcluj.roper/Fp -_-/Fp_1.pdf · Cunoasterea unor algoritmi pentru unele clase de probleme: operatii cu vectori, ... - Structura unui program

2323/27/27

ExempluExemplu:: pentru trei mulţimi date A, B şi C calculăm 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 yY ExecutăDacă yyXX Atunci R:=R{y} Sf_Dacă

Sf_Pentru

Sf_Reuniune.

R:=XYX , Y R

Subalgoritmul Reuninune determină mulţimea R = X Y astfel :R := X (Y \ X), adică depune în reuniune mai întâi elementele din mulţimea

X, la care apoi mai adaugă acele elemente din Y care nu aparaparţţinin lui X.

Page 24: C Fundamentele programării - cs.ubbcluj.roper/Fp -_-/Fp_1.pdf · Cunoasterea unor algoritmi pentru unele clase de probleme: operatii cu vectori, ... - Structura unui program

2424/27/27

FunctiiFunctii: ~ : ~ SubalgoritmSubalgoritm + Val. + Val. functieifunctiei

Apelul unei funcţii:se face scriind într-o expresie numele funcţiei urmat de lista parametrilor actuali.

… Nume_Funcţie (Listă_parametri_actuali) … { expr.instr.}

Def.: Funcţia Nume_Funcţie (Listă_parametri_formali) Este : { Antetul funcţiei }

. . .Nume_FuncNume_Funcţţieie := := ExpresieExpresie;; { Corpul funcţiei }

. . .Sf_Funcţie. { sau Sf_Nume_funcţie.}

ParametriParametri de de IntrareIntrare ExpresiiExpresiiParametriParametri de de iesireiesire VariabileVariabile

Page 25: C Fundamentele programării - cs.ubbcluj.roper/Fp -_-/Fp_1.pdf · Cunoasterea unor algoritmi pentru unele clase de probleme: operatii cu vectori, ... - Structura unui program

2525/27/27

ExempleExemple:: Există & Apart

Funcţia Există ( b, A, n, p ) Este :p:=1;Cât_Timp (p<=n) şi (b<>ap) Execută p:=p+1 Sf_Cât_Timp;Există := (p<=n)

Sf_Există.

Funcţia Apart (b,A) Este :p:=1; {Card(A)=|A|}Cât_Timp (p<=Card(A)) şi (b<>A[p]) Execută p:=p+1Sf_Cât_Timp;Apart := (p<=Card(A))

Sf_Apart.

Funcţia Card (A) Este :Card := a0

Sf_Card.

Dacă yX Atunci R:=R{y} Sf_Dacă;

Dacă Not Apart (Apart (y,Xy,X)) Atunci R:=R{y} Sf_Dacă;

Page 26: C Fundamentele programării - cs.ubbcluj.roper/Fp -_-/Fp_1.pdf · Cunoasterea unor algoritmi pentru unele clase de probleme: operatii cu vectori, ... - Structura unui program

2626/27/27

ExempluExemplu:: determinădetermină maximulmaximul dintrdintr--un un şşirir X cu n X cu n componentecomponente ..Funcţia Max (X,k) Este :

Dacă k=1 Atunci Max:=x1 {Consistenţa}Altfel Dacă Max(X,k-1) < xk Atunci Max:= xk

Altfel Max:= Max(X,k-1)Sf_Dacă

Sf_DacăSf_Max.

ExempluExemplu:: decide decide dacădacă b b aparaparţţineine primelorprimelor k k elementeelemente din din şşirulirul AA ..

Funcţia Apart (b,A,k) Este :Apart := (k>0) şi ( Apart(b,A,k-1) Sau (b=ak) )

Sf_Apart.

Apelul:Apart(b,A,Card(A))

Apelul:Max(X,n)

Page 27: C Fundamentele programării - cs.ubbcluj.roper/Fp -_-/Fp_1.pdf · Cunoasterea unor algoritmi pentru unele clase de probleme: operatii cu vectori, ... - Structura unui program

2727/27/27

||347347____________||1616______________||2525______________

. . . C. . . C__11 / / 5.5.10.10.20201122

|_________|_________||12345671234567____|_________|_________

Se Se daudau n n vagoanevagoane pepe treitrei liniilinii de de manevramanevra, in , in ordineordine crescatoarecrescatoare pepe fiecarefiecarelinielinie. Sa se . Sa se depunadepuna toatetoate pepe o o singurasingura linielinie precizataprecizata, , mutandmutand catecate un un singursingurvagonvagon, , astfelastfel incatincat in in oriceorice moment moment pepe toatetoate liniileliniile vagoanelevagoanele sasa fie fie asezateasezatecrescatorcrescator!!

Super TemaTema::

TemaTema ~ ~ 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.),