Laborator 8 Instrucţiuni de bază 2 (Instrucţiuni de ciclare)

Documente similare
Microsoft Word - CarteC.doc

Operatorii in C Expresii Operatori aritmetici Operatori de asignare Operatori de incrementare si decrementare Operatori relationali Operatori logici O

Programarea şi utilizarea calculatoarelor

Microsoft Word - CarteC.doc

ALGORITMII ŞI REPREZENTAREA LOR Noţiunea de algoritm Noţiunea de algoritm este foarte veche. Ea a fost introdusă în secolele VIII-IX de către Abu Ja f

Slide 1

L7

Programarea şi utilizarea calculatoarelor

Laborator 2: Instrucţiuni Java şi lucru cu şiruri de caractere Întocmit de: Adina Neculai Îndrumător: Asist. Drd. Gabriel Danciu 18 octombrie 2011

Limbaje de Programare Curs 6 – Functii de intrare-iesire

tehnologii web

SUBPROGRAME

E_d_Informatica_sp_MI_2015_bar_02_LRO

Microsoft Word - CarteC.doc

1. a. Să se scrie un algoritm care să afişeze toate numerele de patru cifre care au cifra sutelor egală cu o valoare dată k, şi cifra zecilor cu 2 mai

Declararea variabilelor

Lecţia 2 Structura liniară, alternativă şi repetitivă Clasa a V-a Structuri de bază(liniară, alternativă şi repetitivă) Programarea structurată este o

E_d_Informatica_sp_SN_2014_bar_10_LRO

Microsoft Word - O problema cu bits.doc

1. Operatii cu matrici 1 Cerinte: Sa se realizeze functii pentru operatii cu matrici patratice (de dimensiune maxima 10x10). Operatiile cerute sunt: A

Microsoft PowerPoint - Curs_SDA_4_RO_2019_v2.pptx

Microsoft PowerPoint - ImplementareLimbaj [Read-Only] [Compatibility Mode]

Programarea calculatoarelor. Note de curs Marius Minea 1 Introducere în programarea în C 1.1 Funcţii în limbajul C Calcule şi funcţii La origine, rolu

Laborator 2 Incompatibilităţi/Diferenţe între C şi C++ Completări C++ Supraîncărcarea (redefinirea) numelui de funcţii În C nu este permisă existenţa

LUCRAREA NR

Logică și structuri discrete Limbaje regulate și automate Marius Minea marius/curs/lsd/ 24 noiembrie 2014

Declaraţii. Instrucţiuni 19 octombrie 2005 Programarea calculatoarelor 2. Curs 3b Marius Minea

Limbaje de Programare Curs 8 – Fisiere

Microsoft Word - PCLP2_Curs_4_2019.doc

Top

Școala: Clasa a V-a Nr. ore pe săptămână: 4 Profesor: MATEMATICĂ Clasa a V-a Aviz director PLANIFICARE CALENDARISTICĂ ORIENTATIVĂ Nr. crt. Unitatea de

Interfețe și Protocoale de Comunicații Arduino-Port Paralel Arduino. Laborator 1- Portul Paralel 1 Caracteristici generale Arduino UNO este o placă de

Slide 1

Microsoft Word - c6.doc

Laborator 9: Fire de execuţie Întocmit de: Adina Neculai Îndrumător: Asist. Drd. Gabriel Danciu 20 noiembrie 2011

Secţiunea 5-6 avansaţi PROBLEMA 1 Concurs online de informatică Categoria PROGRAMARE 100 puncte NR Un număr natural nenul V care se plictisea singur,

Microsoft Word - Software pentru ordonarea multirang a componentelor unei colectivitati.doc

PCLPII-C16(9)

Propunator: Morar Florin Colegiul National Silvania Zalau Discipina: Informatica Nivel liceal, cls. XII 1.Să se scrie în limbajul C/C++ definiţia comp

Laborator 3

PowerPoint-Präsentation

Ecuatii si sisteme de ecuatii neliniare 1 Metoda lui Newton Algorithm 1 Metoda lui Newton pentru ecuaţia f(x) = 0. Date de intrare: - Funcţia f - Apro

Slide 1

Limbaje de Programare Curs 5 – Siruri de caractere

Coman Marinela Furnizor program formare acreditat: CCD BRĂILA Denumire program: INFORMATICĂ ŞI TIC PENTRU GIMNAZIU Clasa a V-a Categorie: 1; Tip de co

Microsoft PowerPoint - Curs_SDA_3_RO_2019_v2.pptx

Paradigme de programare

Microsoft Word - Lab1a.doc

Microsoft PowerPoint - Curs_SDA_9_RO_2019_v2.pptx

-

Laborator 4: Continuare Programare Orientată pe Obiecte Întocmit de: Adina Neculai Îndrumător: Asist. Drd. Gabriel Danciu 29 octombrie 2011

SSC-Impartire

Diapositive 1

METODE NUMERICE ÎN INGINERIE

Procesarea Imaginilor - Laborator 1: Introducere în utilizarea bibliotecii OpenCV 1 1. Introducere în utilizarea bibliotecii OpenCV 1.1. Introducere S

Lab6LCD

Tablouri unidimensionale Problema 1 Să se determine mulţimea cifrelor unui număr natural n > 0, dat. Exemplu: n= Cifre = {1,2,3,7} Se cere să s

Scrieţi pe foaia de examen răspunsul pentru fiecare dintre cerinţele următoare

Analiză de flux de date 29 octombrie 2012

Matrici și vectori în VBA În VBA, o matrice este un grup de variabile de același tip. De ce ar trebui să utilizați o matrice? Presupunem că ați vrut s

/*

Microsoft Word - Raspunsul la niste provocari. Partea III..doc

Backtracking_2018

Proiect

Microsoft PowerPoint - Curs_SDA_10_RO_2019_v1.pptx

Limbaje de programare Pointeri. Alocare dinamică (continuare) 26 noiembrie 2012

Notiuni de algebra booleana

proiectarea bazelor de date

Gheorghe IUREA Adrian ZANOSCHI algebră geometrie clasa a VII-a ediţia a V-a, revizuită mate 2000 standard EDITURA PARALELA 45 Matematică. Clasa a VII-

Clasa IX 1. O lăcustă face salturi, fiecare salt în linie dreaptă şi de două ori mai lung ca precedentul. Poate vreodată lăcusta să revină în punctul

Aggregating Data

Microsoft Word - D_ MT1_II_001.doc

Probleme proiect TP BITPERM Implementați un algoritm care citește de la intrarea standard două numere naturale și scrie la ieșirea standard da

O NOUA PROBLEMA DE CONCURS OLIMPIADA MUNICIPALA DE INFORMATICA, IASI 2019 V-am promis într-un articol mai vechi ca vom prezenta pe acest blog câteva p

Microsoft Word _POO_Lab_1_Modificari_v01.htm

Laborator 2 - Încapsularea Programare Orientată pe Obiecte Tema 2.1 Să se analizeze programul EX2.C Indicatii 2.1 A nu se uita de fisierul EX2.H Tema

PROGRAMARE ORIENTATA PE OBIECTE

Microsoft Word - Curs_08.doc

Microsoft Word - V_4_Inmultirea_nr_nat.doc

Subiectul 1

Slide 1

Grile si probleme siruri de caractere in C++ ŞIRURI DE CARACTERE Itemii următori sunt preluaţi din variantele de bacalaureat În secvenţa de i

Lucrarea 10

Analiză statică Analiza fluxului de date 23 octombrie 2014

Paradigme de Programare

SECURITATE ȘI CRIPTOGRAFIE

GHERCĂ MAGDA CASA CORPULUI DIDACTIC BRĂILA PORTOFOLIU EVALUARE INFORMATICĂ ȘI TIC PENTRU GIMNAZIU CLASA A V-A Neamț SERIA 1 GRUPA 1 CURSANT: GHERCĂ G

INSTITUTUL DE DEZVOLTARE A SOCIETĂŢII INFORMAŢIONLE

Curs 3 Permutari cu repetitie. Combinari. Algoritmi de ordonare si generare

Laborator 1-Teoria probabilitatilor si statistica matematica Sef lucrari dr.mat. Daniel N.Pop Departamentul de calculatoare si inginerie electrica 1 P

Programarea şi utilizarea calculatoarelor

Microsoft Word - Rezolvarea Test nr. 11.doc

Anexa nr. 2 FIŞA DISCIPLINEI 1. Date despre program 1.1 Instituţia de învăţământ superior UNIVERSITATEA DE VEST TIMISOARA 1.2 Facultatea FIZICA 1.3 De

ALGORITMICĂ. Seminar 3: Analiza eficienţei algoritmilor - estimarea timpului de execuţie şi notaţii asimptotice. Problema 1 (L) Să se determine număru

Microsoft Word - Curs1.docx

PHP (II)

1. Găsiți k numerele cele mai apropiate într-un şir nesortat Dându-se un şir nesortat și două numere x și k, găsiți k cele mai apropiate valori de x.

CLP_UTCN-grila-2012.dvi

Transcriere:

Laborator 8 Instrucţiuni de bază 2 (Instrucţiuni de ciclare) Instrucţiunile de ciclare se împart în: a. instrucţiuni care realizează o structură repetitivă condiţionată anterior: while, for. b. instrucţiuni care realizează o structură repetitivă condiţionată posterior: do-while. Instrucţiunea while Această realizează o structură ciclică condiţionată anterior. while(conditie) ; conditie poate fi orice expresie care dacă este adevărată este diferită de zero. poate fi o singură sau o compusă. Instrucţiunea while se execută în felul următor: 1. Se evaluează valoarea conditie din paranteză; 2. Dacă conditie are valoare de adevăr adică diferită de zero, atunci se execută şi se reia pasul 1, altfel se trece la a imediat următoare instrucţiunii while. In cadrul instrucţiunii pot să existe alte instrucţiuni while. În acest caz instrucţiunile se numesc instrucţiuni while imbricate. Instrucţiune din corpul lui while poate să realizeze terminarea instrucţiunii while fără a se mai ajunge la evaluarea expresiei logice. Observaţie: 1. Dacă conditie are valoarea fals de la început, atunci nu se execută niciodată. Această facilitate oferită de a while poate elimina necesitatea efectuării unui test condiţional separat înainte de ciclu. 2. In interiorul ciclului while nu este necesară prezenţa instrucţiunilor. Instrucţiunea for Această este o foarte flexibilă care se utilizează de asemenea pentru realizarea unei structuri repetitive condiţionate anterior. for(initializare;conditie;actualizare) ; Antetul ciclului este definit de rândul: for(initializare,conditie,actualizare) initializare, conditie, actualizare sunt expresii. care se execută în mod repetat formează corpul ciclului. 1

initializare reprezintă partea de iniţializare a ciclului, reprezentată prin una sau mai multe expresii de atribuire; condiţie reprezintă o expresie relaţională care determină când se încheie ciclul; actualizare reprezintă partea de reiniţializare a ciclului, reprezentată printr-o listă de expresii de atribuire. Cu ajutorul acestora, unele din datele prelucrate ciclic sunt actualizate (de regulă cele ce intervin în expresia testată). Instrucţiunea for se execută conform următorilor paşi: 1. Se execută secvenţa de iniţializare definită de expresia initializare. 2. Se evaluează conditie. Dacă conditie are valoarea zero, atunci se iese din ciclu, adică se trece la a imediat următoare instrucţiunii for. Altfel se execută din corpul ciclului. 3. După executarea corpului ciclului, se execută expresia de reiniţializare definită de actualizare. Apoi se reia secvenţa de la pasul 2. Pentru a mări flexibilitatea şi domeniul de aplicabilitate al ciclului for, limbajul C permite existenţa a două sau mai multe variabile de control ale ciclului. Se utilizează în acest sens operatorul virgulă între expresiile ciclului for. Observaţii: 1. Instrucţiune din corpul ciclului for poate să nu se execute niciodată dacă conditie are valoarea zero încă de la început. 2. Expresiile din antetul funcţiei for pot fi şi vide. Totuşi caracterele punct şi virgulă vor fi întotdeauna prezente. 3. Se recomandă ca a de ciclare for să se folosească cu prioritate în ciclurile care au pas. Aceasta nu înseamnă că nu putem folosi a for şi în alte cazuri. 4. Instrucţiunea for de forma următoare este de asemenea validă: for(; ;) ; Această defineşte un ciclu infinit din care se iese prin alte mijloace decât cele obişnuite, cum ar fi de exemplu revenirea dintr-o funcţie sau un salt la un anumit punct al programului etc. 5. Conţinutul ciclului for poate fi de asemenea vid. Acest lucru poate fi utilizat pentru a îmbunătăţi eficienţa unor algoritmi şi pentru a crea cicluri fără întârziere. Instrucţiunile de ciclare for şi while care urmează au acelaşi efect: for(exp1; exp2; exp3) exp1; while(exp2) exp3; Reciproc orice while poate fi scrisă folosind o for cu exp1 şi exp3 vide. Astfel while de mai jos: 2

while(exp) este echivalentă cu următoarea for: for(; exp ;) Instrucţiunea do-while Această realizează structura repetitivă condiţionată posterior. Ea poate fi realizată cu ajutorul celorlalte instrucţiuni definite de ciclare. Cu toate acestea, prezenţa ei în limbaj măreşte flexibilitatea în programare. Ea are următorul format: do instructiune while(conditie); Instrucţiunea do-while se execută în felul următor: 1. Se execută 2. Se evaluează conditie din paranteza rotundă. 3. Dacă valoarea conditie este nulă, se trece la execuţia instrucţiunii aflată după a do-while. Altfel se revine şi se execută întâi şi apoi se testează condiţia de repetare a execuţiei ei. Observaţie: În cazul instrucţiunii do-while, corpul ciclului se execută cel puţin odată, spre deosebire de instrucţiunile for şi while, unde este posibil să nu se execute niciodată. Instrucţiunea do-while se poate echivala prin secvenţa while de mai jos: while(conditie) Exemple 1. Să se scrie un program care să afişeze cele 26 litere mari ale alfabetului latin împreună cu codurile lor ASCII. #include<conio.h> char caract1,caract2 ; caract1='a'; caract2=caract1+13; printf("caracterele ALFABETULUI LATIN SI CODURILE LOR ASCII\n"); while(caract2<='z') 3

printf("\t %c: %d\t\t%c: %d\n",caract1,caract1,caract2,caract2); caract1++; caract2++; printf("apasati orice tasta pentru continuare\n"); 2. Să se scrie un program care citeşte un număr întreg din fişierul de intrare, apoi calculează şi tipăreşte n!. #include <stdio.h> #include <conio.h> int n,i; double fact; printf("introduceti valoarea lui n:"); scanf("%d",&n); i=1; fact=1; while(i<=n) fact*=i; i++; printf("n=%d n!=%g\n",n,fact); printf("apasati orice tasta pentru continuare\n"); 3. Să se scrie un program care calculează și afișează valoarea polinomului 2 p x 2x 7x pentru următorul șir de valori: x=0.5, 1, 1.5,..., 10. 1 #include <stdio.h> float x; x=0.5; while(x<=10) printf("valoarea polinomului in punctul %.1f este: %.1f\n",x, 2*x*x-7*x+1); x=x+0.5; printf("apasati orice tasta pentru continuare\n"); Exerciţiu propus: 4. Să se scrie un program care calculează C k n n!. n k!k! 4

5. Să se calculeze pătratul unui număr real introdus de la tastatura în mod repetat. #include<conio.h> float x,y; char caract; for(;;) printf("\nintroduceti un numar real x:"); scanf("%f",&x); y=x*x; printf("(x)^2=%f\n",y); printf("\ndoriti reluarea calculelor? (Y/N)"); caract=getche(); if(caract!='y' && caract!='y') printf("\napasati orice tasta pentru continuare\n"); 6. Să se scrie un program care citeşte un întreg pozitiv şi îl testează dacă este prim. #include <stdio.h> #include <conio.h> main() long i,n; int j,t; printf("\nintroduceti intregul pozitiv n="); while(scanf("%ld",&n)!=1 n<=0) printf("n nu este intreg pozitiv:\n"); printf("introduceti alt n:"); for(j=1,i=2;i*i<=n&&j;i++) if(n%i==0) j=0; if(j==0) printf("numarul %ld nu este prim\n",n); printf("numarul %ld este prim\n",n); 7. Să se calculeze valoarea funcţiei f(x)=y, pe intervalul [a,b] parcurs cu pasul p, a căror valori sunt introduse de la tastatură. 5

f (x) x 5, 12, 2 x x 3, x 5 daca x 7 daca 7 x 3 daca x 3 #include<conio.h> void main() int i; float x,y,a,b,p; printf("introduceti capetele intervalului:\n"); printf("a="); scanf("%f",&a); printf("b="); scanf("%f",&b); printf("introduceti pasul p="); scanf("%f",&p); if(a>b) a=a+b; b=a-b; a=a-b; for(i=1;i<=(b-a)/p+1;i++) x=a+(i-1)*p; if (x<-7) y=x-5; if (x<3) y=12; if (x==5) printf("in punctul x=%.2f functia nu se poate calcula\n",x); y=(x*x+x+3)/float(x-5); if (x!=5) printf("valoarea functiei f(%.2f) este y=%.2f\n",x,y); 8. Să se creeze un program care citește două numere reale de la tastatură și aplică unul din operatorii: adunare/scădere/înmulţire/împărțire asupra acestora funcţie de alegerea utilizatorului, de câte ori dorește acesta. #include<conio.h> long float x,y; char i, caract; 6

for(;;) printf("introduceti cele doua numere:\n"); printf("x="); scanf("%lf", &x); printf("y="); scanf("%lf", &y); printf("pentru adunare introduceti +, pentru scadere introduceti -, pentru inmultire introduceti *, pentru impartire introduceti /\n"); i=getche(); putch(10); if (i=='+' i=='-' i=='*' i=='/') switch (i) case '+': printf("suma numerelor este: %lf\n",x+y); case '-': printf("diferenta numerelor este: %lf\n",x-y); case '*': printf("produsul numerelor este: %lf\n",x*y); case '/': if (y==0) printf("catul impartirii lui %lf la 0 nu se poate calcula", x); printf("catul numerelor este: %lf\n",x/y); printf("nu ati introdus un operator corect\n"); printf("doriti sa continuati? (apasati y sau Y daca da)\n"); caract= if(caract!='y' && caract!='y') Exerciţiu propus 9. Rezolvaţi problema 2 folosind un ciclu for. 10. Să se calculeze a cu cinci zecimale exacte, folosind următoarea relaţie iterativă: 1 a x n1 x n, convergentă, iar x 0 1. 2 x n #include<math.h> double a,x1,x2,y,eps=0.0000099; 7

printf("introduceti a(>0)="); scanf("%lf",&a); if (a<0) printf("nu ati introdus un numar pozitiv"); x2=1; do x1=x2; x2=0.5*(x1+a/x1); //y=x2-x1; while (abs(x2-x1)>=eps); printf("radical din %lf este: %lf\n",a,x2); 8