Tehnici de Programare

Curs
9.7/10 (3 voturi)
Domeniu: Calculatoare
Conține 11 fișiere: ppt
Pagini : 500 în total
Mărime: 691.13KB (arhivat)
Publicat de: Nelu Trif
Puncte necesare: 0
Profesor îndrumător / Prezentat Profesorului: Marian Gheorghe

Extras din curs

Defintii

Notiunea de recursivitate din programare este derivata in mod natural din notiunea de recusivitate din matematica, unde o notiune este definita recursiv daca in cadrul definitiei sale apare insasi notiunea ce se defineste.

Exemple:

-factorial

1 daca n=0

n!=

n *(n-1)! daca n>0

In programare, instrumentul necesar si suficient pentru a exprima programe recursive este subprogramul pentru ca subprogramul da un nume unei actiuni care poate fi invocata prin numele respectiv.

Recursivitatea poate fi directa atunci cand in corpul subprogramului apare apelul acelui subprogram, sau indirecta daca apelul apare in corpul altui subprogram care se apleleaza din primul subprogram.

Autoapelul provoaca o noua activare a aceluiasi subprogram, ceea ce presupune executia instructiunilor subprogramului, incepand cu prima instructiune a acestuia si pana la autoapel, cand se activeaza din nou subprogramul s.a.m.d. Ca atare, partea de inceput a subprogramului se poate executa de o infinitate de ori. Pentru a se evita o asemenea situatie trebuie ca autoapelul subprogramului sa fie conditionat de indeplinirea unei anumite conditii. Daca conditia de autoapel (C) este indeplinita, atunci subprogramul este reactivat (reapelat), in caz contrar sirul de activari (apeluluri) ale subprogramului se intrerupe si se executa secventele ramase de executat din subprogram, activate in ordine inversa activarii.

Apelul unui subprogram recursiv, ca si al unuia nerecursiv presupune alocarea de memorie pe stiva a variabilelor locale, a parametrilor si a adresei de revenire. Ca atare pentru a nu se ajunge in situatia depasirii stivei se recomanda utilizarea unei solutii recursive numai daca numarul autoapelului (adancimea recursivitatii) nu este mare.

In cazul utilizarii recursivitatii se mai recomanda utilizarea variabilelor globale pentru a se evita crearea unor dubluri de variabile pe stiva.

Avantajul recursivitatii este acela ca:

- reduce lungimea textului sursa;

- conduce la solutii clare in comparatie cu solutiile iterative.

Recursivitatea se recomanda:

- in problemele ale caror solutii pot fi definite in termeni recursivi;

- in cazul problemelor complexe rezolvate prin backtracking.

Intotdeauna o problema recursiva are si o rezolvare iterativa si invers.

Utilizarea tehnicilor recursive nu conduce intotdeauna la solutii optime. Ca atare, se recomanda o analiza a eficientei solutiei recursive si a celei nerecursive si alegerea solutiei celei mai avantajoase

Conținut arhivă zip

  • Tehnici de Programare
    • 1.recursivitate.ppt
    • 2.TP-liste.ppt
    • 3. Cursul - arbori.ppt
    • 4. Grafuri.ppt
    • 5 -Combinatorica.ppt
    • 6.Cautari_Sortari.ppt
    • 7.1.Metoda greedy.ppt
    • 7.2.METODA BACKTRACKING.ppt
    • 7.3.METODA DIVIDE-ET-IMPERA.ppt
    • 7.4,METODA BRANCH AND BOUND.ppt
    • 7.5.PROGRAMARE DINAMICA.ppt

Alții au mai descărcat și

Arhitectura calculatoarelor - configurația hardware a unui PC compatibil IBM

CAPITOLUL I CONFIGURATIA HARDWARE A UNUI P.C. COMPATIBIL I.B.M. Configuratia unui PC compatibil IBM Introducere Au trecut mai bine de doua...

Conceptele Fundamentale ale Limbajelor de Programare

INTRODUCERE Obiectul disciplinei: limbajele de programare Obiective: · Studiul conceptelor fundamentale care stau la baza proiectării...

Programare paralelă în sisteme distrbuite

Retelele de interconectare sunt de 2 tipuri: a)retele statice la care conexiunile intre noduri sunt fixe si punct la punct-transferul informatiei...

Informatică - cursuri pentru Fox Pro

I. Noţiuni, concepte şi metode utilizate în organizarea datelor Datele constituie materializarea, reprezentarea simbolică a informaţiilor (prin...

Introducere în PHP

Introducere in php Un fisier php poate contine text, etichete html si scripturi. Scripturile in fisierele php sunt executate de server. What is...

Proiectarea Sistemelor Informatice de Gestiune

Introducere În acest curs se vor preda unele probleme legate de managementul proiectelor informatice, despre modul de alegere a variantei de...

Webdesign

I. Consideraţii generale privind Internet şi World Wide Web La ora actuală în lume există milioane de calculatoare, care sunt folosite în cele mai...

Programarea orientată spre obiecte - limbajul Java

1. INTRODUCERE IN PROGRAMAREA ORIENTATA SPRE OBIECTE OBIECTE D. Un obiect este un un mod simplificat de a identifica într-un program un lucru, o...

Te-ar putea interesa și

Modelarea aplicațiilor financiar contabile

SISTEME INFORMAŢIONALE FINANCIAR-CONTABILE Modelarea aplicaţiilor financiar-contabile utilizând tehnici moderne de programare 1.1. Structura...

Metode de Programare cu Matrice Rare

Introducere Lucrarea cuprinde metode tradiţionale de calcul matriceal care sunt utilizate frecvent în practică, metode reanalizate şi revăzute...

Strategii de Negociere pentru Soluționarea Conflictelor în Organizația Militară

Introducere Evoluţiile actuale ale organizării organizaţiilor în conexiune cu problematica funcţionalităţii lor au scos în evidenţă necesitatea...

Tehnici de Programare

PREZENTARE GENERALE In proiectul urmator am creat o baza de date cu referire la un hotel (ANGELA). Baza de date este impartita in doua fisiere:...

Algoritmi de Calcul

Capitolul I Sistem Informaţional – Sistem Informatic I.1. Sistemul Informaţional. Un sistem poate fi privit ca un ansamblu de elemente...

Algoritmi și Structuri de Date

Introducere: Semiotica se ocupã cu studiul semnelor în natura si în societate. Semnul nu este o calitate în sine a unui obiect, ci o functie pe...

Pachete Software SAS-IML

CAPITOLUL I: INTRODUCERE ÎN LIMBAJUL SAS/IML 1.1Scurtă descriere a limbajului SAS/IML Acronimul IML este abrevierea expresiei “limbajul...

Tehnici de Programare

LIMBAJUL DE PROGRAMARE JAVA Java este un limbaj de programare de nivel înalt, dezvoltat de JavaSoft, companie în cadrul firmei Sun Microsystems....

Ai nevoie de altceva?