universitatea babeŞ-bolyai facultatea de …lauras/test/docs/school/fp/2018-2019/...principii de...
TRANSCRIPT
ALGORITMI ȘI
PROGRAMRE
Laura Dioşan
Recapitulare
UNIVERSITATEA BABEŞ-BOLYAI
Facultatea de Matematică şi Informatică
Conținut curs Introducere în procesul de dezvoltare software Programare procedurală Programare modulară Tipuri definite de utilizator Principii de dezvoltare a softului Testarea și inspectarea programelor Recursivitate Complexitatea algoritmilor Metode prin divizare Backtracking Algoritmi de căutare Algoritmi de sortare Recapitulare
Ianuarie, 2019 A&P - recapitulare 2
Dezvoltarea proceselor de programare
Ce este programarea?
Elementele de bază ale unui program Python
Sintaxa
Un simplu proces de dezvoltare bazat pe funcționalități
Ianuarie, 2019 A&P - recapitulare 3
Dezvoltarea proceselor de programare
Pași în rezolvarea unei probleme
Enunț pentru definirea problemei
Cerințe
Scenariu de utilizare a aplicației
Stabilirea funcționalităților și împărțirea lor pe iterații
Identificarea de activităţi (ale fiecărei funcţionalităţi) şi descrierea lor
Ianuarie, 2019 A&P - recapitulare 4
Programare procedurală
Paradigme de programare
Conținut și tipologie
Funcții
Definire
Apel
Vizibilitatea numelor
Cum se scrie o funcție
A&P - recapitulare Ianuarie, 2019 5
Programare procedurală
Cum se scriu funcții
dezvoltarea dirijată de teste (TDD – test driven development)
Implică crearea de teste (care clarifică cerințele) înainte de a scrie efectiv codul funcției
Pași pentru crearea unei noi funcții f()
1. Adăugarea unui/unor test/teste
2. Execuția testelor și verificarea dacă cel puțin unul dintre ele a eșuat
3. Scrierea corpului funcției
4. Rularea tuturor testelor
5. Refactorizarea codului
A&P - recapitulare Ianuarie, 2019 6
Programare modulară
Concepte și principii
Elemente Python pentru programarea modulară
Module
Definire
Importare
Pachete
Ianuarie, 2019 A&P - recapitulare 7
Exceptii Concept
Mecanism
Exemple
Ianuarie, 2019 A&P - recapitulare 8
Tipuri definite de utilizator
TAD
Exportarea unui nume (unui tip de date)
Definirea unui domeniu de valori pentru date
Definirea unei interfaţe (operaţiile TAD-ului)
Restricţionarea accesului la componentele TAD-ului (acces doar prin intermediul operaţiilor)
Ascunderea implementării unui TAD
Ianuarie, 2019 A&P - recapitulare 9
Tipuri definite de utilizator
TAD
Python clase
Definire
Atribute
Metode
Instantiere obiecte
Testare
Ianuarie, 2019 A&P - recapitulare 10
Principii de dezvoltare a aplicațiilor soft
Arhitectura unei aplicații
Descompunerea în funcționalități
Crearea unor module pentru:
Interfața utilizator
funcții privind interacțiunea cu utilizatorul
conține operații de citire și afișare
singurul modul care conține operații de citire/afișare
Domeniul aplicației
Funcții privind domeniul problemei
Infrastructură
Funcții utilitare cu potențial ridicat de reutilizare
Coordonator aplicație
Inițializează și pornește aplicația
Ianuarie, 2019 A&P - recapitulare 11
Principii de dezvoltare a aplicațiilor soft
Arhitectura unei aplicații
Nivel de prezentare
funcții, module, clase necesare interfeței utilizator
Nivel logic
funcțiile (funcționalitățile) aplicației generate de cazurile de utilizare
Nivel de infrastructură
funcții, module, clase utile în general
Coordonatorul aplicației
Ianuarie, 2019 A&P - recapitulare 12
Principii de dezvoltare a aplicațiilor soft
Principii de organizare a codului sursă
Principiul responsabilității
Principiul separarea preocupărilor
Principiul întreținerii și reutilizabilității
Principiul coeziunii și al cuplării
Exemple
Ianuarie, 2019 A&P - recapitulare 13
Testarea și inspectarea programelor
Concept si rol
Alegerea datelor de testare
Testare exhaustivă
Testare cu ajutorul cutiei negre
Testare cu ajutorul cutiei transparente
Ianuarie, 2019 A&P - recapitulare 14
Lucrul cu fișiere în Python
Prelucrarea fișierelor cu ajutorul obiectelor de tip fișier
Operații cu obiectele de tip fișier
Deschidere
Scriere
Citire
Închidere
Excepții
Ianuarie, 2019 A&P - recapitulare 15
Recursivitate
Concepte de bază
Mecanism
Avantaje și dezavantaje
Ianuarie, 2019 A&P - recapitulare 16
Complexități
De ce?
Analiza eficienței unui algoritm
Complexitatea temporală
Complexitatea spațială
Ianuarie, 2019 A&P - recapitulare 17
Căutare
Scop
Specificare
Tipologie
Căutare secvențială
Căutare binară
Ianuarie, 2019 A&P - recapitulare 18
Sortare
Scop
Specificare
Tipologie
Sortare prin selecție
Sortare prin inserție
Sortare prin metoda bulelor
Sortare rapidă
Ianuarie, 2019 A&P - recapitulare 19
Rezolvarea problemelor
Tipologia problemelor
Tipul problemei
Nr de solutii
Modul de construire a solutiei
Tipul solutiei
Tehnici de rezolvare a problemelor
Criterii pentru alegerea unei tehnici
Tipologie
Ianuarie, 2019 A&P - recapitulare 20
Tehnici de rezolvare a problemelor
Divide et impera
Ideea de bază
Mecanism & algoritm
Când se poate folosi
Caracteristici
Ianuarie, 2019 A&P - recapitulare 21
Tehnici de rezolvare a problemelor
Programare dinamica
Ideea de bază
Mecanism & algoritm
Când se poate folosi
Caracteristici
Ianuarie, 2019 A&P - recapitulare 22
Tehnici de rezolvare a problemelor
Genereaza si testeaza (backtracking)
Ideea de bază
Mecanism & algoritm
Când se poate folosi
Caracteristici
Ianuarie, 2019 A&P - recapitulare 23
Tehnici de rezolvare a problemelor
Greedy
Ideea de bază
Mecanism & algoritm
Când se poate folosi
Caracteristici
Ianuarie, 2019 A&P - recapitulare 24
Informaţiile prezentate au fost colectate din diferite surse de pe internet, precum şi din cursurile de Fundamentele Programării ţinute în anii anteriori de către:
Lect. Dr. Adriana Guran – www.cs.ubbcluj.ro/~adriana
Lect. Dr. Istvan Czibula - www.cs.ubbcluj.ro/~istvanc
Lect. Dr. Andreea Vescan -www.cs.ubbcluj.ro/~avescan
Lect. Dr. Ioan Lazăr -www.cs.ubbcluj.ro/~ilazar
Ianuarie, 2019 25 A&P - recapitulare