This shows you the differences between two versions of the page.
gp:laboratoare:01 [2025/02/03 21:40] 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 ==== | ||
+ | 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 ==== | ||
+ | === 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. |