<?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; algoritm</title>
	<atom:link href="http://resurse-educationale.uv.ro/?feed=rss2&#038;tag=algoritm" 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>Utilizarea variabilelor aleatoare la rezolvarea problemelor</title>
		<link>http://resurse-educationale.uv.ro/?p=150</link>
		<comments>http://resurse-educationale.uv.ro/?p=150#comments</comments>
		<pubDate>Thu, 17 Mar 2011 08:43:23 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Pascal]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[algoritm]]></category>
		<category><![CDATA[aplicatii]]></category>
		<category><![CDATA[extraşcolar]]></category>
		<category><![CDATA[programare]]></category>
		<category><![CDATA[variabile aleatoare]]></category>

		<guid isPermaLink="false">http://resurse-educationale.uv.ro/?p=150</guid>
		<description><![CDATA[Îmbinarea de cuvinte „variabilă aleatoare” în sensul direct se utilizează atunci cînd dorim să subliniem, că nu se ştie dinainte care va fi valoarea acestei variabile. Deasemenea în spatele acestor cuvinte se ascunde şi neştirea cum ar arăta această variabilă. &#8230; <a href="http://resurse-educationale.uv.ro/?p=150">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Îmbinarea de cuvinte „variabilă aleatoare” în sensul direct se utilizează atunci cînd dorim să subliniem, că nu se ştie dinainte care va fi valoarea acestei variabile. Deasemenea în spatele acestor cuvinte se ascunde şi neştirea cum ar arăta această variabilă.</p>
<p>Însă un matematician utilizează aceleaşi cuvinte – „variabilă aleatoare”, punînd în sensul acestor cuvinte ceva bine determinat. Într-adevăr, spune un matematician, noi nu ştim ce valoare va primi variabila aleatoare în cazul dat concret, dar noi putem determina ce valori poate primi această variabilă, şi putem calcula care este probalilitate de apariţie a evenimentelor.</p>
<p>Pe baza acestor date noi nu putem să anticipăm care ar fi rezultatul unui experiment legat de această mărime, dar noi putem să ştim care ar fi rezultatul unei serii întregi de experimente. Cu cît este mai mare numărul de experimente cu atît mai exact putem să prezicem care va fi rezultatul.</p>
<p>Pentru a defini o variabilă aleatoare, trebuie să indicăm ce valori ar putea lua această variabilă şi care sunt probabilităţile de apariţie ale acestor valori.</p>
<p>Există două tipuri de variabile aleatoare: continue şi discrete.</p>
<p><strong> </strong></p>
<h2>§1. Variabile aleatoare continue</h2>
<p><strong> </strong></p>
<p>Variabile aleatoare, valorile căreia aparţin unui interval, se numeşte continuă.</p>
<p>În cazuri particulare acesta poate fi nu un singur interval, dar reuniunea a mai multor intervale. Intervalele pot fi finite, parţial finite sau infinite, de exemplu:  (<em>a</em>;<em> b</em>], (–µ ; <em>a</em>), [<em>b</em>;µ), (–µ; µ).</p>
<p>În general variabila aleatoare continuă este o abstractizare. Вообще непрерывная случайная величина – это абстракция. Obuzul, lansat de un proectil, poate să parcurgă o distanţă cuprinsă între 5 şi 5,3 km, dar nimănui nu-i va veni în gînd să măsoare această distanţă cu exactitatea de pînă la milimetri, nemaivorbind de exactitatea absolută. În practică această distanţă va fi o variabilă aleatoare discretă, la care fiecare valoare a variabilei se deosebeşte de alta cel puţin cu distanţa de un metru.</p>
<p>La descrierea unei variabile aleatoare continue principial nu pot fi scrise şi numerotate toate valorile pe care le poate lua această variabilă, care aparţin unui interval destul de îngust. Aceste valori formează o mulţime nenumărabilă, care se numeşte „”continuu”.</p>
<p>Dacă x este o variabilă aleatoare continuă, atunci egalitatea x = <em>х</em> reprezintă în sine, ca şi în cazul variabilei aleatoare discrete, un careva eveniment aleator, dar pentru variabila aleatoare continuă acest eveniment poate fi legat cu o probabilitate egală cu zero, ceea ce nu indică că evenimentul este imposibil. Aşa de exemplu, putem spune, că obuzul va parcurge distanţa de 5245,7183m cu probabiliatea zero, sau, că diametrului unei piese deviază de la cel ideal cu 0,001059 milimetri. În aceste cazuri este greu să ne dăm seam  - avut loc experimentul sau nu, deoarece măsurarea acestor mărim se efectuiază cu o careva eroare, şi în calitate de rezultat pot fi doare indicate limitele între care se va afla mărimea dată.</p>
<p>Valorilor variabilelor aleatoare le este specifică o careva nedeterminare. De exemplu, nu are sens distingem două valori care se abat de la valoarea matematic ideală cu 0,5mm şi 0,5000025mm. Probabilitatea, diferită de zero, poate fi legată doar cu nimerirea  mărimii în intervalul dat, chiar dacă este destul de îngust.</p>
<p>Fie x – o variabilă aleatoare continuă. Vom cerceta pentru un careva număr <em>х </em>probabilitatea inegalităţii  <em>х</em> &lt; x &lt; <em>х </em>+ D<em>х</em></p>
<p><em>P</em>(<em>х</em> &lt; x &lt; <em>х </em>+ D<em>х</em>).</p>
<p>Aici D<em>х –</em> mărimea unui interval îngust.</p>
<p>Evident, că dacă  D<em>х </em>® 0, atunci <em>P</em>(<em>х</em> &lt; x &lt; <em>х </em>+ D<em>х</em>)<em> </em>® 0. Notăm prin <em>р</em>(<em>х</em>) limita raportului <em>P</em>(<em>х</em> &lt; x &lt; <em>х </em>+ D<em>х</em>) la D<em>х , </em>cînd D<em>х </em>® 0, dacă această limită există:</p>
<p>Funcţia <em>р</em>(<em>х</em>) se numeşte <em>densitatea de repartiţie </em>a variabilea aleatoare. Di for formula (1) rezultă egalitatea, care este adevărată pentru valori foarte mici lae lui D<em>х</em> şi care poate fi considerată definirea funcţiei  <em>р</em>(<em>х</em>):</p>
<p><em>P</em>(<em>х</em> &lt; x &lt; <em>х </em>+ D<em>х</em>)</p>
<p>Evident, că funcţia <em>p</em>(<em>x</em>) este o funcţie nenegativă. Pentru definirea probabilităţii, că variabila aleatoare x va lua valori din intervalul [<em>a</em>, <em>b</em>] de lungime finită, vom alege pe acest interval numerele arbitrare <em>x</em><sub>1</sub>, <em>х</em><sub>2</sub>,¼, <sub> </sub><em>х<sub>n</sub></em> care satisfac condiţiei <em>а=х</em><sub>0</sub>&lt;<em>х</em><sub>1</sub>&lt;<em>x</em><sub>2</sub>&lt;¼&lt;<em>x<sub>n</sub></em>&lt;<em>b=x<sub>n+</sub></em><sub>1</sub>. Aceste numere impart intervalul [<em>a</em>, <em>b</em>] în <em>n</em>+1 părţi, care nu sunt altceva decît tot nişte intervale [<em>х</em><sub>0</sub>, <em>х</em><sub>1</sub>), [<em>х</em><sub>1</sub>, <em>х</em><sub>2</sub>), ¼,[<em>х<sub>n</sub></em>, <em>b</em>]. Introducem notaţiile:</p>
<p>D<em>х</em><sub>0</sub>=<em> х</em><sub>1 </sub>–<em> х</em><sub>0</sub>, D<em>х</em><sub>1</sub>=<em> х</em><sub>2 </sub>–<em> х</em><sub>1</sub>, ¼, D<em>х<sub>n </sub></em>= <em>b – х<sub>n</sub></em>,</p>
<p>şi formăm suma</p>
<p><a rel="attachment wp-att-151" href="http://resurse-educationale.uv.ro/?attachment_id=151">teza_var_aleatoare</a></p>
]]></content:encoded>
			<wfw:commentRss>http://resurse-educationale.uv.ro/?feed=rss2&#038;p=150</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>Alocarea memoriei în Turbo Pascal</title>
		<link>http://resurse-educationale.uv.ro/?p=49</link>
		<comments>http://resurse-educationale.uv.ro/?p=49#comments</comments>
		<pubDate>Mon, 31 Jan 2011 08:33:49 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Pascal]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[algoritm]]></category>
		<category><![CDATA[alocarea memoriei]]></category>
		<category><![CDATA[download]]></category>
		<category><![CDATA[programare]]></category>

		<guid isPermaLink="false">http://resurse-educationale.uv.ro/?p=49</guid>
		<description><![CDATA[Orice algoritm lucrează cu date (numere întregi, reale, şiruri de caractere etc.). Referitor la acestea, în informatică, s-au cristalizat anumite concepte fundamentale, pe care le voi prezenta în continuare. Definiţie: Printr-un tip de dată  înţelegem o mulţime cu elemente numite &#8230; <a href="http://resurse-educationale.uv.ro/?p=49">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Orice algoritm lucrează cu date (numere întregi, reale, şiruri de caractere etc.). Referitor la acestea, în informatică, s-au cristalizat anumite concepte fundamentale, pe care le voi prezenta în continuare.  <strong>Definiţie: </strong><em>Printr-un tip de dată  înţelegem o mulţime cu elemente numite valori.</em> De sxemplu:{-32768, -32767,&#8230;0,1, &#8230;32767} este omulţime de numere întregi. Atunci cînd nu există posibilatea de confuzie, putem nota mulţimea de mai sus astfel: [-32768,32767]. În Turbo Pascal un astfel de tip se numeşte <em>integer </em>şi este predefinit.  <em>Pe mulţimea valorilor unui tip se definesc operaţiile asociate tipului</em>.  De exemplu, pentru tipul <em>integer</em> se definesc operaţiile de adunare, scădere, înmulţire etc.  <em>Pentru fiecare tip se defineşte modul în care se memorează valorile sale.</em> De exemplu, pentru tipul <em>integer </em>valorile se memorizează utilizînd codul complementar şi se folosesc 2 octeţi consecutivi.  Pentru a lucra cu date de un anumit tip se folosesc variabile. O <em>variabilă </em>se caracterizează prin: tip (natura datelor şi modul de memorare), nume (prin care aceasta se adresează) şi adresă (număr de ordine al primului octet în care se reţin datele, memoria internă fiind privită ca o succesiune de octeţi numerotaţi).  Tipurile de date pot fi <em>simple</em> şi <em>structurate.</em> Limbajele de programare evoluate utilizează din plin tipurile de date. Mai mult, unele din ele permit programului, folosind tipurile existente, să definească noi tipuri de date.  <em>Noţiunea de tip de date este strînsă legată de un anumit limbaj de programare. În situaţia în care se renunţă la această legătură, se ajunge la o altă noţiune mult utilizată şi anume cea de structură de date</em>. De exemplu, <em>mulţimea</em> este o structură de date. În limbajul Turbo Pascal există tipul mulţime (<em>set</em>). Alte limbaje (de exemplu C) nu cunosc acest tip. Aceasta nu înseamnă că în C nu vom putea lucra cu mulţimi.  Variabilele declarate în secţiunea <em>var</em> a unui program sau subprogram se numesc <em>variabile statice.</em> Numărul variabilelor statice se satabileşte în momentul scrierii programului şi nu poate fi schimbat în timpul execuţiei. Există însă situaţii în care numărul necesar de variabile nu este cunoscut din timp. De exemplu, presupunem că este necesară prelucrarea datelor referitoare la persoanele care formează o listă de aşteptare (o coadă) la o casă de bilete. Lungimea cozii este nedefinită. De fiecare dată cînd apare o persoană nouă, trebuie să se creeze o variabilă de tipul respectiv. După ce persoana pleacă – variabile evine inutilă.  Variabilele care sunt create şi eventual distruse în timpul execuţiei programului se numesc <em>variabile dinamice</em> O <em>structură de date</em> este formată din datele propriu-zise şi relaţiile dintre ele. În funcţie de modul de organizare, o structură de date poate fi <em>implicită </em>sau <em>explicită</em>.  Tablourile, şirurile de caractere, articolele, fişierele şi mulţimile sunt <em>structuri implicite de date</em>. Relaţiile dintre componentele acestor structuri sînt predefinite şi nemodificabile. De exemplu, toate componentele unui şir de caractere au un nume comun, iar caracterul <em>s[i+1]</em> este succesorul caracterului <em>s[i] </em>în virtutea poziţiei ocupate.  <em>Structurile de date</em> se clasifică în două mari categorii: <em>statice şi dinamice</em>. Criteriul de clasificare este dat de modul de alocare a memoriei interne.  Întrucît structura tablourilor, şirurilor de caractere, articolelor, mulţimilor, fişierelor nu se modifică în timpul execuţiei oricărul program sau subprogram, structurile respective reprezintă structuri statice de date.</p>
<h2>§1. Tabloul</h2>
<p>Fie <em>A</em><em>ni</em><em>={1,2,….n</em><em>i</em><em>}</em> mulţimea primelor <em>n</em><em>i</em> numere naturale.  Fie <em>M=A</em><em>n1 </em><em>x A</em><em>n2 </em><em>x…..x A</em><em>nk</em> produsul cartezian a <em>k</em> astfel de mulţimi.  <strong>Definiţie<em>: </em></strong><em>Se numeşte tablou o funcţie f:M→T, unde T este o mulţime oarecare. Numărul k este dimensiunea tabloului. Dacă k=1 tabloul se mai numeşte şi vector. Vectorul are n</em><em>1</em><em> componente. Dacă k=2 tabloul se mai numeşte şi matrice. Matricea are n</em><em>1</em><em>xn</em><em>2</em><em> elemente.</em> Majoritatea limbajelor de programare evoluate au implementat tipul tablou (<em>array</em> <em>în Turbo Pascal</em>). Pentru a identifica elementele unui tablou se folosesc indicii.  <strong>Exemplul 1:</strong> Distanţa dintre două mulţimi în plan se consideră distanţa dintre două puncte ale acestor mulţimi, situate cel mai aproape unul de altul. Aflaţi distanţa dintre două mulţimi de puncte date. (pr.38, §5, [1])  <a rel="attachment wp-att-50" href="http://resurse-educationale.uv.ro/?attachment_id=50"></a></p>
<p><a rel="attachment wp-att-50" href="http://resurse-educationale.uv.ro/?attachment_id=50">Download Alocarea-memoriei</a></p>
]]></content:encoded>
			<wfw:commentRss>http://resurse-educationale.uv.ro/?feed=rss2&#038;p=49</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Programe rezolvate în Pascal</title>
		<link>http://resurse-educationale.uv.ro/?p=17</link>
		<comments>http://resurse-educationale.uv.ro/?p=17#comments</comments>
		<pubDate>Mon, 31 Jan 2011 07:23:21 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Pascal]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[algoritm]]></category>
		<category><![CDATA[download]]></category>
		<category><![CDATA[program]]></category>
		<category><![CDATA[programare]]></category>

		<guid isPermaLink="false">http://resurse-educationale.uv.ro/?p=17</guid>
		<description><![CDATA[Probelma 1. Creaţi un program care afişează următoarea funcţie. Program P2.1; uses crt; var i,n,s : integer; f : boolean; begin clrscr; repeat write(&#8216;Introduceţi un număr natural n=&#8217;); readln(n); until n&#62;2; if n mod 2=0 then f:=false else f:=true; write(&#8216;s=&#8217;); &#8230; <a href="http://resurse-educationale.uv.ro/?p=17">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p><strong>Probelma 1</strong>. Creaţi un program care afişează următoarea funcţie.</p>
<p><strong> </strong></p>
<p>Program P2.1;</p>
<p>uses crt;</p>
<p>var i,n,s : integer;</p>
<p>f : boolean;</p>
<p>begin</p>
<p>clrscr;</p>
<p>repeat</p>
<p>write(&#8216;Introduceţi un număr natural n=&#8217;);</p>
<p>readln(n);</p>
<p>until n&gt;2;</p>
<p>if n mod 2=0 then f:=false else f:=true;</p>
<p>write(&#8216;s=&#8217;);</p>
<p>for i:=1 to n-2 do</p>
<p>if(not f) and (i mod 2 =0)then write(&#8216;*&#8217;,i)</p>
<p>else</p>
<p>if f and (i mod 2&lt;&gt;0)then write(&#8216;*&#8217;,i);</p>
<p>writeln(&#8216;*&#8217;,n);</p>
<p>readkey;</p>
<p>end.</p>
<p><strong> </strong></p>
<p><strong> </strong></p>
<p><strong>Se dă un număr natural n. Verificaţi daca acest număr este prim sau nu.</strong></p>
<p><strong> </strong></p>
<p><strong> </strong></p>
<p>Program P2.2;</p>
<p>uses crt;</p>
<p>var i,n,f : integer;</p>
<p>begin</p>
<p>clrscr;</p>
<p>repeat</p>
<p>write(&#8216;Introduceţi un număr natural n=&#8217;);</p>
<p>readln(n);</p>
<p>until n&gt;2;</p>
<p>f:=0;</p>
<p>for i:=2 to n div 2 do</p>
<p>if n mod i=0 then f:=1;</p>
<p>if f=0 then</p>
<p>writeln(&#8216;Numărul&#8217;,n:6,&#8217; este prim&#8217;)</p>
<p>else</p>
<p>writeln(&#8216;Numărul&#8217;,n:6,&#8217; nu este prim&#8217;);</p>
<p>readkey;</p>
<p>end.</p>
<p><strong>Este dat intervalul numerelor naturale de la n pina la m. Determinati toate numerele naturale din acest interval.</strong><strong> </strong></p>
<p><strong> </strong></p>
<p>Program P2.3;</p>
<p>uses crt;</p>
<p>var i,n,f,j,r,m : integer;</p>
<p>begin</p>
<p>clrscr;</p>
<p>repeat</p>
<p>write(&#8216;Introduceţi limita de jos a intervalului n=&#8217;);</p>
<p>read(n);</p>
<p>write(&#8216;Introduceţi limita de sus a intervalului m=&#8217;);</p>
<p>readln(m);</p>
<p>until (n&gt;0) and(m&gt;0) and(n&lt;m);</p>
<p>writeln(&#8216;Introduceţi intervalul de la&#8217;,n:6,&#8217;pina la&#8217;,m:6&#8242;);</p>
<p>r:=0;</p>
<p>for j:=n to m do</p>
<p>begin</p>
<p>f:=0;</p>
<p>for i:=2 to j div 2 do</p>
<p>if j mod i=0 then f:=1;</p>
<p>if f=0 then</p>
<p>begin r:=1;</p>
<p>writeln(&#8216;Numărul&#8217;,j:6,&#8217; este prim&#8217;)</p>
<p>end;</p>
<p>end;</p>
<p>if r=0 then writeln(&#8216;Numărul nu este prim&#8217;);</p>
<p>readkey;</p>
<p>end.</p>
<p><strong> </strong></p>
<p><strong>Se da un număr natural n. Determinaţi toate numerele prime, inclusiv n.</strong></p>
<p><strong> </strong></p>
<p>Program P2.4;</p>
<p>uses crt;</p>
<p>var i,n,f,j,r,m : integer;</p>
<p>begin</p>
<p>clrscr;</p>
<p>repeat</p>
<p>write(&#8216;Introduceţi un număr natural n=&#8217;);</p>
<p>readln(n);</p>
<p>until n&gt;0;</p>
<p>writeln(&#8216;Introduceţi intervalul de la 1 pînă la&#8217;,n:6&#8242;);</p>
<p>r:=0;</p>
<p>for j:=1 to n do</p>
<p>begin</p>
<p>f:=0;</p>
<p>for i:=2 to j div 2 do</p>
<p>if j mod i=0 then f:=1;</p>
<p>if f=0 then</p>
<p>begin r:=1;</p>
<p>writeln(&#8216;Numarul&#8217;,j:6,&#8217; este prim&#8217;)</p>
<p>end;</p>
<p>end;</p>
<p>if r=0 then writeln(&#8216;Numărul nu este prim&#8217;);</p>
<p>readkey;</p>
<p>end.</p>
<p><strong>Introduceţi doua numere naturale m si n. Determinaţi împărţitorul lor comun NOD.</strong></p>
<p><strong> </strong></p>
<p>Program p2_5;</p>
<p>uses crt;</p>
<p>var i,m,n,k,nod:integer;</p>
<p>begin</p>
<p>clrscr;</p>
<p>repeat</p>
<p>write(&#8216;Introduceţi numărul natural n=&#8217;);</p>
<p>readln(n);</p>
<p>write(&#8216;Introduceţi numărul natural m=&#8217;);</p>
<p>readln(m);</p>
<p>until (n&gt;0) and (m&gt;0);</p>
<p>if n&gt;m then k:=m else k:=n;</p>
<p>for i:=1 to k do</p>
<p>if (n mod i=0) and (m mod i=0) then nod:=i;</p>
<p>writeln(&#8216;Împărţitorul numărului comun &#8216;,n, &#8216;şi&#8217;, m,</p>
<p>&#8216;nod=&#8217;,nod);</p>
<p>readkey;</p>
<p>end.</p>
<p><strong>Tema 3:</strong></p>
<p><strong> </strong></p>
<p><strong>Sunt date următoarele n numerele naturale. Găsiţi suma tuturor numerelor naturale negative.</strong></p>
<p><strong> </strong></p>
<p><strong> </strong></p>
<p>Program P3.1;</p>
<p>uses crt;</p>
<p>var n,x,sum,i : integer;</p>
<p>begin</p>
<p>clrscr;</p>
<p>repeat</p>
<p>write(&#8216;Introduceţi lungimea următoarelor numere n=&#8217;);</p>
<p>readln(n);</p>
<p>until n&gt;0;</p>
<p>sum:=0;</p>
<p>for i:=1 to n do</p>
<p>begin</p>
<p>writeln(&#8216;introdu x=&#8217;);</p>
<p>readln(x);</p>
<p>if x&lt;0 then sum:=sum+x;</p>
<p>end;</p>
<p>if sum=0 then writeln(&#8216;Numărul negativ nu exisţă&#8217;)</p>
<p>else</p>
<p>writeln(&#8216;Suma numerelor negative este sum=&#8217;,sum);</p>
<p>end.</p>
<p><strong>Sunt date următoarele n numere naturale. Găsiţi numărul maximal.</strong></p>
<p>Program P3.2;</p>
<p>uses crt;</p>
<p>var n,x,max,i : integer;</p>
<p>begin</p>
<p>clrscr;</p>
<p>repeat</p>
<p>write(&#8216;Introduceţi lungimea următoarelor numere n=&#8217;);</p>
<p>readln(n);</p>
<p>until n&gt;0;</p>
<p>writeln(&#8216;introdu x=&#8217;);</p>
<p>readln(x);</p>
<p>max:=x;</p>
<p>for i:=2 to n do</p>
<p>begin</p>
<p>writeln(&#8216;introdu x=&#8217;);</p>
<p>readln(x);</p>
<p>if (x&gt;max) then max:=x;</p>
<p>end;</p>
<p>writeln(&#8216;Numărul maximal este max=&#8217;,max);</p>
<p>end.</p>
<p><a rel="attachment wp-att-19" href="http://resurse-educationale.uv.ro/?attachment_id=19">Download probleme rezolvate Pascal</a></p>
]]></content:encoded>
			<wfw:commentRss>http://resurse-educationale.uv.ro/?feed=rss2&#038;p=17</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Limbajul Pascal. Stive. Cozi.</title>
		<link>http://resurse-educationale.uv.ro/?p=11</link>
		<comments>http://resurse-educationale.uv.ro/?p=11#comments</comments>
		<pubDate>Mon, 31 Jan 2011 07:18:58 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Pascal]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[algoritm]]></category>
		<category><![CDATA[cozi]]></category>
		<category><![CDATA[download]]></category>
		<category><![CDATA[multime]]></category>
		<category><![CDATA[programare]]></category>
		<category><![CDATA[stive]]></category>

		<guid isPermaLink="false">http://resurse-educationale.uv.ro/?p=11</guid>
		<description><![CDATA[Orice algoritm lucrează cu date (numere întregi, reale, şiruri de caractere etc.). Referitor la acestea, în informatică, s-au cristalizat anumite concepte fundamentale, pe care le vom prezenta în continuare. Printr-un tip de dată  înţelegem o mulţime cu elemente numite valori. &#8230; <a href="http://resurse-educationale.uv.ro/?p=11">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Orice algoritm lucrează cu date (numere întregi, reale, şiruri de caractere etc.). Referitor la acestea, în informatică, s-au cristalizat anumite concepte fundamentale, pe care le vom prezenta în continuare.</p>
<p><em>Printr-un tip de dată  înţelegem o mulţime cu elemente numite valori.</em></p>
<p>Exemplu:{-32768, 32767, &#8230;&#8230;.0,1,&#8230;&#8230;..32767} este omulţime de numere întregi. Atunci cînd nu există posibilatea de confuzie, putem nota mulţimea de mai sus astfel: [-32768,32767]. Un element al acestei mulţimi este 7 (valoarea 7). În Turbo Pascal un astfel de tip se numeşte <em>integer</em>. Şi este predefinit (este cunoscut de limbaj, nu trebuie definit de programator).</p>
<p><em>Pe mulţimea valorilor unui tip se definesc operaţiile asociate tipului</em>.</p>
<p>Exemplu: Pentru tipul integer se definesc operaţiile de adunare, scădere, înmulţire etc.</p>
<p><em>Pentru fiecare tip se defineşte modul în care se valorile sale.</em></p>
<p>Exemplu: Pentru tipul <em>integer </em>valorile se memorizează utilizînd codul complementar şi se folosesc 2 octeţi consecutivi.</p>
<p>Pentru a lucra cu date de un anumit tip se folosesc variabile.</p>
<p>O <em>variabilă </em>se caracterizează prin: tip (natura datelor şi modul de memorare), nume (prin care aceasta se adresează) şi adresă (număr de ordine al primului octet în care se reţin datele, memoria internă fiind privită ca o succesiune de octeţi numerotaţi).</p>
<p>Tipuri de date pot fi <em>simple</em> (mulţimile care alcătuiesc nu sunt rezultate ca produs cartezian a altor mulţimi) şi <em>stucturate</em> în caz contrar. Exemplu:tipul <em>integer</em> este simplu, iar tipul <em>record</em> este structurat.</p>
<p>Limbajele de programare evoluate utilizează din plin tipurile de date. Mai mult, unele din ele permit programului, folosind tipurile existente, să definească noi tipuri de date. Limbajul Turbo Pascal este un exemplu în acest sens.</p>
<p><em>Noţiunea de tip de date este strânsă legată de un anumit limbaj de programare. În situaţia în care se renunţă la această legătură, se ajunge la o altă noţiune mult utilizată şi anume cea de structură de date</em>.</p>
<p>Exemplu: <em>Mulţimea</em> este o structură de date (după cum vom arăta). În limbajul Turbo Pascal există tipul mulţime (<em>set</em>). Alte limbaje (de exemplu C) nu cunosc acest tip. Aceasta nu înseamnă că în C nu vom putea lucra cu mulţimi. Sarcina noastră este să înţelegem structura de date numită mulţime şi să o implementăm în orice limbaj de programare dorim.</p>
<p>Un curs de algoritmi trebuie să fie independenţi de orice limbaj. Fapt că în aceasta lucrare algoritmii se implementează în Turbo Pascal nu înseamnă că ei pot fi folosiţi numai în acest limbaj. Din acest motiv, orice curs de algoritmi va utiliza noţiunea de <em>structură de date</em>.<a rel="attachment wp-att-13" href="http://resurse-educationale.uv.ro/?attachment_id=13"></a></p>
<p><a rel="attachment wp-att-13" href="http://resurse-educationale.uv.ro/?attachment_id=13">Download Limbajul Pascal Stive Cozi</a></p>
]]></content:encoded>
			<wfw:commentRss>http://resurse-educationale.uv.ro/?feed=rss2&#038;p=11</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
