This shows you the differences between two versions of the page.
sda-aa:laboratoare:01 [2021/03/01 21:30] cristian.rusu |
sda-aa:laboratoare:01 [2021/04/19 08:12] (current) cristian.rusu |
||
---|---|---|---|
Line 11: | Line 11: | ||
- | ==== Windows ==== | + | Indiferent de sistemul de operare pe care il folositi (Windows/Linux/MacOS), va sugeram sa folositi Code Blocks (https://www.codeblocks.org/). |
- | ==== Linux ==== | ||
- | ==== MacOS ==== | + | ===== 3. Un program foarte simplu, de test ===== |
+ | Pentru a testa instrumentele instalate vom rula un program foarte simplu care are urmatoarele fisiere sursa. | ||
+ | |||
+ | <code C my_math.h> | ||
+ | #ifndef MY_MATH_H | ||
+ | #define MY_MATH_H | ||
+ | |||
+ | int sum(int a, int b); | ||
+ | int multiply(int a, int b); | ||
+ | |||
+ | #endif | ||
+ | </code> | ||
+ | |||
+ | |||
+ | |||
+ | <code C my_math.c> | ||
+ | #include "my_math.h" | ||
+ | |||
+ | int sum(int a, int b) | ||
+ | { | ||
+ | return a + b; | ||
+ | } | ||
+ | |||
+ | int multiply(int a, int b) | ||
+ | { | ||
+ | return a * b; | ||
+ | } | ||
+ | </code> | ||
+ | |||
+ | |||
+ | <code C main.c> | ||
+ | #include <stdio.h> | ||
+ | #include "my_math.h" | ||
+ | |||
+ | int main() | ||
+ | { | ||
+ | int a = 10; | ||
+ | int b = 20; | ||
+ | |||
+ | printf("a + b = %d\n", sum(a, b)); | ||
+ | printf("a * b = %d\n", multiply(a, b)); | ||
+ | |||
+ | return 0; | ||
+ | } | ||
+ | </code> | ||
+ | |||
+ | In linia de comanda Linux, pentru compilare in linia de comanda avem: | ||
+ | |||
+ | <code> | ||
+ | gcc main.c my_math.c -o main | ||
+ | </code> | ||
+ | |||
+ | |||
+ | ===== 4. Git si github ===== | ||
+ | |||
+ | Daca compilarea s-a realizat corect, e timpul sa folosim un sistem de version control si apoi sa incarcam codul pe github.com | ||
+ | |||
+ | Intai, asigurati-va ca aveti instalat git (https://git-scm.com/downloads) si ca aveti un cont pe github.com. Daca lucrati de pe un Mac, git este deja instalat. Rulati comanda "git -- --version" pentru a verifica git-ul. | ||
+ | |||
+ | Vom lucra cu git/github in timpul laboratorului iar pentru un tutorial mai detaliat de git verificati resursele suplimentare. | ||
+ | |||
+ | |||
+ | |||
+ | ===== 5. Exercitiu ===== | ||
+ | Se da stuctura student: | ||
+ | |||
+ | <code C> | ||
+ | struct student{ | ||
+ | char *nume, *prenume; | ||
+ | char id[6]; //id student | ||
+ | double note[5]; // aici se salveaza notele obtinute in semestrul anterior | ||
+ | }; | ||
+ | </code> | ||
+ | |||
+ | Cerinte: | ||
+ | |||
+ | 1. In main, declarati un vector de student alocat dinamic. Populati-l cu date aleatoare (aveti un vector static de nume si prenume si faceti combinatii aleatorea asigurandu-va ca numele complet nu se repeta, asigurati-va ca id-ul generat este unic, generati note aleatoare). | ||
+ | |||
+ | 2. Scrieti o functie care scrie intr-un fisier studentii cu restanta astfel pe fiecare linie: id, nume, prenume, nr de restante | ||
+ | |||
+ | 3. Realizati o functie care sterge din vector toti studentii care au macar o restanta (realocand spatiul ocupat). Afisati vectorul rezultat. | ||
+ | |||
+ | 4. Realizati o functie care adauga in vector un student nou, pe o anumita pozitie (realocand spatiul ocupat). Afisati vectorul rezultat. | ||
+ | |||
+ | 5. Realizati o functie care modifica in vector un student (gasit dupa id) cu un alt student (generat aleator). | ||
+ | |||
+ | |||
+ | ===== 6. Resurse suplimentare pentru lucrul cu pointeri ===== | ||
+ | |||
+ | Pentru un tutorial foarte detaliat despre lucru cu pointer va sugerez sa verificati Pointers in C / C++ [Full Course] (https://www.youtube.com/watch?v=zuegQmMdy8M). | ||