25
ALGORITMI ȘI PROGRAMRE Laura Dioşan Recapitulare UNIVERSITATEA BABEŞ-BOLYAI Facultatea de Matematică şi Informatică

UNIVERSITATEA BABEŞ-BOLYAI Facultatea de …lauras/test/docs/school/FP/2018-2019/...Principii de dezvoltare a aplicațiilor soft Arhitectura unei aplicații Nivel de prezentare funcții,

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: UNIVERSITATEA BABEŞ-BOLYAI Facultatea de …lauras/test/docs/school/FP/2018-2019/...Principii de dezvoltare a aplicațiilor soft Arhitectura unei aplicații Nivel de prezentare funcții,

ALGORITMI ȘI

PROGRAMRE

Laura Dioşan

Recapitulare

UNIVERSITATEA BABEŞ-BOLYAI

Facultatea de Matematică şi Informatică

Page 2: UNIVERSITATEA BABEŞ-BOLYAI Facultatea de …lauras/test/docs/school/FP/2018-2019/...Principii de dezvoltare a aplicațiilor soft Arhitectura unei aplicații Nivel de prezentare funcții,

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

Page 3: UNIVERSITATEA BABEŞ-BOLYAI Facultatea de …lauras/test/docs/school/FP/2018-2019/...Principii de dezvoltare a aplicațiilor soft Arhitectura unei aplicații Nivel de prezentare funcții,

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

Page 4: UNIVERSITATEA BABEŞ-BOLYAI Facultatea de …lauras/test/docs/school/FP/2018-2019/...Principii de dezvoltare a aplicațiilor soft Arhitectura unei aplicații Nivel de prezentare funcții,

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

Page 5: UNIVERSITATEA BABEŞ-BOLYAI Facultatea de …lauras/test/docs/school/FP/2018-2019/...Principii de dezvoltare a aplicațiilor soft Arhitectura unei aplicații Nivel de prezentare funcții,

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

Page 6: UNIVERSITATEA BABEŞ-BOLYAI Facultatea de …lauras/test/docs/school/FP/2018-2019/...Principii de dezvoltare a aplicațiilor soft Arhitectura unei aplicații Nivel de prezentare funcții,

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

Page 7: UNIVERSITATEA BABEŞ-BOLYAI Facultatea de …lauras/test/docs/school/FP/2018-2019/...Principii de dezvoltare a aplicațiilor soft Arhitectura unei aplicații Nivel de prezentare funcții,

Programare modulară

Concepte și principii

Elemente Python pentru programarea modulară

Module

Definire

Importare

Pachete

Ianuarie, 2019 A&P - recapitulare 7

Page 8: UNIVERSITATEA BABEŞ-BOLYAI Facultatea de …lauras/test/docs/school/FP/2018-2019/...Principii de dezvoltare a aplicațiilor soft Arhitectura unei aplicații Nivel de prezentare funcții,

Exceptii Concept

Mecanism

Exemple

Ianuarie, 2019 A&P - recapitulare 8

Page 9: UNIVERSITATEA BABEŞ-BOLYAI Facultatea de …lauras/test/docs/school/FP/2018-2019/...Principii de dezvoltare a aplicațiilor soft Arhitectura unei aplicații Nivel de prezentare funcții,

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

Page 10: UNIVERSITATEA BABEŞ-BOLYAI Facultatea de …lauras/test/docs/school/FP/2018-2019/...Principii de dezvoltare a aplicațiilor soft Arhitectura unei aplicații Nivel de prezentare funcții,

Tipuri definite de utilizator

TAD

Python clase

Definire

Atribute

Metode

Instantiere obiecte

Testare

Ianuarie, 2019 A&P - recapitulare 10

Page 11: UNIVERSITATEA BABEŞ-BOLYAI Facultatea de …lauras/test/docs/school/FP/2018-2019/...Principii de dezvoltare a aplicațiilor soft Arhitectura unei aplicații Nivel de prezentare funcții,

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

Page 12: UNIVERSITATEA BABEŞ-BOLYAI Facultatea de …lauras/test/docs/school/FP/2018-2019/...Principii de dezvoltare a aplicațiilor soft Arhitectura unei aplicații Nivel de prezentare funcții,

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

Page 13: UNIVERSITATEA BABEŞ-BOLYAI Facultatea de …lauras/test/docs/school/FP/2018-2019/...Principii de dezvoltare a aplicațiilor soft Arhitectura unei aplicații Nivel de prezentare funcții,

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

Page 14: UNIVERSITATEA BABEŞ-BOLYAI Facultatea de …lauras/test/docs/school/FP/2018-2019/...Principii de dezvoltare a aplicațiilor soft Arhitectura unei aplicații Nivel de prezentare funcții,

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

Page 15: UNIVERSITATEA BABEŞ-BOLYAI Facultatea de …lauras/test/docs/school/FP/2018-2019/...Principii de dezvoltare a aplicațiilor soft Arhitectura unei aplicații Nivel de prezentare funcții,

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

Page 16: UNIVERSITATEA BABEŞ-BOLYAI Facultatea de …lauras/test/docs/school/FP/2018-2019/...Principii de dezvoltare a aplicațiilor soft Arhitectura unei aplicații Nivel de prezentare funcții,

Recursivitate

Concepte de bază

Mecanism

Avantaje și dezavantaje

Ianuarie, 2019 A&P - recapitulare 16

Page 17: UNIVERSITATEA BABEŞ-BOLYAI Facultatea de …lauras/test/docs/school/FP/2018-2019/...Principii de dezvoltare a aplicațiilor soft Arhitectura unei aplicații Nivel de prezentare funcții,

Complexități

De ce?

Analiza eficienței unui algoritm

Complexitatea temporală

Complexitatea spațială

Ianuarie, 2019 A&P - recapitulare 17

Page 18: UNIVERSITATEA BABEŞ-BOLYAI Facultatea de …lauras/test/docs/school/FP/2018-2019/...Principii de dezvoltare a aplicațiilor soft Arhitectura unei aplicații Nivel de prezentare funcții,

Căutare

Scop

Specificare

Tipologie

Căutare secvențială

Căutare binară

Ianuarie, 2019 A&P - recapitulare 18

Page 19: UNIVERSITATEA BABEŞ-BOLYAI Facultatea de …lauras/test/docs/school/FP/2018-2019/...Principii de dezvoltare a aplicațiilor soft Arhitectura unei aplicații Nivel de prezentare funcții,

Sortare

Scop

Specificare

Tipologie

Sortare prin selecție

Sortare prin inserție

Sortare prin metoda bulelor

Sortare rapidă

Ianuarie, 2019 A&P - recapitulare 19

Page 20: UNIVERSITATEA BABEŞ-BOLYAI Facultatea de …lauras/test/docs/school/FP/2018-2019/...Principii de dezvoltare a aplicațiilor soft Arhitectura unei aplicații Nivel de prezentare funcții,

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

Page 21: UNIVERSITATEA BABEŞ-BOLYAI Facultatea de …lauras/test/docs/school/FP/2018-2019/...Principii de dezvoltare a aplicațiilor soft Arhitectura unei aplicații Nivel de prezentare funcții,

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

Page 22: UNIVERSITATEA BABEŞ-BOLYAI Facultatea de …lauras/test/docs/school/FP/2018-2019/...Principii de dezvoltare a aplicațiilor soft Arhitectura unei aplicații Nivel de prezentare funcții,

Tehnici de rezolvare a problemelor

Programare dinamica

Ideea de bază

Mecanism & algoritm

Când se poate folosi

Caracteristici

Ianuarie, 2019 A&P - recapitulare 22

Page 23: UNIVERSITATEA BABEŞ-BOLYAI Facultatea de …lauras/test/docs/school/FP/2018-2019/...Principii de dezvoltare a aplicațiilor soft Arhitectura unei aplicații Nivel de prezentare funcții,

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

Page 24: UNIVERSITATEA BABEŞ-BOLYAI Facultatea de …lauras/test/docs/school/FP/2018-2019/...Principii de dezvoltare a aplicațiilor soft Arhitectura unei aplicații Nivel de prezentare funcții,

Tehnici de rezolvare a problemelor

Greedy

Ideea de bază

Mecanism & algoritm

Când se poate folosi

Caracteristici

Ianuarie, 2019 A&P - recapitulare 24

Page 25: UNIVERSITATEA BABEŞ-BOLYAI Facultatea de …lauras/test/docs/school/FP/2018-2019/...Principii de dezvoltare a aplicațiilor soft Arhitectura unei aplicații Nivel de prezentare funcții,

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