Top Banner

of 47

Indrumar de Laborator PC

Oct 07, 2015

Download

Documents

Andrei Andres

baze C++
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript

Programarea calculatoarelorColecie de lucrri practice de laborator i aplicaii

Colectiv:Conf.dr. Rotar Corina

Asist.univ.dr. Brluiu AdrianaContracoperta

Cuprins

Programarea. Etapele programrii. Definirea algoritmilor. Descrierea algoritmilor. Scheme logice5

Descrierea algoritmilor folosind scheme logice: structuri alternative7

Descrierea algoritmilor folosind scheme logice: structuri repetitive9

Descrierea algoritmilor folosind limbajul pseudocod13

Descrierea limbajului C. Variabile, tipuri predefinite. Uniti sintactice. Operanzi. Expresii. Apelul funciilor de intrare-ieire.19

Limbajul C. Instruciuni. Instruciunea decizional if. Instruciunea switch...case.21

Descrierea limbajului C. Instruciuni repetitive. (while, do...while, for).25

Limbajul C. Tablouri. Declararea i utilizarea tablourilor unidimensionale. 31

Limbajul C. Tablouri bidimensionale (II). Parcurgerea tablourilor. Metode de cutare.35

Limbajul C. Tablouri: metode de sortare. 37

Limbajul C. Tablouri: metode de sortare (II). 41

Limbajul C. Exerciii cu tablouri.45

Recapitulare47

IntroducerePrezentul material de laborator se adreseaz tuturor celor care doresc s experimenteze studiului programrii calculatoarelor. Scopul acestei lucrri este acela de a pune la dispoziia studenilor de la specializrile de Electronic aplicat (EA) un ndrumar de lucrri, cu scopul de a coordona planul de munc specific, n vederea obinerii de competene conform fielor disciplinelor asociate.Competene profesionaleAplicarea cunotinelor, conceptelor i metodelor de baz privitoare la arhitectura sistemelor de calcul, microprocesoare, microcontrolere, limbaje i tehnici de programare. Descrierea adecvat a paradigmelor de programare i a mecanismelor de limbaj specifice, precum i identificarea diferenei dintre aspectele de ordin semantic i sintactic. Descrierea funcionrii unui sistem de calcul, a principiilor de baz ale arhitecturii microprocesoarelor i microcontrolerelor de uz general, a principiilor generale ale programrii structurate.

Utilizarea unor limbaje de programare de uz general i specifice aplicaiilor cu microprocesoare i microcontrolere; explicarea funcionrii unor sisteme de control automat care folosesc aceste arhitecturi i terpretarea rezultatelor experimentale.

Rezolvarea problemelor practice concrete care includ elemente de structuri de date i algoritmi, programare i utilizare de microprocesoare sau microcontrolere.

Elaborarea de programe intr-un limbaj de programare general si/sau specific, pornind de la specificarea cerinelor si pana la execuie, depanare si interpretarea rezultatelor n corelaie cu procesorul utilizat.Obiectivele disciplineiObiectivul general al disciplineiDezvoltarea capacitii studentului de a dezvolta aplicaii software dedicate rezolvrii problemelor. Dezvoltarea abilitailor de a concepe programe de complexitate mica-medie n limbaje de programare de nivel nalt. Crearea unui stil de programare riguros i eficient

Obiectivele specificeDezvoltarea abilitaii studentului de a gestiona eficient informaiile prin tipuri de date si de a concepe in mod riguros algoritmii de prelucrare a acestora. ntocmirea unei documentaii coerente pe marginea aplicaiilor de complexitate mica.

Lucrarea 1.Programarea. Etapele programrii. Definirea algoritmilor. Descrierea algoritmilor. Scheme logice

Programarea reprezint activitatea complex de elaborare a programelor. Aceast activitate implic parcurgerea mai multor etape:a. Analiza problemei: identificarea celor dou elemente eseniale ale formulrii unei probleme: datele de intrare i datele de ieire.b. Proiectarea algoritmului: programatorul va identifica metoda de rezolvare a problemei date i va dezvolta algoritmul corespunztor. c. Traducerea n limbaj de programare (implementarea): este etapa n care se va efectua o traducere n limbaj de programare a descrierii algoritmului rezultat n etapa de proiectare.d. Testarea: execuia repetat pentru o mulime de date de intrare (date de test) i verificarea corectitudinii rezultatelor oferite. e. ntreinerea este ultima etap a programrii i const din aciuni de actualizare a produsului final i de asisten oferit beneficiarului. Schemele logiceSchemele logice sunt reprezentri grafice ale algoritmilor informatici construite pe baza unei mulimi de simboluri grafice conectate prin intermediul sgeilor. Mulimea de simboluri grafice i semnificaia acestora este prezentat n continuare:a. Simbolurile delimitatoare: avnd rolul de a marca nceputul i sfritul schemei logice, corespunde momentelor de start i stop ale algoritmului.

b. Simboluri de intrare-ieire corespunztoare operaiilor de intrare-ieire prin care se realizeaz comunicarea cu exteriorul sistemului de calcul virtual.

c. Simboluri de atribuire - calcul pentru reprezentarea operaiilor de calcul i atribuire. Detaliile referitoare la operaii sunt nscrise n interiorul blocului.

Exerciii:1. S se realizeze schema logic a unui algoritm care citete un numr de la tastatur i-l afieaz pe ecran.

2. S se realizeze schema logic a unui algoritm care citete dou numere de la tastatur i afieaz pe ecran suma lor.Lucrarea 2.Descrierea algoritmilor folosind scheme logice: structuri alternative

Simbolul de decizie utilizat pentru reprezentarea operaiilor de decizie. Sunt simboluri cu o singur intrare i cel puin dou ieiri.

Exemplu:Algoritmul de determinare a soluiilor ecuaiei de gradul 2: .

Rezolvarea problemei presupune tratarea celor 4 cazurilor identificate n funcie de datele de intrare furnizate: 1. rdcinile ecuaiei sunt reale

2. ecuaia de gradul II nu are rdcini reale

3. ecuaia este de gradul I

4. ecuaia este imposibil

Exerciii:1. S se realizeze schema logic a unui algoritm care citete dou numere de la tastatur i afieaz maximul dintre cele dou numere citite.

2. S se realizeze schema logic a unui algoritm care citete dou numere de la tastatur i afieaz pe ecran minimul dintre cele dou numere citite.

3. S se realizeze schema logic a unui algoritm care verific dac dou numere citite de la tastatur sunt egale.

4. S se realizeze schema logic a unui algoritm care rezolv ecuaia de gradul I cu coeficienii citii de la tastatur.

Lucrarea 3.Descrierea algoritmilor folosind scheme logice: structuri repetitiveUtilizarea corect a simbolurilor grafice permite descrierea oricrui algoritm informatic. Exist trei structuri fundamentale: structura secvenial, structura alternativ, structura repetitiv, i sunt descrise prin blocuri de simboluri logice astfel:Denumire structurReprezentare graficSemnificaie

Structura secvenialExecuia secvenial a operaiilor descrise n simbolurile de calcul:

S1, Sn

Structura alternativExecut secvena S1 dac condiia Cond este adevrat SAU execut secvena S2 dac Cond este fals

Execut secvena S dac condiia Cond este adevrat SAU nu execut secvena S dac Cond este fals.

Structura repetitivStructura repetitiv precondiionat:

Ct timp condiia Cond rmne adevrat repet execuia secvenei S

Structura repetitiv postcondiionat:

Repet execuia secvenei S ct timp condiia Cond rmne adevrat

Observaie: Diferena dintre structurile repetitive precondiionat i postcondiionat const n poziia simbolului de decizie corespunztor etapei de verificare a condiiei de continuare a execuiei blocului:

structura precondiionat presupune iniial verificarea condiiei i apoi execuia secvenei

structura postcondiionat presupune execuia secvenei i apoi verificarea condiieiAceast diferen va genera un numr minim de repetri a secvenei S diferit pentru cele dou structuri: minim 0 execuii pentru structura precondiionat i minim 1 execuie a secvenei n structura postcondiionat, n situaia n care de la prima evaluare a condiiei aceasta este fals..

Exemple: Algoritmul de determinare a produsului primelor n numere naturale.

Algoritmul de determinare a celui mai mare divizor comun a dou numere:

Exerciii:1. Algoritmul de determinare a sumei primelor n numere naturale pare.2. Algoritmul de determinare a sumei primelor n numere naturale impare.Lucrarea 4.Descrierea algoritmilor folosind limbajul pseudocodPseudocodul este un limbaj standardizat intermediar ntre limbajul natural i limbajul de programare. Descrierea algoritmilor cu ajutorul limbajului pseudocod nltur din neajunsurile utilizrii schemelor logice, fiind mult mai flexibil i natural dect acestea. n plus, descrierea n pseudocod permite convertirea cu uurin a algoritmilor astfel exprimai ntr-un limbaj de programare.

Exist o concordan ntre simbolurile grafice ale schemelor logice i propoziiile limbajului pseudocod. Tabelul urmtor prezint concordana dintre descrierea grafic i propoziiile pseudocod pentru operaii specifice algoritmilor:

Schema logicPseudocod

Algoritmul NUME-ALGORITM este:

Sfrit NUME-ALGORITM sau SfAlgoritm

Citete a1,a2,,an

Tiprete a1,a2,,an

Limbajul pseudocod, pentru a uura traducerea ulterioar a algoritmului n limbaj de programare, permite folosirea unei propoziii standard echivalent uneia dintre instruciunile populare ale limbajelor de programare. Aceasta propoziie corespunde unei structuri repetitive cu numr cunoscut de repetri i se descrie astfel:

Schema logicPseudocod

Pentru var de la I la F cu pasul pas

Execut SSfrit Pentru- structura ciclic cu numr cunoscut de repetri

Tabelul urmtor prezint modul de descriere a structurilor fundamentale n pseudocod: Structurile fundamentaleSchema logicPseudocodLimbaj natural

Structura secvenial[Execut] S1

...

[Execut] SnExecut secvenial blocurile de calcul

S1, S2,Sn

Structuri alternativeDac Cond atunci

Execut S1Altfel

Execut S2SfDacDac condiia este adevrat atunci se execut blocul S1, altfel se execut blocul S2.

Dac Cond atunci

Execut SSf DacDac condiia este adevrat atunci se execut blocul S1.

Structuri repetitiveCttimp Cond

Execut SSfCttimpCttimp condiia Cond este adevrat se repet blocul S.

Repet Execut SPncnd CondSe repet blocul S pn cnd condiia Cond devine adevrat.

Exemple:Algoritmul de determinare a soluiilor ecuaiei de gradul 2: . Algoritm EcuaieGradII este:Citete a, b, c Dac a 0 atunci

Dac b 0 atunci

x = -c / b

Tiprete Sol. Ec. grad I,x

Altfel

Tiprete Imposibil de rezolvat

SfDac

Altfel

= b2-4ac

Dac 0 atunci

Tiprete x1,x2

Altfel

Tiprete Rdcini complexe

SfDac

SfDac

Sfrit EcuaieGradII

Algoritmul de determinare a produsului primelor n numere naturale.Algoritm Factorial este:Citete n

P:=1Pentru i de la 1 la n cu pasul 1

Execut P:=P * iSfrit Pentru

Tiprete PSfrit Factorial

Algoritmul de determinare a celui mai mare divizor comun a dou numere.Algoritm Euclid este:

Citete a,b

rest = a modulo b

Cttimp (rest 0)

a = b

b = rest

rest = a modulo b

Sfrit cttimp

Tiprete b

Sfrit Euclid

Exerciii:S se descrie n limbajul pseudocod algoritmii pentru rezolvarea urmtoarelor probleme:1. S se citeasc un numr de n valori i s se determine cea mai mic valoare citit.

2. S se rezolve sistemul de 2 ecuaii liniare cu 2 necunoscute.3. S se citeasc n valori i s se calculeze media aritmetic a acestora.Lucrarea 5.Descrierea limbajului C. Variabile, tipuri predefinite. Uniti sintactice. Operanzi. Expresii. Apelul funciilor de intrare-ieire.Variabil:

are un nume care o identific (acest nume este exprimat printr-un identificator)

are asociat o locaie de memorie n care se regsete valoare curent, coninutul acestei locaii de memorie se poate schimba

are un anumit tip de date, care exprim natura i dimensiunea valorilor pe care le iaRegul: ntr-un program C, toate datele (variabile) trebuie declarate pentru a putea fi folosite. Prin declararea unei date se nelege precizarea tipului datei respective i stabilirea identificatorului. Tipul datei ne spune domeniul valorilor datei ct i lungimea de reprezentare intern. Declararea datelor se face prin instruciuni de declarare de tip de date:::= ;unde: poate fi un tip predefinit (vezi lista tipurilor predefinite n C), un tip definit de programator sau tipul special void (tip nedefinit).Exemple: int a,b,c; // declararea a trei variabile simple de tip ntreg

float var; //declararea unei variabile simple de tipul real, virgul flotant n simpl precizie

char ch ; // declararea unei variabile de tip caracter

Apelul funciilor de intrare - ieireOperaiile de intrare-ieire (citirea datelor de intrare i afiarea rezultatelor) nu se realizeaz prin instruciuni ale limbajului C, ci prin apelarea unor funcii speciale, definite n bibliotecile de funcii ale limbajului C.Funciile printf, scanf- printf i scanf sunt funcii predefinite de intrareieire definite n biblioteca stdioPentru a putea folosi aceste funcii ntr-un program C este necesar n prealabil specificarea prin directiv de preprocesare a fiierului antet (header) ce conine prototipurile acestora:

#include //la nceputul programului surs

Prin apelul funciei printf se realizeaz afiarea pe ecran a mesajelor, datelor, valorilor unor variabile sau rezultate finale sau intermediare ale programului.Sintaxa apelului funciei printf:printf(sir de formatare, expr1, expr2, )unde:

expr1, expr2, sunt expresii separate prin virgul i pot reprezenta variabile, constante sau orice expresie evaluabil (aritmetic, logic, relaional, etc.) sir de formatare este ncadrat de caracterele ghilimele i reprezint forma sub care vor fi tiprite pe ecran valorile expresiilor. Efect: prin apelul funciei printf se realizeaz afiarea pe ecran a datelor ntr-un anumit format.Sir de formatare poate conine doar text i lista de expresii poate fi vid, caz n care prin apelul funciei printf se tiprete pe ecran textul specificat n acest cmp.Exemple:printf(exemplu de program!)

printf(\n acest text este afisat pe ecran)

Lucrarea 6.Limbajul C. Instruciuni. Instruciunea decizional if. Instruciunea switch...case.Instruciunea ifSintaxa instruciunii:

if ( )

else sau:if ( )

Unde, instruciunile 1 sau 2 pot fi de asemenea instruciuni compuse sau bloc de instruciuni.

Efectul instruciunii:

este evaluat i dac valoarea obinut n urma evalurii este diferit de 0 se execut instruciunea 1, altfel se execut instruciunea 2.

Cele dou instruciuni 1 i 2 se exclud reciproc.

Instruciunea IF simpl nu conine partea else Instruciunea IF complet conine ambele ramuri.Exemple:if (a!=0)

b=1/a;

If (a>=b)

maxim=a;

else

maxim=b;

if (delta>=0)

{

x1=(-b-sqrt(delta))/2*a;

x2=(-b+sqrt(delta))/2*a;

}

Sintaxa limbajului C permite ca n cadrul instruciunilor compuse ce constituie cele dou ramuri ale structurii alternative IF s existe alte structuri alternative IF. O astfel de construcie se denumete structur alternativ imbricat sau instruciuni IF imbricate.

Instruciunea switch- reprezint o generalizare a structurii alternative (if).

- se poate nlocui printr-o secven de structuri alternative imbricate.

n structura instruciunii switch este regsit o instruciune simpl de a crei prezen depinde execuia corect a instruciunii alternative switch. Aceasta instruciune are sintaxa:break;Rolul instruciunii break este de a ntrerupe execuia instruciunii curente i de a trece la execuia urmtoarei instruciuni ce urmeaz instruciunii switch.Sintaxa general:switch ()

{

case : ; break;

case : ; break;

case : ; break;

[default : ;] //opional

};

Efectul instruciunii: Se evalueaz expresia dintre paranteze la o valoare.

Se caut secvenial valoarea la care a fost evaluat expresia n lista de valori val1, val2, valn.

Dac nu se gsete nici o valoare val1, val2,valn egal cu valoarea la care a fost evaluat expresia se va executa, dac este precizat, instruciunea default sau efectul instruciunii switch este nul

Dac s-a gsit o valoare egal cu valoarea expresiei se va executa instruciunea corespunztoare i se va prsi structura alternativ.

Exemplu: Afiarea numelui zilei din sptmn creia i corespunde un numr 1,2,...,7:switch (numar)

{

case 1: printf(\n Luni);break;

case 2: printf(\n Marti); break;

case 3: printf(\n Miercuri); break;

case 4: printf(\n Joi); break;

case 5: printf(\n Vineri); break;

case 6: printf(\n Sambata); break;

case 7: printf(\n Duminica); break;

default:printf(\n nu este numar 1,2,3,4,5,6,7);}

Exerciii:S se scrie programele C pentru rezolvarea urmtoarelor probleme:1. S se citeasc un numr de 2 valori i s se determine minimul dintre ele.

2. S se rezolve ecuaia de gradul I.

3. S se rezolve ecuaia de gradul II.Lucrarea 7.Descrierea limbajului C. Instruciuni repetitive. (while, do...while, for).Instruciunile de ciclaren pseudocod am evideniat cele trei tipuri de structuri repetitive. Acestora le corespund trei instruciuni de ciclare n limbajului C:

Structura repetitiv precondiionat -> instruciunea while Structura repetitiv postcondiionat -> instruciunea do while Structura repetitiv cu numr prefixat de repetri -> instruciunea for

Instruciunea while

Sintaxa instruciunii:while () //antetul instruciunii

//corpul instruciuniiunde: poate fi o instruciune simpl, compus, i poate conine alte instruciuni while, caz n care spunem c avem o instruciune while imbricat

Efectul instruciunii:n primul pas, se evalueaz expresia dintre paranteze. Dac rezultatul evalurii este o valoare non-nul (adevrat) se execut instruciunea din corpul while i procesul se reia prin reevaluarea expresiei. Dac rezultatul unei evaluri este nul, se ntrerupe execuia instruciunii while, i programul se continu cu urmtoarea instruciune ce urmeaz instruciunii while.

Simplificat, o instruciune while are semnificaie:Ct timp expresia este adevrat repet corpul de instruciuni

Observaie: corpul instruciunii while este posibil s nu se execute nici o dat, n situaia n care expresia evaluat este de la nceput fals.Exemplu 1: Se tiprete valoarea unui contor pn cnd acesta devine mai mare dect 10. Valoarea iniial a contorului este 0.i=0;

while (i