<?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_IX-a_lec%C8%9Bia_4</id>
	<title>Clasa a IX-a lecția 4 - 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_IX-a_lec%C8%9Bia_4"/>
	<link rel="alternate" type="text/html" href="https://www.algopedia.ro/wiki/index.php?title=Clasa_a_IX-a_lec%C8%9Bia_4&amp;action=history"/>
	<updated>2026-04-07T23:12:45Z</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_IX-a_lec%C8%9Bia_4&amp;diff=17353&amp;oldid=prev</id>
		<title>Bella: /* Metoda bulelor */</title>
		<link rel="alternate" type="text/html" href="https://www.algopedia.ro/wiki/index.php?title=Clasa_a_IX-a_lec%C8%9Bia_4&amp;diff=17353&amp;oldid=prev"/>
		<updated>2020-02-14T15:27:20Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Metoda bulelor&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= Lectie =&lt;br /&gt;
== Programarea structurată ==&lt;br /&gt;
Programarea structurată este un mod de a scrie scheme logice care îmbunătățește claritatea, citibilitatea, calitatea și ușurința modificării ulterioare. Denumirea vine de la &amp;#039;&amp;#039;Programarea cu structuri&amp;#039;&amp;#039;. Mai exact, programarea structurată ne limitează modul în care putem folosi și îmbina blocurile. Ele pot fi aranjate în trei feluri distincte, conform unor modele numite structuri. Aceste structuri sunt:&lt;br /&gt;
* Structura liniară (de calcul)&lt;br /&gt;
* structura alternativă (decizională)&lt;br /&gt;
* structura repetitivă (ciclică)&lt;br /&gt;
&lt;br /&gt;
=== Structura liniară ===&lt;br /&gt;
Se mai numește și structură de calcul. Ea constă dintr-o înșiruire de blocuri de calcul și blocuri de citire/scriere. Aceste blocuri se vor executa in ordinea in care ele apar in structura.&lt;br /&gt;
[[Image:sl-structura-liniara.gif|frame|none|Structura liniară]]&lt;br /&gt;
=== Exemple ===&lt;br /&gt;
==== Extragerea ultimei cifre ====&lt;br /&gt;
Să se afișeze ultima cifră a unui număr n, folosind operatorul &amp;#039;%&amp;#039;, respectiv restul împărțirii la 10. Am demonstrat că restul împărțirii la 10 este ultima cifră a unui număr.&lt;br /&gt;
[[Image:sl-ultima-cifra.gif|frame|none|Ultima cifră a lui n]]&lt;br /&gt;
&lt;br /&gt;
=== Structura alternativă ===&lt;br /&gt;
Structura alternativă este compusă dintr-un bloc de decizie, două ramuri de execuție, &amp;#039;&amp;#039;DA&amp;#039;&amp;#039; și &amp;#039;&amp;#039;NU&amp;#039;&amp;#039;, care se reunesc la final. Blocul de decizie contine o expresie logica. Daca expresia logica ( cond ) are valoarea  True atunci se vor executa intructiunile de pe ramura &amp;#039;&amp;#039;DA&amp;#039;&amp;#039; altfel se vor executa intructiunile de pe ramura &amp;#039;&amp;#039;NU&amp;#039;&amp;#039;.&lt;br /&gt;
[[Image:sl-structura-alternativa.gif|frame|none|Structura alternativă]]&lt;br /&gt;
&lt;br /&gt;
Pseudocod&lt;br /&gt;
 if conditie atunci&lt;br /&gt;
   intrusctiune1&lt;br /&gt;
 altfel&lt;br /&gt;
   instructiune2&lt;br /&gt;
&lt;br /&gt;
=== Exemple ===&lt;br /&gt;
==== Testul de divizibilitate ====&lt;br /&gt;
Testul de divizibilitate &amp;lt;tt&amp;gt;n&amp;lt;/tt&amp;gt; cu &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt;, discuție cele două metode, prima folosind operatorul &amp;lt;tt&amp;gt;%&amp;lt;/tt&amp;gt;, a doua folosind operatorul &amp;lt;tt&amp;gt;/&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| [[Image:sl-n-div-k-var-1.gif|frame|none|n divizibil cu k, varianta 1]]&lt;br /&gt;
| [[Image:sl-n-div-k-var-2.gif|frame|none|n divizibil cu k, varianta 2]]&lt;br /&gt;
|}&lt;br /&gt;
==== Extragerea primei cifre ====&lt;br /&gt;
Se citește n, un număr natural strict mai mic decît 100. Să se afișeze prima cifră a lui n. [[Image:prima-cifra.gif|frame|none|Prima cifră a lui n, n &amp;lt; 100]]&lt;br /&gt;
&lt;br /&gt;
== Laborator ==&lt;br /&gt;
&lt;br /&gt;
=== Laturile unui triunghi ===&lt;br /&gt;
Se citesc trei numere, a, b și c. Să se spună dacă pot fi laturile unui triunghi. [[Image:laturi-triunghi.gif|frame|none|a, b, c pot fi laturile unui triunghi?]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Strîngeri de mînă ===&lt;br /&gt;
Avem &amp;lt;tt&amp;gt;n&amp;lt;/tt&amp;gt; oameni care dau mîna fiecare cu fiecare o singură dată. În total sînt &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt; strîngeri de mînă. Să se scrie o schemă logică care citește &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt; (numărul de strîngeri de mînă), apoi calculează și afișează &amp;lt;tt&amp;gt;n&amp;lt;/tt&amp;gt; (numărul de oameni). [[Image:sl-stringeri-de-mina.gif|frame|none|n oameni dau mîna. Sînt k strîngeri de mînă. Dîndu-se k să se calculeze n.]]&lt;br /&gt;
&lt;br /&gt;
=== Maximul a trei numere ===&lt;br /&gt;
Se citesc trei numere, &amp;lt;tt&amp;gt;a&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;b&amp;lt;/tt&amp;gt; și &amp;lt;tt&amp;gt;c&amp;lt;/tt&amp;gt;. Să se afișeze valoarea maximă.&lt;br /&gt;
{|&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;| [[Image:sl-max-3-nr-1.gif|frame|none|maximul a trei numere, varianta 1]]&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;| [[Image:sl-max-3-nr-2.gif|frame|none|maximul a trei numere, varianta 2]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Sortarea a 3 numere ===&lt;br /&gt;
* Se citesc trei numere, a, b și c. Să se afișeze în ordine crescătoare. Exemplu: dacă a = 8, b = 4, c = 12, se va afișa 4 8 12.&lt;br /&gt;
&lt;br /&gt;
[[Image:sl-sortare-3-nr.gif|frame|none|Afișare a, b și c în ordine crescătoare, varianta 1]]&lt;br /&gt;
[[Image:sl-3-nr-crescatoare-var-2.gif|frame|none|Afișare a, b și c în ordine crescătoare, varianta 2]]&lt;br /&gt;
&lt;br /&gt;
Am discutat la clasa de asemenea inca 2 metode de sortare, pe care le putem folosi si in situatia in care avem mai mult de 3 numere:&lt;br /&gt;
- metoda interschimbarii directe&lt;br /&gt;
- metoda bulelor&lt;br /&gt;
==== Metoda interschimbarii directe ====&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
intreg a, b, c, aux&lt;br /&gt;
cieste a, b, c&lt;br /&gt;
&lt;br /&gt;
if ( a &amp;gt; b ) atunci&lt;br /&gt;
  aux = a&lt;br /&gt;
  a = b;&lt;br /&gt;
  b = aux&lt;br /&gt;
if ( a &amp;gt; c ) atunci&lt;br /&gt;
  aux = a&lt;br /&gt;
  a = c;&lt;br /&gt;
  c = aux&lt;br /&gt;
if ( b &amp;gt; c ) atunci&lt;br /&gt;
  aux = b&lt;br /&gt;
  b = c;&lt;br /&gt;
  c = aux&lt;br /&gt;
scrie a, b, c&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Metoda bulelor ====&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
intreg a, b, c, aux&lt;br /&gt;
cieste a, b, c&lt;br /&gt;
&lt;br /&gt;
daca ( a &amp;gt; b ) atunci&lt;br /&gt;
  aux = a&lt;br /&gt;
  a = b;&lt;br /&gt;
  b = aux&lt;br /&gt;
daca ( b &amp;gt; c ) atunci&lt;br /&gt;
  aux = b&lt;br /&gt;
  b = c;&lt;br /&gt;
  c = aux&lt;br /&gt;
daca ( a &amp;gt; b ) atunci&lt;br /&gt;
  aux = a&lt;br /&gt;
  a = b;&lt;br /&gt;
  b = aux&lt;br /&gt;
scrie a, b, c&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Cifre impare ===&lt;br /&gt;
Se citește un număr &amp;lt;tt&amp;gt;n&amp;lt;/tt&amp;gt;. Se știe că &amp;lt;tt&amp;gt;1 &amp;amp;le; n &amp;lt; 100&amp;lt;/tt&amp;gt;. Să se spună dacă toate cifrele lui &amp;lt;tt&amp;gt;n&amp;lt;/tt&amp;gt; sînt impare.&lt;br /&gt;
{|&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;| [[Image:sl-cifre-impare-1.gif|frame|none|Toate cifrele lui n sînt impare, varianta 1]]&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;| [[Image:sl-cifre-impare-2.gif|frame|none|Toate cifrele lui n sînt impare, varianta 2]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Numere divizibile cu K din [a,b] ===&lt;br /&gt;
Se citesc trei numere naturale, &amp;lt;tt&amp;gt;a&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;b&amp;lt;/tt&amp;gt; și &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt;. Să se afișeze numărul de numere divizibile cu &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt; în intervalul &amp;lt;tt&amp;gt;[a, b]&amp;lt;/tt&amp;gt; (inclusiv &amp;lt;tt&amp;gt;a&amp;lt;/tt&amp;gt; și &amp;lt;tt&amp;gt;b&amp;lt;/tt&amp;gt;). [[Image:div-cu-k.gif|frame|none|Cîte numere divizibile cu k se află în intervalul [a, b]?]]&lt;br /&gt;
&lt;br /&gt;
== Exerciții 2==&lt;br /&gt;
Exerciții de folosire a structurilor liniară și alternativă folosind - Pseudocod&lt;br /&gt;
&lt;br /&gt;
=== Diferenta dintre max si min ===&lt;br /&gt;
Să se scrie un program  care citeşte de la tastatură trei numere naturale și determină diferenţa dintre cel mai mare şi cel mai mic numar.&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
intreg a, b, c&lt;br /&gt;
citeste a, b, c&lt;br /&gt;
min=a&lt;br /&gt;
max=a&lt;br /&gt;
daca ( min &amp;gt; b ) atunci&lt;br /&gt;
  min = b&lt;br /&gt;
daca ( min &amp;gt; c ) atunci&lt;br /&gt;
  min = c&lt;br /&gt;
daca ( max &amp;lt; b ) atunci&lt;br /&gt;
  max = b&lt;br /&gt;
daca ( max &amp;lt; c ) atunci&lt;br /&gt;
  max = c&lt;br /&gt;
scrie  max - min;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Cate cifre pare are n? ===&lt;br /&gt;
Se citește de la tastatură un număr natural de 3 cifre. Să se determine &lt;br /&gt;
câte cifre impare conține.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
int n, contor;&lt;br /&gt;
citeste n&lt;br /&gt;
contor = 0&lt;br /&gt;
daca ( n mod 2 != 0 ) atunci&lt;br /&gt;
  contor = contor + 1&lt;br /&gt;
daca( n div 10 mod 2 != 0 )&lt;br /&gt;
  contor = contor + 1&lt;br /&gt;
daca ( n div 100 mod 2 != 0 )&lt;br /&gt;
  contor = contor + 1&lt;br /&gt;
scrie contor&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Au 2 numere acelasi semn? ===&lt;br /&gt;
Să se scrie un program care citeşte de la tastatură două numere întregi şi verifică dacă cele doua numere au acelaşi semn.&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
intreg a,b&lt;br /&gt;
citeste a, b&lt;br /&gt;
daca ( a &amp;lt; 0 ) atunci&lt;br /&gt;
  daca ( b &amp;lt; 0 ) atunci&lt;br /&gt;
     scrie &amp;quot;au acelasi semn&amp;quot;&lt;br /&gt;
  altfel &lt;br /&gt;
      scrie &amp;quot;nu au acelasi semn&amp;quot;&lt;br /&gt;
altfel&lt;br /&gt;
   daca ( b &amp;gt;= 0 ) atunci&lt;br /&gt;
      scrie &amp;quot;au acelasi semn&amp;quot;&lt;br /&gt;
   altel&lt;br /&gt;
      scrie &amp;quot;nu au acelasi semn&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SAU&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
intregi a, b&lt;br /&gt;
citeste a, b&lt;br /&gt;
daca ( ( a &amp;lt; 0 ) AND ( b &amp;lt; 0 ) ) OR ( ( a &amp;gt;= 0 AND b &amp;gt;= 0 ) ) atunci&lt;br /&gt;
    scrie &amp;quot;au acelasi semn&amp;quot;&lt;br /&gt;
altfel &lt;br /&gt;
    scrie &amp;quot;nu au acelasi semn&amp;quot;   &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SAU&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
intregi a, b&lt;br /&gt;
citeste a, b&lt;br /&gt;
daca  ( a &amp;lt; 0 AND b &amp;gt;= 0 ) OR ( a &amp;gt;= 0 AND b &amp;lt; 0 )  atunci&lt;br /&gt;
    scrie &amp;quot;nu au acelasi semn&amp;quot;&lt;br /&gt;
altfel &lt;br /&gt;
    scrie &amp;quot;au acelasi semn&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tema 4 Laborator ==&lt;br /&gt;
===N are ultimele 2 cifre consecutive?===&lt;br /&gt;
* Să se spună dacă un număr n are ultimele două cifre consecutive, în ordine crescătoare. Exemple: 312, 4523 și 1 sînt numere care au ultimele două cifre consecutive. 215, 4321 și 7 nu au ultimele două cifre consecutive crescător.&lt;br /&gt;
&lt;br /&gt;
===N copii se pot aseza in forma de patrat===&lt;br /&gt;
* Varianta1: să se spună dacă n copii se pot așeza în formă de pătrat plin. Exemplu: Nouă copii se pot așeza în formă de pătrat astfel: &lt;br /&gt;
 x x x&lt;br /&gt;
 x x x&lt;br /&gt;
 x x x&lt;br /&gt;
&lt;br /&gt;
* Varianta2: să se spună dacă n copii se pot așeza în formă de pătrat gol ( pe laturile unui patrat. In imaginile de mai sus vom considera ca locuri posibile doar conturul patratului. De exemplu 12 copii se pot aseza sub forma unui patrat gol astfel:&lt;br /&gt;
 x x x x &lt;br /&gt;
 x     x&lt;br /&gt;
 x     x&lt;br /&gt;
 x x x x&lt;br /&gt;
&lt;br /&gt;
===An bisect===&lt;br /&gt;
* Scrieți o schemă logică care să determine dacă un an este bisect. Un an este bisect dacă este divizibil cu 4, cu excepția anilor divizibili cu 100, care nu sînt bisecți, cu excepția anilor divizibili cu 400 care sînt bisecți. Exemple: 2012 este an bisect, 1900 nu a fost an bisect, 2000 a fost an bisect.&lt;br /&gt;
&lt;br /&gt;
=== Tema Pbinfo ===&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Usor&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[https://www.pbinfo.ro/probleme/2765/checkcolor checkcolor] - minim, maxim&lt;br /&gt;
*[https://www.pbinfo.ro/probleme/448/ciford ciford] - ordonarea cifrelor unui numar de 3 cifre&lt;br /&gt;
*[https://www.pbinfo.ro/probleme/447/cifmid cifmid] - afisare cifra din mijloc ca valoare&lt;br /&gt;
*[https://www.pbinfo.ro/probleme/559/5numere 5numere] - suma celor mai mari 3 numere din 5 date&lt;br /&gt;
*[https://www.pbinfo.ro/probleme/3275/nrsumcifmax  nrsumcifmax] - afisarea tuturor numerelor egale cu max din 3 numere&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Mediu &amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[https://www.pbinfo.ro/probleme/1943/bacterie bacterie]&lt;br /&gt;
*[https://www.pbinfo.ro/probleme/2908/planta planta]&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Dificil&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[https://www.pbinfo.ro/probleme/1002/paginare paginare]&lt;br /&gt;
*[https://www.pbinfo.ro/probleme/1934/catalin-si-elfii-magici catalin-si-elfii-magici]&lt;br /&gt;
&lt;br /&gt;
== Optional ==&lt;br /&gt;
===Problema Triunghi1 de pe campion===&lt;br /&gt;
* [http://campion.edu.ro/arhiva/index.php?page=problem&amp;amp;action=view&amp;amp;id=1067 triunghi1]&lt;br /&gt;
&lt;br /&gt;
=== Tema olimpici 1 ===&lt;br /&gt;
* oji 2005 [http://varena.ro/problema/maxd maxd]&lt;br /&gt;
* oji 2005 [http://varena.ro/problema/numere7 numere7]&lt;br /&gt;
* oji 2013 [http://varena.ro/problema/betasah betasah]&lt;br /&gt;
&lt;br /&gt;
=== Tema olimpici 2 ===&lt;br /&gt;
* oni 2017 [http://varena.ro/problema/arhipelag arhipelag]&lt;br /&gt;
* oni 2017 [http://varena.ro/problema/adlic adlic]&lt;/div&gt;</summary>
		<author><name>Bella</name></author>
	</entry>
</feed>