This shows you the differences between two versions of the page.
|
gp:laboratoare:01 [2025/02/05 10:01] maria_anca.balutoiu |
gp:laboratoare:01 [2025/02/05 12:59] (current) maria_anca.balutoiu [Tasks] |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| ===== Laboratorul 01. Introducere ===== | ===== Laboratorul 01. Introducere ===== | ||
| ==== Setup Python ==== | ==== Setup Python ==== | ||
| + | Python este un limbaj de programare de nivel înalt, interpretat și versatil, ideal pentru o gamă largă de aplicații, oferind atât simplitate, cât și eficiență în dezvoltarea software. Unul dintre principalele avantaje ale Python este comunitatea sa, care contribuie la o colecție extinsă de biblioteci și framework-uri. Aceste resurse facilitează dezvoltarea rapidă a aplicațiilor în diverse domenii, precum: | ||
| + | * **Dezvoltare web.** Framework-uri precum Django și Flask permit crearea de aplicații web robuste și scalabile. | ||
| + | * **Data analytics și data science.** Biblioteci precum NumPy, pandas și Matplotlib sunt esențiale pentru manipularea și vizualizarea datelor. | ||
| + | * **Inteligență artificială și învățare automată.** Biblioteci precum TensorFlow și scikit-learn facilitează dezvoltarea de modele predictive și algoritmi de învățare automată. | ||
| + | * **Automatizare și scripting.** Python este adesea utilizat pentru automatizarea sarcinilor repetitive. | ||
| + | |||
| + | Python poate fi descărcat și instalat de [[https://www.python.org/|aici]]. | ||
| + | |||
| + | <note important>Odată instalat Python, pentru ușurință sugestia este să adăugați executabilul în path în variabile de mediu.</note> | ||
| + | |||
| + | ==== Mediu Virtual ==== | ||
| + | În Python, **venv** este un modul integrat care permite crearea de medii virtuale — spații izolate în care se pot instala pachete Python fără a afecta setările globale ale sistemului. Acest lucru este util pentru gestionarea dependențelor în proiecte diferite și pentru evitarea conflictelor între versiuni de pachete. | ||
| + | |||
| + | Pentru a crea un mediu virtual pentru proiectul curent, într-un terminal se merge în folderul proiectului și se rulează comanda: | ||
| + | |||
| + | <code> | ||
| + | python3 -m venv virtual_environment_name | ||
| + | </code> | ||
| + | |||
| + | Pe urmă, acest mediu virtual trebuie activat: | ||
| + | * Pe Unix/macOS: | ||
| + | <code> | ||
| + | source virtual_environment_name/bin/activate | ||
| + | </code> | ||
| + | * Pe Windows: | ||
| + | <code> | ||
| + | virtual_environment_name\Scripts\activate | ||
| + | </code> | ||
| + | |||
| + | Pentru a dezactiva mediul virtual și a reveni la mediul global, se rulează comanda: | ||
| + | <code> | ||
| + | deactivate | ||
| + | </code> | ||
| + | |||
| + | Avantajele utilizării **venv**: | ||
| + | * **Izolare.** Fiecare mediu virtual are propriul set de pachete, prevenind conflictele între proiecte | ||
| + | * **Gestionarea dependențelor.** Permite instalarea versiunilor specifice ale pachetelor necesare pentru un proiect, fără a interfera cu alte proiecte | ||
| + | * **Portabilitate.** Facilitează replicarea mediului de dezvoltare pe alte sisteme, asigurând consistența între diferite medii de lucru. | ||
| ==== Biblioteci Utile ==== | ==== Biblioteci Utile ==== | ||
| + | === Pygame === | ||
| + | Pygame este o bibliotecă open source pentru Python, concepută pentru dezvoltarea de jocuri video și aplicații multimedia. | ||
| + | |||
| + | Ce putem face cu Pygame: | ||
| + | * **Grafică.** Pygame permite desenarea de forme, imagini și animații, oferind suport pentru manipularea pixelilor și transformări grafice. | ||
| + | * **Sunet.** Biblioteca include funcționalități pentru redarea și controlul sunetelor și muzicii, permițând integrarea efectelor sonore și a coloanelor sonore în aplicații. | ||
| + | * **Evenimente și Interacțiune.** Gestionarea intrărilor de la tastatură, mouse și alte dispozitive de interacțiune este simplificată, facilitând crearea de interfețe interactive. | ||
| + | * **Gestionarea Sprite-urilor.** Pygame oferă suport pentru gestionarea sprite-urilor și a coliziunilor, esențiale în dezvoltarea jocurilor. | ||
| + | |||
| + | Pentru a folosit Pygame, este necesar să importăm biblioteca în proiect: | ||
| + | |||
| + | <code> | ||
| + | python3 -m pip install pygame | ||
| + | </code> | ||
| + | |||
| + | <code> | ||
| + | import pygame | ||
| + | |||
| + | # Initialize Pygame | ||
| + | pygame.init() | ||
| + | |||
| + | # Set window properties | ||
| + | width, height = 800, 600 | ||
| + | screen = pygame.display.set_mode((width, height)) | ||
| + | pygame.display.set_caption('Pygame Example') | ||
| + | |||
| + | # Set the drawing colors | ||
| + | white = (255, 255, 255) | ||
| + | red = (255, 0, 0) | ||
| + | |||
| + | # Set the coordinates and the dimensions of the square | ||
| + | x, y = 100, 100 # Upper-left corner | ||
| + | length = 50 # Length of the square | ||
| + | |||
| + | running = True | ||
| + | while running: | ||
| + | for event in pygame.event.get(): | ||
| + | if event.type == pygame.QUIT: | ||
| + | running = False | ||
| + | |||
| + | # Set background color | ||
| + | screen.fill(white) | ||
| + | |||
| + | # Draw a square | ||
| + | pygame.draw.rect(screen, red, (x, y, length, length)) | ||
| + | |||
| + | # Update the screen | ||
| + | pygame.display.flip() | ||
| + | </code> | ||
| + | |||
| + | === Pillow === | ||
| + | Pillow este o bibliotecă open source pentru Python, destinată procesării și manipulării imaginilor. | ||
| + | |||
| + | Ce putem face cu Pillow: | ||
| + | * **Suport extins pentru formate de fișiere.** Pillow poate deschide, manipula și salva o varietate largă de formate de imagine, inclusiv JPEG, PNG, BMP, GIF și TIFF. | ||
| + | * **Manipularea imaginilor.** Biblioteca permite efectuarea de operațiuni precum redimensionarea, decuparea, rotirea și aplicarea de filtre sau efecte asupra imaginilor. | ||
| + | * **Acces la nivel de pixel.** Pillow oferă posibilitatea de a accesa și modifica valorile individuale ale pixelilor, facilitând manipulări detaliate ale imaginilor. | ||
| + | * **Gestionarea transparenței și a măștilor.** Biblioteca suportă manipularea canalelor alfa și aplicarea măștilor pentru a gestiona transparența în imagini. | ||
| + | |||
| + | Pentru a folosit Pillow, este necesar să importăm biblioteca în proiect: | ||
| + | |||
| + | <code> | ||
| + | python3 -m pip install pillow | ||
| + | </code> | ||
| + | |||
| + | <code> | ||
| + | from PIL import Image | ||
| + | |||
| + | # Open image | ||
| + | image = Image.open('image.jpg') | ||
| + | |||
| + | # Resize image | ||
| + | resized_image = image.resize((800, 600)) | ||
| + | |||
| + | # Save the resized image | ||
| + | resized_image.save('resized_image.jpg') | ||
| + | </code> | ||
| ==== Tasks ==== | ==== Tasks ==== | ||
| + | |||
| + | <note tip>Pentru a genera un număr random, folosiți biblioteca **random**.</note> | ||
| + | |||
| - Generați un grid de culori alese aleator. | - Generați un grid de culori alese aleator. | ||
| - Generați aleator o hartă 2D folosind simboluri (~ pentru apă, # pentru munți, . pentru câmpii). Folosiți probabilități pentru a asigna tipul de teren generat. | - Generați aleator o hartă 2D folosind simboluri (~ pentru apă, # pentru munți, . pentru câmpii). Folosiți probabilități pentru a asigna tipul de teren generat. | ||
| - **Bonus 1.** Modificați primul task astfel încât gridul de culori să se regenereze la apăsarea unei taste. | - **Bonus 1.** Modificați primul task astfel încât gridul de culori să se regenereze la apăsarea unei taste. | ||
| - **Bonus 2.** Modificați al doilea task astfel încât să salvați harta de simboluri ca o imagine PNG. | - **Bonus 2.** Modificați al doilea task astfel încât să salvați harta de simboluri ca o imagine PNG. | ||