This shows you the differences between two versions of the page.
programare:laboratoare:lab01 [2025/10/10 17:06] darius.neatu [Obiective] |
programare:laboratoare:lab01 [2025/10/10 19:12] (current) darius.neatu [Interacțiunea program-utilizator] |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ===== PCLP Suport Teoretic pentru Laborator: Introducere. Unelte de programare. Configurare ===== | + | ===== Laborator01: Introducere. Unelte de programare. Configurare ===== |
==== Obiective ==== | ==== Obiective ==== | ||
Line 247: | Line 247: | ||
* ''puts(zona)'' - afișează la terminalul standard șirul de caractere din zona dată ca parametru, până la caracterul ''null'' (''\0''), care va fi înlocuit prin caracterul linie nouă. Funcția returnează codul ultimului caracter din șirul de caractere afișate sau ''-1'' în caz de eroare. | * ''puts(zona)'' - afișează la terminalul standard șirul de caractere din zona dată ca parametru, până la caracterul ''null'' (''\0''), care va fi înlocuit prin caracterul linie nouă. Funcția returnează codul ultimului caracter din șirul de caractere afișate sau ''-1'' în caz de eroare. | ||
- | <hidden> | ||
- | ===== Exerciții laborator CB/CD ===== | ||
- | Urmați indicațiile împreună cu asistenul de la laborator. | ||
- | |||
- | |||
- | ** Desfăsurător laborator introducere:** | ||
- | * asistentul se prezintă, spune cum îl cheamă, cum preferă să fie contactat și câteva lucruri despre experiența lui în domeniu | ||
- | * studenții sunt puși pe rând să se prezinte, să spună de la ce liceu/oraș vin, ce experiență anterioară au cu programarea, dacă au făcut C/C++ în liceu (pentru a îi remarca pe cei care nu au făcut asta și pentru a îi ajuta mai mult la început), și, mai ales, ce așteptări au și ce i-a motivat să vină aici | ||
- | * experiența spune că majoritatea studenților au făcut C/C++ în liceu | ||
- | * asistentul poate continua discuția pentru încă câteva minute, pe baza a ceea ce observă din discuțiile anterioare | ||
- | * asistentul prezintă regulamentul, punctajul și îi pune să semneze declarația anti-copiat | ||
- | |||
- | ** Hands-on: ** | ||
- | * asistentul va scrie împreună cu studenții un program Hello World pe tablă; întreabă, studenții răspuns... construiește împreună și _explică_ după ce notează pe tablă pentru a putea înțelege de ce sunt lucrurile astfel și cei care nu știu | ||
- | * orice program are în mod obligatoriu funcția **main** | ||
- | * cum definim funcția main? | ||
- | * pentru a afișa un mesaj folosim printf. | ||
- | * se vor explica **printf** și **scanf** | ||
- | * trebuie să punem return 0; de ce? ce înseamnă 1? ce se întâmpla dacă puneam void la main? de ce punem int? | ||
- | * #include<stdio.h>, stdlib.h... ce sunt bibliotecile? de ce? | ||
- | * după ce toate lucrurile sunt lămurite, asistentul îi pune pe studenți să încerce să scrie și ei în mod practic; | ||
- | * pentru că e prima dată când lucrează sub Linux (pentru majoritatea), vor fi ghidați pas cu pas | ||
- | * pentru început vor fi puși să deschidă un terminal | ||
- | * vor tasta comanda **ls** | ||
- | * vor tasta comanda **pwd** | ||
- | * vor tasta comanda **cd Desktop** | ||
- | * vor tasta din nou ls și pwd | ||
- | * vor tasta comanda **cd ..** | ||
- | * li se va explica pe scurt structura de fișiere/directoare | ||
- | * pentru început vor deschide un editor: | ||
- | * tastați comanda: **gedit** | ||
- | * ce observați că se întâmplă în terminal? rulați comanda ls | ||
- | * vor închide editorul | ||
- | * vor tasta comanda: **gedit &** | ||
- | * ce observați că se întâmplă în terminal? rulați comanda ls | ||
- | * vor fi încurajați să folosească varianta asta | ||
- | * li se va spune că vor înțelge mai pe larg simbolul **&** la USO | ||
- | * în editorul deschis, vor fi puși să salveze fișierul nou creat în home-ul utilizatorului student cu numele **hello.c** | ||
- | * vor fi puși să scrie un program care citește un număr natural și îl afișează | ||
- | * asistentul va trece pe la fiecare și se va asigura că cel puțin pare că toată lumea a procedat corect | ||
- | * dacă sunt observații, le va face punctual, fiecăruia | ||
- | * dacă o observație se repetă, o va face în mod generic | ||
- | * vor fi puși să salveze din nou | ||
- | * li se va explica comanda **gcc**, cu prezentarea param **-o** și **-Wall** | ||
- | * vor rula | ||
- | * asistentul se va asigura că toată lumea a procedat corect | ||
- | |||
- | Dacă mai e timp, se poate da o problemă, fie de mai jos, fie alta, fie se poate discuta mai mult despre așteptările lor și despre cum ar fi bine să fie proactivi și să se implice în diverse cursuri/activități extracurriculare. | ||
- | </hidden> | ||
- | |||
- | <hidden> | ||
- | ===== Probleme ===== | ||
- | |||
- | - Compilați programul din laborator ([[http://ocw.cs.pub.ro/courses/_export/code/programare/laboratoare/lab01?codeblock=0|hello.c]]) utilizând ''gcc''. | ||
- | * folosiți un fișier de tip ''makefile'' | ||
- | * executabilul se va numi ''hello'' | ||
- | - Într-un director care conține fișierul ''hello.c'' și **nu** conține niciun fișier de tip ''makefile'' rulați comanda: <code>make hello</code> Ce observați? | ||
- | - Se citește de la tastatură un număr natural în baza 10. Să se afișeze în bazele 8, 10 și 16. | ||
- | - Se citesc de la tastatură două numere reale. Să se afișeze suma, diferenta și media lor cu precizie de 5 zecimale exacte. | ||
- | - Să se calculeze (folosind formule matematice; nu instrucțiuni repetitive) și să se afișeze sumele (''n'' se va citi de la tastatura): | ||
- | * \begin{eqnarray*}& & S_1 = \sum_{k=0}^n {k}\end{eqnarray*} | ||
- | * \begin{eqnarray*}& & S_2 = \sum_{k=0}^n {k^2}\end{eqnarray*} | ||
- | - Să se determine minimul și maximul a două numere folosind funcția matematiă ''fabs''. | ||
- | * afișați rezultatul cu două zecimale | ||
- | * **Atenție!** Trebuie să includeți antetul ''math.h'' și să compilați cu opțiunea ''-lm'' | ||
- | - Se citesc de la tastatură două numere reale. Să se afișeze ''EQ'' dacă cele două numere sunt egale cu precizie de 4 zecimale; în caz contrar se va afișa mesajul ''NOT EQ''. | ||
- | |||
- | </hidden> | ||
- | |||
- | <hidden> | ||
- | ==== Extra ==== | ||
- | * [[https://github.com/cs-pub-ro/ComputerProgramming/blob/master/Laboratories/Lab1/cheatsheet.pdf|Cheatsheet]] | ||
- | |||
- | |||
- | ==== Soluții ==== | ||
- | |||
- | {{:programare:laboratoare:1-solutions.zip|}} | ||
- | </hidden> |