Laboratorul 0: Introducere

1. Introducere

Bine ati venit la primul laborator al materiei Structuri de Date si Algoritmi!

Laboratorul de astazi are ca scop acomodarea voastra cu toate resursele necesare pentru un parcurs lin al materiei. Dupa cum vedeti, pe dreapta sunt dispuse mai multe sectiuni. Pe langa cele sugestive (Cursuri si Laboratoare), avem resursele puse la dispozitie pentru a va ajuta in abordarea materiei, atat din punct de vedere administrativ, cat si practic.

2. Setup instrumente laborator

Materia Structuri de Date si Algoritmi va include laboratoare practice unde vom folosi limbajul C (nu C++), compilatorul GNU GCC (nu alte compilatoare). Puteti sa instalati ce instrumente de programare doriti, dar asigurati-va ca folositi limbajul/compilatorul corect pentru aceasta materie.

Indiferent de sistemul de operare pe care il folositi (Windows/Linux/MacOS), va sugeram sa folositi Code Blocks (https://www.codeblocks.org/).

3. Un program foarte simplu, de test

Pentru a testa instrumentele instalate vom rula un program foarte simplu care are urmatoarele fisiere sursa.

my_math.h
#ifndef MY_MATH_H
#define MY_MATH_H
 
int sum(int a, int b);
int multiply(int a, int b);
 
#endif
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;
}
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;
}

In linia de comanda Linux, pentru compilare in linia de comanda avem:

gcc main.c my_math.c -o main

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:

struct student{
    char *nume, *prenume;
    char id[6];   //id student
    double note[5]; // aici se salveaza notele obtinute in semestrul anterior
};

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).

sda-aa/laboratoare/01.txt · Last modified: 2021/04/19 08:12 by cristian.rusu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0