View
3
Download
0
Category
Preview:
Citation preview
ALGORITMI ȘI
PROGRAMRE
Laura Dioşan
Programare modulară
UNIVERSITATEA BABEŞ-BOLYAI
Facultatea de Matematică şi Informatică
Programare modulară
Conținut curs Programming in the large
Introducere în procesul de dezvoltare software
Programare procedurală
Programare modulară
Tipuri definite de utilizator
Principii de dezvoltare a softului
Testarea și inspectarea programelor
Programming in the small Recursivitate
Complexitatea algoritmilor
Algoritmi de căutare
Algoritmi de sortare
Metode de rezolvare a problemelor
Recapitulare
Octo
mbri
e,
2018
A&P
2
Programare modulară
Conținut
Programare modulară Concept
Definirea și importarea modulelor
Pachete
Organizarea unei aplicații pe module și pachete
Excepții Concept
Mecanism
Fișiere Concept și tipologie
Prelucrarea datelor de intrare și ieșire
Octo
mbri
e,
2018
A&P
3
Programare modulară
Programare modulară Concept
metoda de proiectare a unui algoritm prin folosirea modulelor
Bazată pe descompunerea problemei în subprobleme având în vedere: separarea conceptelor arhitecturi stratificate întreținerea și reustilizabilitatea codului coeziunea elementelor dintr-un modul cuplarea (legarea) modulelor între ele
Modulul unitate structurală
separată/independentă (dar cu posibilități de comunicare cu alte unități),
interschimbabilă colecție de funcții și variabile care implementează una sau mai
multe funcționalități bine definite facilitând gruparea funcționalităților înrudite dezvoltarea și întreținerea funcționalităților înrudite rezolvarea conflictelor de nume
Octo
mbri
e,
2018
A&P
4
Programare modulară
Programare modulară Definirea modulelor în Python
Modul = fișier care conține instrucțiuni și definiții Python:
Variabile – nume globale la nivelul modulului
Definiții de funcții – disponibile în acel modul și în alte module care importă modulul curent
Alte instrucțiuni – de inițializare
Un modul are
un nume (__name__)
__main__ - dacă modulul este executat de sine stătător
numeModul – dacă modulul este importat în alt modul
o descriere (__doc__)
Descrie conținutul modulului, scopul acestuia și modul de utilizare
o tabelă de simboluri care conține toate numele (variabile și funcții) introduse de modul – dir(modulName)
Octo
mbri
e,
2018
A&P
5
#... def gcd(a, b): #... def test_gcd(): assert gcd(0, 2) == 2 #... if __name__ == "__main__": test_gcd()
Programare modulară
Programare modulară Importarea modulelor în Python
Un modul Python poate importa alte module
import [path.]moduleName
elemente ale unui modul
From moduleName import itemName
Instrucțiunea import Introduce un modul (caută numele modului în:
Directorul curent (acolo unde s-a scris import...)
Lista de directoare specificată de PYTHONPATH
Lista de directoare specificată de PYTHONHOME)
Dacă modulul există
Dacă a fost deja importat – nu se face nimic
Altfel – variabilele și funcțiile definite în modul se inserează într-o nouă tabelă de simboluri (un nou spațiu de nume); în tabela de simboluri curentă se introduce (reține) doar numele modulului importat
Altfel
se aruncă o excepție ImportError
Octo
mbri
e,
2018
A&P
6
import utils.numericlibrary def sum(r1, r2):
#... divisor = utils.numericlibrary.gcd(numerator, denominator) rs = [numerator / divisor, denominator / divisor] return rs
from utils.numericlib import gcd print gdc(2,6)
Programare modulară
Programare modulară Importarea modulelor în Python
La importarea unui modul Variabilele și funcțiile definite în modul sunt inserate într-o nouă tabelă de
simboluri (un nou spațiu de nume)
Numele modulului (__name__) este inserat în tabela de simboluri curentă
Octo
mbri
e,
2018
A&P
7
#only import the name ui.console into the current symbol table import ui.console #invoke run by providing the doted notation ui.console of the package ui.console.run() #import the function name gdc into the local symbol table from utils.numericlib import gcd #invoke the gdc function from module utils.numericlib print gdc(2,6) #import all the names (functions, variables) into the local symbol table from rational import * #invoke the rational_add function from module rational print rational_sum([2,6],[1,6])
Programare modulară
Programare modulară Importarea modulelor în Python
Funcții utile dir(numeModul)
permite vizualizarea tabelei de simboluri aferentă unui modul
help(numeModul)
Informații despre modul, tipurile de date și funcțiile din modul
pydoc
Modul care permite salvarea documentației în format HTML
Recom: folosirea în linia de comandă
Octo
mbri
e,
2018
A&P
8
Programare modulară
Programare modulară Pachete în Python
Folosirea pachetelor o modalitate de structurare a codului
Dacă există multe module (fișiere) structurarea lor în directoare ierarhice
Ex. A.B înseamnă modulul B al pachetului A, adică directorul A conține un fișier B.py
Pachet Python = un director care conține module Python
modulul __init__.py – care conține instrucțiuni de inițializare
Importarea unui pachet Similară importării unui modul
Importarea modulelor dintr-un pachet import packageName.moduleName
from packageName.moduleName import itemName
Octo
mbri
e,
2018
A&P
9
Programare modulară
Programare modulară Organizarea unei aplicații pe module și pachete
Interfață cu utilizatorul
Funcții legate de interacțiunea cu utilizatorul
Operații de citire și afișare – doar aici pot să apară
Domeniu
Funcții legate de conținutul propriu-zis al aplicației
Infrastructură
Funcții reutilizabile cu mare potențial
Coordonator al aplicației
Inițializarea și pornirea aplicației
Exemplu
Aplicația RationalNumbers conține următoarele pachete și module:
app.py – modulul de pornire a aplicației
domain
rational.py – modul pt calcule cu numere raționale
utils
numericlibrary.py – modul pt calcule matematice
ui
console.py – modul pt interfața cu utilizatorul
Octo
mbri
e,
2018
A&P
10
Programare modulară
Recapitulare
Programare modulară
Octo
mbri
e,
2018
A&P
11
Programare modulară
Cursul următor Programming in the large
Introducere în procesul de dezvoltare software
Programare procedurală
Programare modulară
Tipuri definite de utilizator
Principii de dezvoltare a softului
Testarea și inspectarea programelor
Programming in the small Recursivitate
Complexitatea algoritmilor
Algoritmi de căutare
Algoritmi de sortare
Metode de rezolvare a problemelor
Recapitulare
Octo
mbri
e,
2018
A&P
12
Programare modulară
Materiale de citit şi legături utile
1. Limbajul Python http://docs.python.org/3/reference/index.html
2. Biblioteca standard Python http://docs.python.org/3/library/index.html
3. Tutorial Python http://docs.python.org/3/tutorial/index.html
4. Frentiu, M., H.F. Pop, Fundamentals of Programming, Cluj University Press, 2006, 220 pagini
5. Kent Beck.Test Driven Development: By Example. Addison-Wesley Longman, 2002 http://en.wikipedia.org/wiki/Test-driven_development
6. Martin Fowler. Refactoring. Improving the Design of Existing Code. Addison-Wesley, 1999 http://refactoring.com/catalog/index.html
Octo
mbri
e,
2018
A&P
13
Programare modulară
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
Lect. Dr. Molnar Arthur – www.cs.ubbcluj.ro/~arthur
Octo
mbri
e,
2018
14
A&P
Recommended