UNIVERSITATEA BABEŞ-BOLYAI Facultatea de …lauras/test/docs/school/FP/2018-2019/...Principii de...

Preview:

Citation preview

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

Recommended