<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Blog despre resurse educaţionale din IT &#187; Teze</title>
	<atom:link href="http://resurse-educationale.uv.ro/?cat=72&#038;feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://resurse-educationale.uv.ro</link>
	<description>Cu informatii pentru dezvoltare personala, dar şi pentru studentţi, elevi, profesori, webmasteri, programatori</description>
	<lastBuildDate>Fri, 27 Jan 2012 01:12:50 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>68 de pagini de probleme rezolvate si teorie in Pascal</title>
		<link>http://resurse-educationale.uv.ro/?p=154</link>
		<comments>http://resurse-educationale.uv.ro/?p=154#comments</comments>
		<pubDate>Thu, 17 Mar 2011 08:47:24 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Pascal]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Teze]]></category>
		<category><![CDATA[algoritmi]]></category>
		<category><![CDATA[probleme]]></category>
		<category><![CDATA[programare]]></category>
		<category><![CDATA[programe rezolvate]]></category>
		<category><![CDATA[teza]]></category>

		<guid isPermaLink="false">http://resurse-educationale.uv.ro/?p=154</guid>
		<description><![CDATA[1.1. GHID DE LUCRU Rezolvarea unei probleme cu ajutorul calculatorului presupune parcurgerea următoarelor faze: ‑ precizarea completă a problemei de rezolvat; ‑ proiectarea algoritmului de rezolvare a problemei; ‑ programarea propriu‑zisă (implementarea); ‑ testarea programului obţinut; ‑ exploatarea şi întreţinerea &#8230; <a href="http://resurse-educationale.uv.ro/?p=154">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p><em><a rel="attachment wp-att-155" href="http://resurse-educationale.uv.ro/?attachment_id=155"><br />
</a></em></p>
<p><em>1.1. GHID DE LUCRU </em></p>
<p>Rezolvarea unei probleme cu ajutorul calculatorului presupune parcurgerea următoarelor faze:</p>
<p>‑ precizarea completă a problemei de rezolvat;</p>
<p>‑ proiectarea algoritmului de rezolvare a problemei;</p>
<p>‑ programarea propriu‑zisă (implementarea);</p>
<p>‑ testarea programului obţinut;</p>
<p>‑ exploatarea şi întreţinerea programului.</p>
<p>Aceste faze constituie ciclul de viaţă al programului.</p>
<p>De foarte multe ori, atunci când beneficiarul discută cu executantul despre problema care trebuie rezolvată, acesta dă un enunţ vag, incomplet, dacă nu chiar inexact sau contradictoriu, pentru problema de rezolvat. Urmează mai multe discuţii, uneori întinse în timp, în urma cărora se ajunge la un enunţ relativ complet şi exact al problemei. Întrucât problemele propuse sunt luate din domeniul matematicii sarcina noastră va fi mult mai uşoară.</p>
<p>După enunţarea problemei urmează modelarea matematică şi căutarea unei metode de rezolvare a ei. Uneori sunt posibile mai multe moduri de rezolvare, caz în care se va alege metoda considerată cea mai potrivită scopului urmărit. Modelarea matematică şi alegerea unei metode de rezolvare se îmbină aproape întotdeauna cu conceperea algoritmului, fiind greu să se separe una de cealaltă. Activităţile de mai sus constituie ceea ce numim proiectarea programului.</p>
<p>Pe toată durata proiectării trebuie menţionate în scris toate deciziile luate, întrucât este posibil ca ulterior să fie necesară o reproiectare şi deci, să se revină asupra acestor decizii. Documentaţia realizată este necesară în primul rând pentru următoarea fază a ciclului de viaţă al programului, implementarea. De asemenea, în faza de întreţinere a programului este posibilă modificarea unor module, modificare în care sunt necesare să fie cunoscute şi aceste decizii. E bine ca proiectarea să fie astfel făcută încât să permită o întreţinere cât mai uşoară.  Faza următoare, implementarea sau codificarea, constă în traducerea algoritmului într‑un limbaj de programare. Evident, prima decizie ce trebuie luată constă în alegerea limbajului de programare în care va fi scris programul. În cele ce urmează vom folosi în acest scop limbajul Pascal. De multe ori se vor folosi mai multe limbaje pentru această activitate. De exemplu, pot exista unele module a căror scriere se poate face numai în limbajul de asamblare. Urmează testarea programului elaborat, care uneori pune în evidenţă erori grave de programare, erori care au dus în unele situaţii la refacerea (parţială sau integrală) a activităţilor anterioare. Sigur că este de dorit să nu se ajungă la astfel de situaţii şi, dacă proiectarea şi implementarea au fost făcute corect, în faza de testare nu ar trebui să întâlnim erori.</p>
<p>Următoarea fază din viaţa programului constă în exploatarea propriu-zisă a acestuia, fază în care execuţia se face cu date reale. Această activitate se întinde în timp pe mai mulţi ani şi cere adeseori schimbări în program, motiv pentru care este cunoscută sub numele de întreţinerea programului. Este faza cea mai costisitoare şi cea mai importantă din viaţa unui produsul real. Toată activitatea de realizare a programului trebuie să ţină seama de acest fapt şi programul să fie astfel conceput încât să se permită modificări în ceea ce face programul cu un număr minim de modificări în textul acestuia. Documentarea programului presupune elaborarea unor materiale scrise în care se precizează toate informaţiile utile despre programul realizat. Pentru proiectarea algoritmilor vom folosi limbajul Pseudocod. Avantajele folosirii acestui limbaj pentru proiectarea algoritmilor constau în faptul că permit programatorului să-şi îndrepte complet atenţia asupra logicii rezolvării problemei şi să uite de restricţiile impuse de limbajul de programare şi calculatorul folosit. În această fază este necesară o analiză atentă a problemei în vederea găsirii unui algoritm corect proiectat.</p>
<p>De asemenea, proiectarea algoritmului permite evitarea duplicării unui grup de instrucţiuni în mai multe părţi ale programului. Identificarea unui astfel de grup permite definirea lui ca un singur subalgoritm şi folosirea acestui subalgoritm ori de câte ori este necesar.</p>
<p>În descrierea unui algoritm deosebim următoarele activităţi importante:</p>
<p>- specificarea problemei;</p>
<p>- descrierea metodei alese pentru rezolvarea problemei;</p>
<p>- precizarea denumirilor şi semnificaţiilor variabilelor folosite;</p>
<p>- descrierea algoritmului propriu-zis.</p>
<p>Astfel, dacă ni se cere să calculăm radicalul de ordinul 2 din <em>x</em>, în partea de specificare a problemei vom menţiona:</p>
<p>Se dă un număr real nenegativ, notat prin <em>x</em>.</p>
<p>Se cere să găsim un alt număr pozitiv <em>r</em> astfel încât <em>r</em><sup>2</sup>=<em>x</em>.</p>
<p>Pentru un informatician este clar că un astfel de număr nu se poate găsi în general prin nici un procedeu finit. Este însă posibil să găsim o aproximare oricât de bună a lui <em>r</em>. Deci specificarea făcută nu este corectă, neputând găsi un algoritm care să rezolve problema în forma enunţată. Vom modifica această specificaţie, cerând să se calculeze aproximativ <em>r</em> cu o eroare ce nu depăşeşte un număr real <em>eps</em> oricât de mic.</p>
<p>Specificaţia problemei este:</p>
<p><em>DATE eps,x;                                                                                                    {eps,xR,  eps&gt;0 şi x0}</em></p>
<p><em> REZULTATE r;                                                                                                          {r-rad(x)&lt;eps}</em></p>
<p>unde prin <em>rad</em>(<em>x</em>) am notat radicalul de ordinul 2 din <em>x</em> definit în matematică.</p>
<p>Urmează să precizăm metoda de rezolvare a problemei. Se ştie că există cel puţin două posibilităţi de a calcula pe <em>r</em>:</p>
<p>- ca limită a unui şir (definit printr-o relaţie de recurenţă) convergent la <em>r</em>;</p>
<p>- prin rezolvarea ecuaţiei <em>r</em><sup>2</sup>=<em>x</em>.</p>
<p>Precizăm că-l vom calcula pe <em>r</em> rezolvând ecuaţia <em>r</em><sup>2</sup>=<em>x</em>. Dar şi rezolvarea acestei ecuaţii se poate face prin mai multe metode. Decidem că o vom rezolva prin metoda njumătăţirii. Această metodă constă în njumătăţirea repetată a intervalului [<em>a,b</em>] care conţine rădăcina <em>r</em> la intervalul [<em>a',b'</em>], care este jumătatea stângă, sau jumătatea dreaptă a intervalului [<em>a,b</em>], cea care conţine rădăcina.</p>
<p>Variabilele folosite în descrierea algoritmului sunt:</p>
<p>- <em>a</em> şi <em>b</em> = capetele intervalului în care se află rădăcina;</p>
<p>- <em>m</em> mijlocul intervalului (<em>a,b</em>). În momentul în care <em>b-a&lt;eps,</em></p>
<p><em>m</em> va fi chiar valoarea căutată pentru <em>r</em>.</p>
<p>Algoritmul propriu-zis este descris în continuare:</p>
<p><em>*Iniţializează pe a şi b;</em></p>
<p><em> REPETĂ</em></p>
<p><em> FIE m:=(a+b)/2; </em></p>
<p><em> * Dacă rădăcina se află în [a,m] atunci b:=m altfel a:=m.</em></p>
<p><em> PNĂCND b-a&lt;eps SF-REPETĂ</em></p>
<p><em> FIE r:=(a+b)/2;</em></p>
<p><em> </em></p>
<p>În textul de mai sus apar două propoziţii nestandard care sugerează însă foarte bine ce acţiuni trebuiesc întreprinse. Prima stabileşte intervalul iniţial în care se află rădăcina, care depinde de mărimea lui <em>x</em>: (<em>x</em>,1) când <em>x</em> este mai mic decât 1 sau (1,<em>x</em>) în caz contrar. Deci ea se va transcrie în propoziţia standard</p>
<p><em> DACĂ x&lt;1 ATUNCI ATRIBUIE  a:=x;  b:=1</em></p>
<p><em> ALTFEL ATRIBUIE  a:=1;  b:=x</em></p>
<p><em> SF-DACĂ</em></p>
<p>A doua propoziţie înjumătăţeşte intervalul. Condiţia ca rădăcina să se afle în jumătatea stângă a intervalului este (<em>a</em><sup>2</sup>-<em>x</em>)*(<em>m</em><sup>2</sup>-<em>x</em>)&lt;0. Se ajunge la următoarea variantă finală:</p>
<p><em>ALGORITMUL RADICAL ESTE:                                                       {Calculează radical din x}</em></p>
<p><em> DATE eps,x;                                                                                                     {eps,xR, eps&gt;0 şi x0}</em></p>
<p><em> DACĂ x&lt;1 ATUNCI FIE  a:=x;  b:=1                                                    {Iniţializează pe a şi b}</em></p>
<p><em> ALTFEL FIE  a:=1;  b:=x </em></p>
<p><em> SF-DACĂ</em></p>
<p><em> REPETĂ</em></p>
<p><em> DACĂ (a<sup>2</sup>-x)*(m<sup>2</sup>-x)&lt;0 ATUNCI b:=m                                                   {rădăcina în stânga}</em></p>
<p><em> ALTFEL a:=m                                                                       {rădăcina în dreapta}</em></p>
<p><em> SF-DACĂ</em></p>
<p><em> PNĂCND b-a&lt;eps SF-REPETĂ</em></p>
<p><em> FIE r:=(a+b)/2;</em></p>
<p><em> REZULTATE r;                                                                                                          {r-rad(x)&lt;eps}</em></p>
<p><em> SF-ALGORITM</em></p>
<p><em> </em></p>
<p>Programul Pascal corespunzător este dat în continuare.</p>
<p>PROGRAM RADICAL;                                                                {Programul 1.1. Calculează radical din x}</p>
<p>VAR eps,                                                                                               {eps= precizia cu care se calculează}</p>
<p>x,                                                                                                                       {radical din x, eps&gt;0 si x&gt;=0}</p>
<p>r,                                                                                                                                 {valoarea radicalului x}</p>
<p>a,b,                                                                                                   {capetele intervalului ce conţine pe r}</p>
<p>m : REAL;                                                                                                           {mijlocul intervalului [a,b]}</p>
<p>BEGIN</p>
<p>WRITELN(&#8216;Se calculează radical din x cu precizia eps:&#8217;);</p>
<p>WRITE(&#8216;eps=&#8217;);   READLN(eps);</p>
<p>WRITE(&#8216; x =&#8217;);   READLN(x);</p>
<p>IF x&lt;1 THEN BEGIN a:=x;  b:=1 END                                                                     {Iniţializează pe a si b}</p>
<p>ELSE BEGIN a:=1;  b:=x END;</p>
<p>REPEAT</p>
<p>m:=(a+b)/2;</p>
<p>IF (a*a‑x)*(m*m‑x)&lt;0</p>
<p>THEN b:=m                                                                                                       {rădăcina în stânga}</p>
<p>ELSE a:=m;                                                                                                       {rădăcina in dreapta}</p>
<p>UNTIL b‑a&lt;eps;</p>
<p>r:=(a+b)/2;</p>
<p>WRITELN;  WRITELN;</p>
<p>WRITELN(&#8216;Radical(&#8216;,x:6:1,&#8217;) = &#8216;,r:6:3);                                                                                     {r‑rad(x)&lt;eps}</p>
<p>READLN</p>
<p>END.</p>
<p><em>1.2. NUMERE PITAGORICE</em>.</p>
<p>Numerele <em>a,b,c</em>, se numesc pitagorice dacă</p>
<p>Specificarea problemei este:</p>
<p><em>DATE n;                                                                               {nN; pentru n&lt;12 nu există triplete}</em></p>
<p><em> REZULTATE toate tripletele de numere pitagorice (a,b,c) cu proprietatea</em></p>
<p><em> 0&lt;a&lt;b&lt;c şi a+b+cn.</em></p>
<p>Vom nota prin <em>S</em> suma <em>a+b+c</em>. Se ştie că (3,4,5) este primul triplet de numere pitagorice. În acest caz <em>S</em> ia valori de la 12 la <em>n</em>. Întrucât  <em>3a&lt;S</em> variabila <em>a</em> ia valori de la 3 la <em>S</em>/3. Apoi 2<em>b</em>&lt;<em>S-a</em> deci <em>b</em> va lua valori de la <em>a+1</em> la (<em>S-a</em>)/2. Algoritmul pentru rezolvarea problemei este dat în continuare :</p>
<p><em>Algoritmul NRPITAGORICE este :</em></p>
<p><em> Date n;                                                                                                {nN; pentru n&lt;12 nu există triplete}</em></p>
<p><em> Dacă n&lt;12</em></p>
<p><em> atunci Tipăreşte &#8220;Nu există numerele cerute&#8221;</em></p>
<p><em> altfel Pentru S=12,n execută</em></p>
<p><em> Pentru a=3,S/3 execută</em></p>
<p><em> Pentru b=a+1,(S-a)/2 execută</em></p>
<p><em> Fie c:=S-a-b;</em></p>
<p><em> Dacă c=a+b atunci Tipăreşte(a,b,c) Sf-dacă</em></p>
<p><em> Sf-pentru</em></p>
<p><em> Sf-pentru</em></p>
<p><em> Sf-pentru </em></p>
<p><em> Sf-dacă</em></p>
<p><em>Sf-algoritm.</em></p>
<p><em> </em></p>
<p>Programul Pascal corespunzător este dat în continuare.</p>
<p>PROGRAM  NRPITAGORICE;                                                         {Programul 1.1.2. Numere pitagorice}</p>
<p>VAR n,                                                                                                                             {    nN;  a+b+cn        }</p>
<p>S,                                                                                                                                   {    S  =  a+b+c          }</p>
<p>a,b,c,                                                                                                   {(a,b,c) triplet de numere pitagorice}</p>
<p>{  0 &lt; a &lt; b &lt; c          }</p>
<p>k     : integer;                                                                                                                                    { contor }</p>
<p>BEGIN</p>
<p>WRITELN(&#8216;Se tipăresc tripletele(a,b,c) de numere pitagorice&#8217;);</p>
<p>WRITELN(&#8216;cu proprietatea: a+b+c&lt;=n, pentru n dat&#8217;);</p>
<p>WRITE(&#8216;Daţi valoarea lui n:&#8217;); READLN(n);</p>
<p>For k:=1 to 4 do writeln;</p>
<p>k:=0;</p>
<p>IF n&lt;12</p>
<p>THEN WRITELN(&#8216;Nu exista numerele cerute&#8217;)</p>
<p>ELSE FOR S:=12 TO n DO</p>
<p>FOR a:=3 TO S DIV 3 DO</p>
<p>FOR b:=a+1 TO (S‑a) DIV 2 DO</p>
<p>BEGIN</p>
<p>c:=S‑a‑b;</p>
<p>IF c*c=a*a+b*b THEN BEGIN</p>
<p>k:=k+1;</p>
<p>WRITELN(&#8216;Tripletul (a,b,c)&#8217;,k:3,&#8217;= &#8216;,a:3, b:3,c:3);</p>
<p>END {IF}</p>
<p>END;</p>
<p>READLN;</p>
<p>END.</p>
<p><em><a rel="attachment wp-att-155" href="http://resurse-educationale.uv.ro/?attachment_id=155">68 de pagini de probleme rezolvate si teorie in Pascal</a></em></p>
]]></content:encoded>
			<wfw:commentRss>http://resurse-educationale.uv.ro/?feed=rss2&#038;p=154</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sisteme de numeraţie. Congruenţe. Rezolvarea problemelor în limbajul de programare Pascal</title>
		<link>http://resurse-educationale.uv.ro/?p=146</link>
		<comments>http://resurse-educationale.uv.ro/?p=146#comments</comments>
		<pubDate>Thu, 17 Mar 2011 08:40:16 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Informatica aplicata]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Teze]]></category>
		<category><![CDATA[congruente]]></category>
		<category><![CDATA[programare]]></category>
		<category><![CDATA[reprezentarea numerelor]]></category>
		<category><![CDATA[sisteme de numereaţie]]></category>
		<category><![CDATA[teza]]></category>

		<guid isPermaLink="false">http://resurse-educationale.uv.ro/?p=146</guid>
		<description><![CDATA[În calculatoarele digitale informaţia de orice categorie este reprezentată, stocată şi prelucrată în formă numerică. Numerele se reprezintă prin simboluri elementare numite cifre. Totalitatea regulilor de reprezentare a numerelor împreună cu mulţimea cifrelor poartă denumirea de sistem de numeraţie. Există &#8230; <a href="http://resurse-educationale.uv.ro/?p=146">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>În calculatoarele digitale informaţia de orice categorie este reprezentată, stocată şi prelucrată în formă numerică. Numerele se reprezintă prin simboluri elementare numite <strong>cifre</strong>. <strong>Totalitatea regulilor de reprezentare a numerelor împreună cu mulţimea cifrelor poartă denumirea de <em>sistem de numeraţie</em>.</strong> Există două tipuri de sisteme de numeraţie: <em> sisteme poziţionale de numeraţie şi sisteme nepoziţionale de numeraţie</em>.</p>
<p>Un sistem de numeraţie poziţional este caracterizat de baza sa. Numărul cifrelor defineşte <strong>baza sistemului de numeraţie.</strong> Pentru un sistem de numeraţie poziţional este justă următoarea egalitate:</p>
<p>X(q)=a<sub>n</sub>q<sup>n</sup>+a<sub>n-1</sub>q<sup>n-1</sup>+&#8230;+a<sub>1</sub>q<sup>1</sup>+a<sub>0</sub>q<sup>0</sup>+a<sub>-1</sub>q<sup>-1</sup>+&#8230;+a<sub>-m</sub>q<sup>-m</sup>,          (1)</p>
<p>unde q – baza sistemului poziţional de numeraţie, un număr întreg; X(q) – un număr arbitrar reprezentat în sistemul de numeraţie poziţional cu baza q; a<sub>i</sub> – coeficienţii şirului (cifrele sistemului de numeraţie); n, m – numărul de clase întregi şi fracţionare. În practică se utilizează forma prescurtată de reprezentare a numerelor, adică X(q)=a<sub>n</sub>a<sub>n-1</sub>&#8230;a<sub>1</sub>a<sub>0</sub>a<sub>-1</sub>&#8230;a<sub>-m</sub>.</p>
<p>Egalitatea (1) se utilizează şi pentru conversia numerelor reprezentate într-un sistem poziţional de numeraţie cu baza q în echivalentul său zecimal.</p>
<p>Conversia numărului zecimal X<sub>10</sub> în echivalentul său în baza q se efectuează conform următoarelor reguli:</p>
<p>Întrucât 8=2<sup>3</sup>, conversia <strong>binar – octală</strong> şi <strong>octal – binară</strong> se poate face direct. Orice cifră octală se reprezintă prin trei cifre binare, numită triadă:</p>
<p>0 = 000           4 = 100</p>
<p>1 = 001           5 = 101</p>
<p>2 = 010           6 = 110</p>
<p>3 = 011           7 = 111.</p>
<p>Dacă se consideră un număr octal, pentru conversia în binar se va scrie fiecare cifră octală prin trei cifre binare.</p>
<p>Dacă se consideră un număr binar, pentru conversia în octal se vor grupa cîte trei cifre binare, pornind de la poziţia virgulei spre stînga pentru partea întreagă, respectiv dreapta pentru partea fracţionară, găsind corespondentul octal. Pentru completarea unui grup de trei cifre binare, zerourile din faţa numărului, respectiv după ultima cifră a părţii fracţionare nu modifică semnificaţia numărului.</p>
<p>Într-un mod similar se procedează şi în cazul sistemului hexazecimal, baza căruia 16=2<sup>4</sup>. Orice cifră hexazecimală se reprezintă prin 4 cifre binare, numită tetradă:</p>
<p>0 = 0000               8 = 1000</p>
<p>1 = 0001               9 = 1001</p>
<p>2 = 0010               A = 1010</p>
<p>3 = 0011               B = 1011</p>
<p>4 = 0100               C = 1100</p>
<p>5 = 0101               D = 1101</p>
<p>6 = 0110               E = 1110</p>
<p>7 = 0111               F = 1111.</p>
<p><a rel="attachment wp-att-147" href="http://resurse-educationale.uv.ro/?attachment_id=147">teza_sisteme</a></p>
]]></content:encoded>
			<wfw:commentRss>http://resurse-educationale.uv.ro/?feed=rss2&#038;p=146</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Analiza timpului de calcul.</title>
		<link>http://resurse-educationale.uv.ro/?p=130</link>
		<comments>http://resurse-educationale.uv.ro/?p=130#comments</comments>
		<pubDate>Thu, 17 Mar 2011 08:26:44 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Pascal]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Teze]]></category>
		<category><![CDATA[algoritm]]></category>
		<category><![CDATA[analiza]]></category>
		<category><![CDATA[calcul]]></category>
		<category><![CDATA[programare]]></category>
		<category><![CDATA[teza]]></category>
		<category><![CDATA[timp]]></category>

		<guid isPermaLink="false">http://resurse-educationale.uv.ro/?p=130</guid>
		<description><![CDATA[Ne propunem să lămurim modul în care se estimează timpul de calcul necesar unui program pentru a furniza rezultatul. Să considerăm, una din cele mai simple probleme. Se dă un vector cu n componente. Se cere sa se calculeze maximul &#8230; <a href="http://resurse-educationale.uv.ro/?p=130">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Ne propunem să lămurim modul în care se estimează timpul de calcul necesar unui program pentru a furniza rezultatul.</p>
<p>Să considerăm, una din cele mai simple probleme. Se dă un vector cu n componente. Se cere sa se calculeze maximul dintre componentele sale.</p>
<p>Reamintim, pe scurt algoritmul:</p>
<p>Timpul de calcul depinde, în primul rînd, de lungimea(mărimea) datelor de  intrare, pe care o vom nota cu n.</p>
<p>Exemple:</p>
<p>Pentru a calcula timpul de calcul ar trebui inventariem toate instrucţiunile programului şi să ştim d cîte ori se execută fiecare din ele(în funcţie de n).Mai mult, ar trebuie să cunoaştem cît durează execuţia fiecărui tip de instrucţiune.</p>
<p>Observaţie 1.</p>
<p>Exemplu. Pentru calculul maximului, nu putem şti de cîte ori se execută atribuirea max:=v[i]. Cu toate acestea putem considera că există o proporţionalitate între valoarea n şi numărul de execuţii.</p>
<p>Observaţia 2.</p>
<p>Datorită acestor considerate vom proceda astfel.</p>
<p>Se alege o operaţie numită operaţie de bază, şi se vede de cîte ori se execută aceasta. Cerinţa pentru operaţia de bază este ca aceasta să se execute de un număr de ori, numărul care să poată calcula de la început pornind de la n.</p>
<p>Exemplu.</p>
<p>În astfel de cazuri(cînd avem de ales între mai multe operaţii de bază), vom alege acea operaţie care corespunde cît mai bine scopului propus.</p>
<p>Astfel, dacă analizăm un algoritm de generare a permutării comparativ cu altele de aceeaşi natură vom alege ca operaţie de bază comparaţia.</p>
<p>În cazul în care analizăm un algoritm oarecare, în care soluţia este sub formă de permutare, putem considera ca operaţie de bază permutarea. Problema se spune în felul următor: dacă căutăm soluţia printre toate permutările pe care se pot genera vom avea n! căutări(un număr imens !), oare nu se poate altfel?</p>
<p>Exemple de probleme la care se foloseşte un astfel de raţionament: problema comis voiajorului, problema celor n dame.</p>
<p>Timpul estimat de calcul se trece sub formă aproximativă astfel:</p>
<p>O(număr estimat de execuţii ale operaţiei de bază)</p>
<p>Exemplu de exprimare a timpului.</p>
<p>Dacă un algoritm efectuiază 3n<sup>2</sup>+7n+5 operaţii de bază, vom spune că aceasta este un algoritm cu O(n<sup>2</sup>).</p>
<p>Exemple.</p>
<p>În cazul de faţă operaţia aleasă este cea de comparare. Pentru un vector cu n componente se fac n-1 comparaţii. Aceasta înseamnă că dacă vectorul are o sută de componente se fac 99 de comparaţii ş.a.m..d.. Se poate demonstra faptul că un algoritm mai bun nu există!</p>
<p>2.  Pentru generarea permuntărilor(în cazul în care se consideră ca operaţie de bază generarea unei permutări) timpul estimat de calcul este O(n!).</p>
<p>În anumite cazuri nu putem preciza nici macar numărul de execuţie ale operaţiilor de bază.</p>
<p>Exemplu. Sortarea prin interschimbare(vezi 6.2.1). În cazul în care vectorul este sortat se execută n-1 comparaţii (se parcurge vectorul o singură dată), dacă vectorul este sortat invers se execută n(n-1)/2 operaţii de bază (se parcurge vectorul de n ori).</p>
<p>În astfel de cazuri se poate considera:</p>
<p>De fiecare dată cînd se trece timpul estimat se precizează despre care este vorba (minim, mediu, maxim). În practică, prezintă interes timpul madiu sau maxim.</p>
<p>Dacă timpul estimat este sub forma O(n<sup>k</sup>), k=N*, spunem că algoritmul este în timp polinomial.</p>
<p>Exemlu. Sortarea prin interschimbare are timpul (mediu, maxim) polinomial şi anume O(n<sup>2</sup>).</p>
<p>Un algoritm în O(n) se numeşte algoritm liniar.</p>
<p>Dacă un algoritm are un timp estimat O(2<sup>n</sup>), O(3<sup>n</sup>).. spunem că algoritmul este în timp exponenţial.</p>
<p>Un algoritm în timp O(n!) este asimilat unui algoritm în timp exponenţial.</p>
<p>n!=1x2x&#8230;n&lt;2x2x&#8230;.x2=2<sup>n-1</sup>.</p>
<p>În practică nu sunt admişi decît algoritm în timp polinomial, deşi nu este deloc indiferent gradul polinomului.</p>
<p>Şi totuşi pentru ce tot acest efort de estimare a timplui de calcul? Oare viteza de lucru a unui calculator nu este atît de mare, în cît abstracţie făcînd de cîteva minute de calcul, în plus sau în minus, să renunţăm la estimarea lui? Răspunsul la această la această întrebarea este categoric negativ. Mai mult timpul de calcul este esenţial dacă este prea mare algoritmul nu are nici un fel de valoare practică. Să ne imaginăm un algoritm care are un timp de calcul O(2<sup>n</sup>). Dacă n este de 10, calculatorul va efectua aproximativ 1024 operaţii elementare. Dacă n este 100 acesta va trebui să efectueze 1024<sup>*</sup>1024<sup>*</sup>&#8230;<sup>*</sup>1024 operaţii elementare, adică un număr mai mare decît 1000<sup>*</sup>1000<sup>*</sup>&#8230;<sup>*</sup>1000 adică 1000000&#8230;0000 (de treizeci de ori). Aceasta este un număr imens. Dar dacă n este 1000? pentru un n nu foarte mare, nici cel mai modern calculator din lume nu scoate rezultatul decît în sute sau în mii de ani. De astfel ce înseamnă în asemenea cazuri un calculator modern? Să presupunem că un sistem PENTIUM are o viteză de circa 25 de ori mai mare decît un sistem XT. Să presupunem că avem un program care are un timp de calcul de ordinul O(2<sup>n</sup>). Se cere să rezolvăm o problemă pentru n=30. Fie că timpul necesar rulării acestei probleme pe un XT. Această problemă va fi rulată pe PENTIUM în timpul t/25. Dorim să rezolvăm problema pe PENTRIUM pentru n=35 (n a crescut numai cu 5). Dar 2<sup>35</sup>=2<sup>30*</sup>2<sup>5</sup>=32<sup>*</sup>2<sup>30</sup>. Deci dacă n a crescut cu 5, vom avea nevoie de mai mult timp de lucru să rezolvăm problema pe PENTIUM decît timpul pentru rezolvarea ei pentru n=30 pe XT.</p>
<p>Vă daţi seama ce înseamnă un timp de calcul de ordinul O(2<sup>n</sup>)? Sporul lui n cu o singură unitate duce la dublarea timpului de calcul.</p>
<p>Ce concluzie tragem de aici? De cîte ori avem de rezovat o problemă căutăm pentru aceasta un algoritm în timp polinomial (polinomul va avea gradul minim). Mai mult căutăm un algoritm care să rezovle problema în timp polinomial de grad minim.</p>
<p><a rel="attachment wp-att-131" href="http://resurse-educationale.uv.ro/?attachment_id=131">analiza timpului de calcul</a></p>
]]></content:encoded>
			<wfw:commentRss>http://resurse-educationale.uv.ro/?feed=rss2&#038;p=130</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Iniţializare grafică în Pascal.</title>
		<link>http://resurse-educationale.uv.ro/?p=126</link>
		<comments>http://resurse-educationale.uv.ro/?p=126#comments</comments>
		<pubDate>Thu, 17 Mar 2011 08:23:05 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Pascal]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Teze]]></category>
		<category><![CDATA[grafica]]></category>
		<category><![CDATA[graphics]]></category>
		<category><![CDATA[modulul grafic]]></category>
		<category><![CDATA[programare]]></category>

		<guid isPermaLink="false">http://resurse-educationale.uv.ro/?p=126</guid>
		<description><![CDATA[Placa grafică sau adaptorul de ecran este componenta hard a calculatorului care asigură gestiunea memoriei şi controlul monitorului video. Driver-ul grafic este componenta soft-ului care comandă placa grafică. Placa grafică tratează ecranul în două moduri: În regimul text fiecare caracter &#8230; <a href="http://resurse-educationale.uv.ro/?p=126">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Placa grafică sau adaptorul de ecran este componenta hard a calculatorului care asigură gestiunea memoriei şi controlul monitorului video. Driver-ul grafic este componenta soft-ului care comandă placa grafică. Placa grafică tratează ecranul în două moduri:</p>
<p>În regimul <strong>text</strong> fiecare caracter ce apare la ecran este păstrat în memoria calculatorului în doi octeţi, unul cuprinde codul ASCII al caracterului, iar al doilea culorile, iluminarea, culoarea fonului şi clipirea. În regimul <strong>grafic</strong> memoria ecranului are un cod pentru fiecare pixel prin care se determină culoarea pixelui.</p>
<p>Zona de memorie ecran pentru memorarea unui ecran se numeşte <strong>pagină video</strong>. Pagina video care apare la un moment dat pe ecran se numeşte <strong>pagină vizibilă</strong>. Prelucrarea informaţiei grafice în Pascal este susţinută de modulul <strong>Graph</strong>.</p>
<p>Modulul <strong>Graph</strong> pune la dispoziţie circa 90 de proceduri şi funcţii păstrate în fişierul graph.tpu. Utilizarea procedurilor şi funcţiilor grafice este posibilă dacă în partea declarativă <strong>uses</strong> vom declara modulul <strong>graph</strong>. Fiecare regim grafic are driver-ul său specific. Tabelul  următor conţine lista regimurilor grafice posibile pentru diferite adaptoare grafice. În prima coloniţă sunt indicare  tipurile de drivere, în a doua – numărul de pixeli de pe ecran, în coloniţa a treia este indicată palitra de culori a regimului dat, în ultima coloniţă sunt indicate numărul de pagini video care se pot încărca simultan în memoria videoadaptorului.</p>
<p>Orice program Turbo Pascal ce conţine prelucrarea informaţiei grafice trebuie să cuprindă:</p>
<p>Iniţializarea regimului grafic se relizează prin procedura <strong>InitGraph</strong> cu formatul:</p>
<p><strong>InitGraph</strong>(var GraphDriver:integer; {tipul adaptorului}</p>
<p>var GraphMode:integer; {regimul grafic}</p>
<p>var DriverPath:string); {calea spre driver}</p>
<p>De exemplu:</p>
<p>procedure ini;</p>
<p>var gd, gm:integer;</p>
<p>begin</p>
<p>gd:=detect;</p>
<p>initgraph(gd,gm,&#8217;c:\tp\bgi&#8217;);</p>
<p>if graphresult&lt;&gt;grok then halt(1);</p>
<p>end;</p>
<h2><em>2. Detecţia rezoluţiei</em></h2>
<p><em>Funcţia GetMaxX întoarce un numar întreg reprezentând numărul maxim de pixeli (rezoluţia), după direcţia orizontală.</em></p>
<p><em>Function GetMaxX:integer;</em></p>
<p><em>Funcţia GetMaxY determină numărul maxim de pixeli (rezoluţia), dupa direcţia verticală.</em></p>
<p><em>Function GetMaxY:integer;</em></p>
<p><em>Funcţia GetMaxColor determină numărul maxim de culori cu care se poate desena pe ecran. </em><em>În mod convenţional, &#8220;culoarea&#8221; 0 este cea neagră, astfel încât numărul de culori &#8220;de lucru&#8221; se află în gama 1..GetMaxColor.</em></p>
<p><em>Function GetMaxColor:word;</em></p>
<p><em>Cele 3 funcţii sunt necesare pentru scrierea de programe ce folosesc modul grafic şi care pot rula pe orice calculator, indiferent de tipul monitorului şi a placii grafice.</em></p>
<h2><em>3. Ecranul în modul grafic</em></h2>
<p><em>Dimensiunea unui element de imagine (pixel) pe direcţia orizontală diferă, în general, de dimensiunea lui pe verticală. Doar adaptoarele mai noi (cum ar fi VGA, VESA) consideră pixelul că având dimensiunile egale pe cele două direcţii.</em></p>
<p><em>Raportul între dimensiunea pe orizontală şi dimensiunea pe verticală a unui pixel se numeşte &#8220;aspect ratio&#8221; (factor/raport de forma).</em></p>
<p><em>Procedura prin care se poate afla factorul de forma este GetAspectRatio.</em></p>
<p><em>PROCEDURE GetAspectRatio(Var xasp,yasp:word ); </em></p>
<p><em>Parametrii </em><strong>xasp</strong><em> şi </em><strong>yasp</strong><em> reprezintă numărul de pixeli pe direcţie orizontală şi verticală necesari pentru a obţine o dimensiune &#8220;reală&#8221;.</em></p>
<p><em>Procedura complementară cu GetAspectRatio este SetAspectRatio, ce modifică factorul de forma la valorile dorite. Parametrii </em><strong>xasp</strong><em>, </em><strong>yasp</strong><em> au semificaţie identică cu cei ce apar în procedura GetAspectRatio.</em></p>
<p><em>Function SetAspectRatio(xasp,yasp:word):word;</em></p>
<h2>4. Noţiunea de cursor grafic</h2>
<p>O noţiune specifică modului grafic este cursorul grafic sau &#8220;curent pointer&#8221;, notat CP. El este similar cu conceptul de cursor din modul text, dar, spre deosebire de acesta, cursorul este invizibil în mod grafic. Poziţia acestui cursor este importantă la trasarea liniilor, scrierea de text etc.</p>
<p>Pentru a determina poziţia curentă a cursorului grafic se folosesc funcţiile GetX pentru coordonata orizontală şi GetY pentru coordonata verticală.</p>
<p><a rel="attachment wp-att-127" href="http://resurse-educationale.uv.ro/?attachment_id=127">Initializare_grafica_pascal</a></p>
]]></content:encoded>
			<wfw:commentRss>http://resurse-educationale.uv.ro/?feed=rss2&#038;p=126</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Teză de licenţă. Admiterea la universitatea. Aplicaţie.</title>
		<link>http://resurse-educationale.uv.ro/?p=115</link>
		<comments>http://resurse-educationale.uv.ro/?p=115#comments</comments>
		<pubDate>Wed, 16 Mar 2011 08:44:12 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Baze de date]]></category>
		<category><![CDATA[Informatica aplicata]]></category>
		<category><![CDATA[Teze]]></category>
		<category><![CDATA[admitere]]></category>
		<category><![CDATA[baze de date]]></category>
		<category><![CDATA[studii]]></category>
		<category><![CDATA[universitate]]></category>

		<guid isPermaLink="false">http://resurse-educationale.uv.ro/?p=115</guid>
		<description><![CDATA[Admiterea se va efectua în bază de concurs care are drept scop selectarea candidaţilor pe criterii de cunoştinţe şi aptitudini. Dat fiind faptul că examenele de finalizare a învăţămîntului preuniversitar (liceu, şcoală medie de cultură generală), sunt cu funcţii de &#8230; <a href="http://resurse-educationale.uv.ro/?p=115">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Admiterea se va efectua <strong>în bază de concurs care are drept scop selectarea candidaţilor pe criterii de cunoştinţe şi aptitudini</strong>.</p>
<p>Dat fiind faptul că examenele de finalizare a învăţămîntului preuniversitar (liceu, şcoală medie de cultură generală), sunt cu funcţii de evaluare/certificare şi selecţie pentru treptele ulterioare de învăţămînt, admiterea la facultate se va realiza în baza <strong>rezultatelor</strong> atestate de către <strong>candidaţi la examenele de bacalaureat sau de absolvire a şcolii medii de cultură generală</strong>.</p>
<p>Organizarea <strong>concursului unic de admitere</strong> (<em>cu finanţare bugetară şi prin contract</em>), cu înmatricularea în ordinea descrescătoare a mediei de concurs a candidaţilor se va efectua în limita numărului de locuri stabilite pentru fiecare specialitate.</p>
<p><strong>Înmatricularea la locurile prin contract</strong> cu achitarea taxei de studii se va realiza din rîndul candidaţilor la admitere situaţi sub ultimul admis la locurile finanţate de la buget, în ordinea descrescătoare a mediilor de concurs.</p>
<p>Candidaţii au posibilitatea <strong>să opteze la admitere pentru 3 specialităţi</strong>, din acelaşi domeniu de formare profesională sau din domenii diferite. Metodologia respectivă asigură <strong><em>acces liber şi echitabil</em></strong> la studii superioare <strong><em>pe bază de merite</em></strong> pentru diferite categorii de candidaţi.</p>
<p>În acest scop Ministerul Educaţiei elaborează Regulamentul de admitere care stabileşte cote de înmatriculare pentru candidaţi în funcţie de tipul instituţiei absolvite /actul de studii, după mediul de reşedinţă, limba de instruire. Cota pentru fiecare categorie se stabileşte în funcţie de ponderea acesteia în numărul total de candidaţi în anul respectiv.</p>
<p>În anul trecut deţinătorii atestatului de studii medii de cultură generală au avut acces la învăţămîntul superior, cota-parte la admitere la învăţământul de zi pentru această categorie va constitui <strong>15</strong> la sută din numărul total de locuri. Cota deţinătorilor diplomelor de bacalaureat a constituit respectiv <strong>75</strong> la sută din numărul total de locuri, iar pentru deţinătorii diplomelor de studii medii de specialitate care solicită specialităţi/ domenii din formare profesională conform profilului studiat în colegiu <strong>–10</strong> la sută.</p>
<p>În anul trecut, ca şi în ceilalţi ani, unor categorii de candidaţi li se acordă facilităţi pentru a fi înmatriculaţi. S-a stabilit <strong>cota de 15 la sută</strong> din numărul total de locuri prevăzute în planul de înmatriculare cu finanţare bugetară, pentru anumite categorii defavorizate de candidaţi, inclusiv:</p>
<p>a) copiii orfani şi copiii rămaşi fără îngrijirea părinţilor, cu statut de copil orfan;<br />
b) copiii invalizi de gradele I şi II;<br />
c) copiii cu deficienţe fizice şi senzoriale;<br />
d) copiii ai căror ambii părinţi sînt invalizi;<br />
e) copiii ai căror părinţi au participat la acţiunile militare pentru apărarea integrităţii şi independenţei Republicii Moldova, în războiul din Afganistan sau la lichidarea consecinţelor avariei de la Cernobîl; militarii, participanţi la operaţiunile militare post-conflict cu caracter umanitar în Irak;<br />
f) copiii din familiile cu trei şi mai mulţi copii, aflaţi la întreţinere;<br />
g) absolvenţii şcolilor din localităţile de est ale republicii şi din mun. Bender, care au studiat conform programelor de învăţământ aprobate de Ministerul Educaţiei şi Tineretului al Republicii Moldova;<br />
h) copiii ţiganilor;<br />
i) tinerii care au îndeplinit serviciul militar în termen.</p>
<p>Înscrierea la cota de 15 la sută se efectuează la solicitarea candidaţilor.</p>
<p>În categoria candidaţilor care beneficiază de prioritate la înmatriculare la specialităţile domeniului <strong>Ştiinţe ale educaţiei</strong> au fost incluşi copii din familii de pedagogi (ambii părinţi pedagogi sau unul, în cazul candidaţilor din familii monoparentale).</p>
<p>De asemenea premianţii olimpiadelor internaţionale şi naţionale vor beneficia de facilităţi la înmatriculare în instituţiile de învăţămînt superior. Astfel, deţinătorii premiilor de gradele I-III (diplome şi medalii de aur, argint, bronz) la <strong>olimpiadele internaţionale</strong> la disciplinele şcolare incluse în planul de învăţământ din ultimii trei ani vor putea solicita înmatriculare <strong>la specialitatea/domeniul de formare profesională solicitat</strong>.</p>
<p>Pentru prima dată anul acesta a fost organizat <strong>concursului republican „Cel mai bun elev inovator”</strong>. Premianţii concursului, de rînd cu deţinătorii premiilor de gradele I-III la <strong>olimpiadele republicane</strong>, la disciplinele şcolare incluse în planul de învăţământ din anul admiterii, se vor înmatricula, la solicitare, <strong>la specialitatea/ domeniul de formare profesională, corespunzătoare disciplinei la care au fost premiaţi</strong>.</p>
<p><a rel="attachment wp-att-117" href="http://resurse-educationale.uv.ro/?attachment_id=117">Teza admitere</a>.doc</p>
]]></content:encoded>
			<wfw:commentRss>http://resurse-educationale.uv.ro/?feed=rss2&#038;p=115</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
