<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.algopedia.ro/wiki/index.php?action=history&amp;feed=atom&amp;title=Clasa_a_V-a_lec%C8%9Bia_6_S13</id>
	<title>Clasa a V-a lecția 6 S13 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://www.algopedia.ro/wiki/index.php?action=history&amp;feed=atom&amp;title=Clasa_a_V-a_lec%C8%9Bia_6_S13"/>
	<link rel="alternate" type="text/html" href="https://www.algopedia.ro/wiki/index.php?title=Clasa_a_V-a_lec%C8%9Bia_6_S13&amp;action=history"/>
	<updated>2026-04-13T05:06:43Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.44.2</generator>
	<entry>
		<id>https://www.algopedia.ro/wiki/index.php?title=Clasa_a_V-a_lec%C8%9Bia_6_S13&amp;diff=14333&amp;oldid=prev</id>
		<title>Bella: Created page with &quot;== Instrucțiunea for == Precum am văzut în exemplele anterioare de multe ori avem nevoie să executăm o buclă WHILE-DO de &lt;tt&gt;n&lt;/tt&gt; ori, folosind un contor. Aceasta este...&quot;</title>
		<link rel="alternate" type="text/html" href="https://www.algopedia.ro/wiki/index.php?title=Clasa_a_V-a_lec%C8%9Bia_6_S13&amp;diff=14333&amp;oldid=prev"/>
		<updated>2017-12-20T13:07:14Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;== Instrucțiunea for == Precum am văzut în exemplele anterioare de multe ori avem nevoie să executăm o buclă WHILE-DO de &amp;lt;tt&amp;gt;n&amp;lt;/tt&amp;gt; ori, folosind un contor. Aceasta este...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Instrucțiunea for ==&lt;br /&gt;
Precum am văzut în exemplele anterioare de multe ori avem nevoie să executăm o buclă WHILE-DO de &amp;lt;tt&amp;gt;n&amp;lt;/tt&amp;gt; ori, folosind un contor. Aceasta este un tip particular de buclă WHILE-DO, și anume o &amp;#039;&amp;#039;buclă cu număr cunoscut de pași&amp;#039;&amp;#039;. Pentru acest tip de bucle limbajul C ne permite o prescurtare, folosind instrucțiunea &amp;#039;&amp;#039;for&amp;#039;&amp;#039;.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Schemă logică&lt;br /&gt;
!Implementare cu &amp;#039;&amp;#039;while&amp;#039;&amp;#039;&lt;br /&gt;
!Implementare cu &amp;#039;&amp;#039;for&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:sl-bucla-for.gif]]&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;|&amp;lt;syntaxhighlight&amp;gt; i = 0;&lt;br /&gt;
 while ( i &amp;lt; n ) {&lt;br /&gt;
   ... execută corpul&lt;br /&gt;
       buclei...&lt;br /&gt;
   i = i + 1;&lt;br /&gt;
 }&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;|&amp;lt;syntaxhighlight&amp;gt; for ( i = 0; i &amp;lt; n; i++ ) {&lt;br /&gt;
   ... execută corpul&lt;br /&gt;
       buclei...&lt;br /&gt;
 }&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Mecanism: ===&lt;br /&gt;
* Pasul 1: Se executa initializarea &lt;br /&gt;
* Pasul 2: Se testeaza conditia. Daca conditia este adevarata atunci trecem la pasul 3. Daca conditia este falsa se trece la pasul 5&lt;br /&gt;
* Pasul 3: Se executa pachetul de instructiuni “Prel” &lt;br /&gt;
* Pasul 4: Se executa incrementarea si se revine la pasul 2&lt;br /&gt;
* Pasul 5: Stop&lt;br /&gt;
&lt;br /&gt;
== Aplicatii ==&lt;br /&gt;
&lt;br /&gt;
=== Suma primelor n numere naturale ===&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int main(){&lt;br /&gt;
    ///declaram 2 variabile de tip FILE*&lt;br /&gt;
    FILE *fin, *fout;&lt;br /&gt;
    ///vom asocia var. de tip file, 2 fisiere externe&lt;br /&gt;
    fin = fopen(&amp;quot;date.in&amp;quot;, &amp;quot;r&amp;quot;);&lt;br /&gt;
    fout = fopen(&amp;quot;date.out&amp;quot;, &amp;quot;w&amp;quot;);&lt;br /&gt;
    int n, i;&lt;br /&gt;
    long long s;&lt;br /&gt;
    ///citim din fisier datele de intrare&lt;br /&gt;
    fscanf(fin, &amp;quot;%d&amp;quot;, &amp;amp;n);&lt;br /&gt;
    ///calculam suma primelor n numere&lt;br /&gt;
    s = 0;&lt;br /&gt;
    for(i = 1; i &amp;lt;= n; i++ )&lt;br /&gt;
      s = s + i;&lt;br /&gt;
    ///afisam rezultatul in fisierul de iesire&lt;br /&gt;
    fprintf(fout, &amp;quot;%lld&amp;quot;, s);&lt;br /&gt;
    fclose(fin);&lt;br /&gt;
    fclose(fout);&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Secvențe ==&lt;br /&gt;
Vom numi secventa un sir de n numere. &lt;br /&gt;
&lt;br /&gt;
=== Citirea unei secvențe ===&lt;br /&gt;
Deoarece nu avem unde păstra numerele unei secvențe, le vom citi, pe rînd, în aceeași variabilă. Pentru a ști cîte numere citim (cîte numere are secvența) de obicei vom citi mai întîi numărul de numere din secvență, &amp;lt;tt&amp;gt;n&amp;lt;/tt&amp;gt; și apoi cele &amp;lt;tt&amp;gt;n&amp;lt;/tt&amp;gt; numerele din secvență, într-o buclă WHILE-DO. Exemplu:&lt;br /&gt;
{|&lt;br /&gt;
| [[Image:sl-secventa-citire.gif|frame|none|Citire secvență]]&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;|&amp;lt;syntaxhighlight&amp;gt; fscanf( fin, &amp;quot;%d&amp;quot;, &amp;amp;n );&lt;br /&gt;
 i = 0;&lt;br /&gt;
 while ( i &amp;lt; n ) {&lt;br /&gt;
   fscanf( fin, &amp;quot;%d&amp;quot;, &amp;amp;a );&lt;br /&gt;
   i = i + 1;&lt;br /&gt;
 }&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt; fscanf( fin, &amp;quot;%d&amp;quot;, &amp;amp;n );&lt;br /&gt;
 &lt;br /&gt;
 for (i = 0; i &amp;lt; n; i = i + 1) {&lt;br /&gt;
   fscanf( fin, &amp;quot;%d&amp;quot;, &amp;amp;a );&lt;br /&gt;
   &lt;br /&gt;
 }&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Suma a n numere citite ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int main(){&lt;br /&gt;
    ///declaram 2 variabile de tip FILE*&lt;br /&gt;
    FILE *fin, *fout;&lt;br /&gt;
    ///vom asocia var. de tip file, 2 fisiere externe&lt;br /&gt;
    fin = fopen(&amp;quot;date.in&amp;quot;, &amp;quot;r&amp;quot;);&lt;br /&gt;
    fout = fopen(&amp;quot;date.out&amp;quot;, &amp;quot;w&amp;quot;);&lt;br /&gt;
    int n, i, nr;&lt;br /&gt;
    long long s;&lt;br /&gt;
    ///citim din fisier datele de intrare&lt;br /&gt;
    fscanf(fin, &amp;quot;%d&amp;quot;, &amp;amp;n);&lt;br /&gt;
    ///calculam suma primelor n numere&lt;br /&gt;
    s = 0;&lt;br /&gt;
    for(i = 1; i &amp;lt;= n; i++ ){&lt;br /&gt;
      fscanf(fin, &amp;quot;%d&amp;quot;, &amp;amp;nr);&lt;br /&gt;
      s = s + nr;&lt;br /&gt;
    }&lt;br /&gt;
    ///afisam rezultatul in fisierul de iesire&lt;br /&gt;
    fprintf(fout, &amp;quot;%lld&amp;quot;, s);&lt;br /&gt;
    fclose(fin);&lt;br /&gt;
    fclose(fout);&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Elementul maxim într-o secvență ===&lt;br /&gt;
&lt;br /&gt;
Dată o secvență de n numere să se afișeze elementul cel mai mare (maxim) din secvență.&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
//fara fisiere&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int main(){&lt;br /&gt;
  int  n, i, nr, max;&lt;br /&gt;
  scanf( &amp;quot;%d&amp;quot;, &amp;amp;n);           // citim numarul de valori din sir&lt;br /&gt;
  scanf( &amp;quot;%d&amp;quot;, &amp;amp;nr );         // citim primul numar din sir&lt;br /&gt;
  max = nr;                    // initializam maximul cu prima valoare di sir&lt;br /&gt;
  for(i = 1; i &amp;lt; n; i++ ){          // mai avem de citit n-1 valori&lt;br /&gt;
    scanf( &amp;quot;%d&amp;quot;, &amp;amp;nr );             // fiecare valoare citita&lt;br /&gt;
    if( nr &amp;gt; max )                  // daca noua valoare citita este mai mare decat maxim&lt;br /&gt;
      max = nr;                     // maximul va deveni acea valoare&lt;br /&gt;
  }&lt;br /&gt;
  printf( &amp;quot;%d&amp;quot;, max );&lt;br /&gt;
  return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| [[Image:sl-secventa-maxim.gif|frame|none|Numărul maxim în secvență]]&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;|&amp;lt;syntaxhighlight&amp;gt; #include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 int main() {&lt;br /&gt;
   FILE *fin, *fout;&lt;br /&gt;
   int n, i, a, max;&lt;br /&gt;
&lt;br /&gt;
   fin = fopen( &amp;quot;maxim.in&amp;quot;, &amp;quot;r&amp;quot; );&lt;br /&gt;
   fscanf( fin, &amp;quot;%d&amp;quot;, &amp;amp;n );&lt;br /&gt;
   //citim prima val din sir si o punem direct in variabila maxim&lt;br /&gt;
   fscanf( fin, &amp;quot;%d&amp;quot;, &amp;amp;max );&lt;br /&gt;
   for ( i = 1; i &amp;lt; n; i++ ) {&lt;br /&gt;
     fscanf( fin, &amp;quot;%d&amp;quot;, &amp;amp;a );&lt;br /&gt;
     if ( max &amp;lt; a )&lt;br /&gt;
       max = a;&lt;br /&gt;
   }&lt;br /&gt;
   fclose( fin );&lt;br /&gt;
&lt;br /&gt;
   fout = fopen( &amp;quot;maxim.out&amp;quot;, &amp;quot;w&amp;quot; );&lt;br /&gt;
   fprintf( fout, &amp;quot;%d&amp;quot;, max );&lt;br /&gt;
   fclose( fout );&lt;br /&gt;
   return 0;&lt;br /&gt;
 }&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
Observații:&lt;br /&gt;
* Elementul maxim se inițializează cu primul element al șirului &amp;#039;&amp;#039;&amp;#039;nu&amp;#039;&amp;#039;&amp;#039; cu valoarea zero. Întotdeauna vom inițializa maximul cu un element al secvenței. De ce?&lt;br /&gt;
** Este bine să fim ordonați și consecvenți: max este doar un candidat la maxim, dintre elementele secvenței, pînă la final, cînd devine chiar maximul. Ce fel de candidat este el dacă este un străin, nici măcar nu face parte din secvență?&lt;br /&gt;
** În viitor putem avea și elemente negative.&lt;br /&gt;
** Dacă avem o greșeală în program detecția ei și corectura sînt mai grele atunci cînd max poate lua valori în afara elementelor din secvență.&lt;br /&gt;
* Pentru a calcula elementul &amp;#039;&amp;#039;minim&amp;#039;&amp;#039; într-o secvență singurul lucru care se modifică în schema de mai sus este semnul comparației max &amp;lt; a, din mai mic &amp;lt; în mai mare &amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Laborator = &lt;br /&gt;
=== Secvență în ordine crescătoare ===&lt;br /&gt;
Dată o secvență cu n numere să se spună dacă cele n numere din secvență sînt in ordine crescătoare (fiecare număr este mai mic sau egal cu cel de după el).&lt;br /&gt;
{|&lt;br /&gt;
| [[Image:sl-secventa-crescatoare.gif|frame|none|Secvență crescătoare]]&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;|&amp;lt;syntaxhighlight&amp;gt; #include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 int main() {&lt;br /&gt;
   FILE *fin, *fout;&lt;br /&gt;
   int n, i, a, b, cresc;&lt;br /&gt;
&lt;br /&gt;
   fin = fopen( &amp;quot;crescatoare.in&amp;quot;, &amp;quot;r&amp;quot; );&lt;br /&gt;
   fscanf( fin, &amp;quot;%d&amp;quot;, &amp;amp;n );&lt;br /&gt;
   fscanf( fin, &amp;quot;%d&amp;quot;, &amp;amp;a );&lt;br /&gt;
   cresc = 1;&lt;br /&gt;
   i = 1;&lt;br /&gt;
   while ( i &amp;lt; n &amp;amp;&amp;amp; cresc == 1) {&lt;br /&gt;
     fscanf( fin, &amp;quot;%d&amp;quot;, &amp;amp;b );&lt;br /&gt;
     if ( b &amp;lt; a )&lt;br /&gt;
       cresc = 0;&lt;br /&gt;
     a = b;&lt;br /&gt;
     i++;&lt;br /&gt;
   }&lt;br /&gt;
   fclose( fin );&lt;br /&gt;
&lt;br /&gt;
   fout = fopen( &amp;quot;crescatoare.out&amp;quot;, &amp;quot;w&amp;quot; );&lt;br /&gt;
   if ( cresc == 1 )&lt;br /&gt;
     fprintf( fout, &amp;quot;da\n&amp;quot; );&lt;br /&gt;
   else&lt;br /&gt;
     fprintf( fout, &amp;quot;nu\n&amp;quot; );&lt;br /&gt;
   fclose( fout );&lt;br /&gt;
   return 0;&lt;br /&gt;
 }&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
Observații:&lt;br /&gt;
&lt;br /&gt;
* Nu folosim instrucțiunea &amp;#039;&amp;#039;for&amp;#039;&amp;#039; deoarece nu se știe de cîte ori se va executa bucla while (nu avem un ciclu cu număr cunoscut de pași).&lt;br /&gt;
* Trebuie să ținem minte elementul anterior în secvență, pentru a-l putea compara cu elementul curent. Vom vedea că în alte probleme vom avea nevoie să ținem minte două sau chiar și trei elemente anterioare.&lt;br /&gt;
* Încercaţi să scrieţi algoritmul fără a folosi steguleţe.&lt;br /&gt;
&lt;br /&gt;
==Sirul lui Fibbonacci ==&lt;br /&gt;
&lt;br /&gt;
= Tema teorie =&lt;br /&gt;
Pbinfo: Tema S7_Teorie&lt;/div&gt;</summary>
		<author><name>Bella</name></author>
	</entry>
</feed>