<?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; arraz</title>
	<atom:link href="http://resurse-educationale.uv.ro/?feed=rss2&#038;tag=arraz" 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>Tipuri de date Array (Tablou) în Pascal.</title>
		<link>http://resurse-educationale.uv.ro/?p=98</link>
		<comments>http://resurse-educationale.uv.ro/?p=98#comments</comments>
		<pubDate>Tue, 01 Feb 2011 11:08:26 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Didactică]]></category>
		<category><![CDATA[Pascal]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[arraz]]></category>
		<category><![CDATA[download]]></category>
		<category><![CDATA[programare]]></category>
		<category><![CDATA[tipuri de date]]></category>

		<guid isPermaLink="false">http://resurse-educationale.uv.ro/?p=98</guid>
		<description><![CDATA[Un array (masiv) este un bloc continuu de celule din memoria calculatorului, reunit sub un nume comun. Array-ul descrie o structură de entităţi (componente) care, geometric, sunt atît de regulate încît oricare dintre ele pot fi specificate în mod unic &#8230; <a href="http://resurse-educationale.uv.ro/?p=98">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Un <strong><em>array</em></strong> (masiv) este un bloc continuu de celule din memoria calculatorului, reunit sub un nume comun. <strong><em>Array</em></strong>-ul descrie o structură de entităţi (componente) care, geometric, sunt atît de regulate încît oricare dintre ele pot fi specificate în mod unic prin precizarea coordonatelor. Aceste coordonate sunt numite indici. În limbajul Pascal indicii sunt listaţi în paranteze drepte care urmeaza numelui <strong><em>array</em></strong>-ului ca în <strong>a[3]</strong> (se citeşte a de 3) şi <strong>b[i,j]</strong> (se citeşte b de i şi j!). Deşi [3] şi [i,j] nu pot apărea ca indici, ei sunt versiuni liniarizate ale indicilor folosiţi în notaţii ca a<sub>3</sub> şi b<sub>i,j</sub>. Din moment ce <strong><em>array</em></strong>-urile sunt stocate în memorie, orice componente ale acestora pot fi accesate (regăsite) foarte repede, timpul de acces fiind independent de locaţia componentei (<strong><em>array</em></strong>-ului).</p>
<p><strong><em>Array</em></strong>-urile ale căror componente pot fi identificate folosind un singur indice sunt numite <strong><em>array</em></strong>-uri unidimensionale, <strong><em>array</em></strong>-urile ca b[i,j] cu doi indici sunt numite bidimensionale, iar cele cu mai mult de doi indici sunt numite multidimensionale.</p>
<p>Matematicienii şi oamenii de ştiinţă folosesc frecvent <strong><em>array</em></strong>-uri bidimensionale pe care le numesc <strong>matrici</strong>. Toate <strong><em>array</em></strong>-urile ilustrate mai jos respectă definitia unui <strong><em>array</em></strong>, dar ele nu sunt în egală masură acceptate de  Pascal</p>
<p><strong><em>Array</em></strong>-urile sunt folositoare, dar nu necesare pentru însumarea numerelor. Consideram urmatorul program pentru adunarea a cinci valori întregi:</p>
<p><strong>PROGRAM</strong> suma5;</p>
<p><strong><em>var</em></strong></p>
<p>a,b,c,d,e,suma:integer;</p>
<p><strong><em>begin</em></strong></p>
<p>writeln(&#8216;Introduceti a,b,c,d,e &#8216;);</p>
<p>readln(a,b,c,d,e);</p>
<p>suma:=a+b+c+d+e;</p>
<p>writeln(&#8216;Suma este: &#8216;,suma)</p>
<p><strong><em>end</em></strong> {suma5}.</p>
<p>Acum, presupunem ca în loc de cinci valori de intrare avem 50, 500 sau 5000! Evident, tehnica utilizată în programul <em>suma5</em> nu &#8220;prea ţine&#8221;; cine este dispus să inventeze 5000 de nume diferite de variabile? Altfel stau lucrurile dacă vom folosi un <strong><em>array</em></strong>, ca în programul <em>nouasuma5</em>.</p>
<p><strong> </strong></p>
<p><strong>PROGRAM</strong> nouasuma5;</p>
<p><strong><em>const</em></strong></p>
<p>n=5000;</p>
<p><strong><em>var</em></strong></p>
<p>a:<strong><em>array</em></strong>[1..n] <strong><em>of</em></strong> integer;</p>
<p>i,suma:integer;</p>
<p><strong><em>begin</em></strong></p>
<p>suma:=0; { initializare suma }</p>
<p><strong><em>for</em></strong> i:=1 <strong><em>to</em></strong> n <strong><em>do</em></strong></p>
<p><strong><em>begin</em></strong></p>
<p>read(a[i]);</p>
<p>suma:=suma+a[i];</p>
<p><strong><em>end</em></strong>;</p>
<p>write(suma);</p>
<p><strong><em>end</em></strong> {nouasuma5}.</p>
<p>Se pune următoarea întrebare: a fost necesară definirea unui <strong><em>array</em></strong>? Raspunsul este: nu. Argumentul este simplu &#8211; nu a fost exploatată proprietatea de acces direct a <strong><em>array</em></strong>-ului. Pentru această problemă, soluţia preferată este cea ilustrată în programul prezentat mai jos, care foloseşte o singură variabilă de intrare <strong>a</strong>:</p>
<p><strong>PROGRAM</strong> suma;</p>
<p><strong><em>var</em></strong></p>
<p>s,a:integer;</p>
<p><strong><em>begin</em></strong></p>
<p>s:=0;</p>
<p><strong><em>while</em></strong> <strong>NOT</strong> eof <strong><em>do</em></strong></p>
<p><strong><em>begin</em></strong></p>
<p>read(a);</p>
<p>s:=s+a;</p>
<p><strong><em>end</em></strong>;</p>
<p>write(s);</p>
<p><strong><em>end</em></strong><strong> </strong>{suma}.</p>
<p><em>§3. Managementul indicilor</em></p>
<p>Presupunem că <strong>a</strong> este de tip <strong><em>array</em></strong> [0..n] <strong><em>of</em></strong> integer; unde <strong>n</strong> este o constantă, iar <strong>i</strong> un <em>înteger</em>. Pentru a atribui fiecărui element a[i] valoarea indicelui este usor.</p>
<p><strong><em>for</em></strong> i:=0 <strong><em>to</em></strong> n <strong><em>do</em></strong></p>
<p>a[i]:=i;</p>
<p>Pentru a atribui fiecărui element a[i] valoarea n-i procedam ca în exemplul urmator:</p>
<p><strong>Exemplu:</strong></p>
<p><strong><em>for</em></strong> i:=0 <strong><em>to</em></strong> n <strong><em>do</em></strong></p>
<p>a[i]:=n-i;</p>
<p><strong><em>for</em></strong> i:=0 <strong><em>to</em></strong> n <strong><em>do</em></strong></p>
<p>a[n-i]:=i;</p>
<p>În fiecare caz a trebuit să  descoperim cîte o relaţie între <strong>a[i]</strong>, <strong>a[n-i]</strong> şi <strong>i</strong> şi între <strong>a[i]</strong> şi <strong>n-i</strong>.</p>
<p>Iata un exemplu mai interesant.</p>
<p>Presupunem că procedura <strong>exchange</strong> este corespunzător definită ca un <strong><em>array</em></strong> ce conţine cîteva valori şi că dorim să inversăm ordinea acelor valori.</p>
<p><strong>a[0]&lt;-&gt;a[n]</strong></p>
<p><strong>a[1]&lt;-&gt;a[n-1]</strong></p>
<p><strong>a[2]&lt;-&gt;a[n-2]</strong></p>
<p>Relaţia dintre indicii succesivi este uşor de stabilit:</p>
<p><strong>a[i]&lt;-&gt;a[n-i]</strong></p>
<p>Dar ce limită superioară ar trebui să fie folosită de ciclul <strong><em>for</em></strong> astfel încît să minimalizăm numărul de schimbări necesare ?</p>
<p>Exprimarea din exemplul urmator, dupa cum se poate constata uşor, nu face mai nimic!</p>
<p><strong>Exemplu:</strong></p>
<p><strong><em>for</em></strong> i:=0 <strong><em>to</em></strong> n <strong><em>do</em></strong></p>
<p><strong><em>exchange</em></strong>(a[i],a[n-i]);</p>
<p>Ceea ce ne trebuie este soluţia următoare, care lucrează atît pentru o valoare para a lui n, cît şi pentru o valoare impară.</p>
<p><strong>Exemplu:</strong></p>
<p><strong><em>for</em></strong> i:=0 <strong><em>to</em></strong> (n-1) <strong>div</strong> 2 <strong><em>do</em></strong></p>
<p><strong><em>exchange</em></strong>(a[i],a[n-i]);</p>
<p>Exemplele prezentate sunt tipice utilizării <strong><em>array</em></strong>-ului cu o dimensiune. Cheia succesului constă în managementul indicilor.</p>
<p><a rel="attachment wp-att-99" href="http://resurse-educationale.uv.ro/?attachment_id=99">Tipuri de date array</a></p>
]]></content:encoded>
			<wfw:commentRss>http://resurse-educationale.uv.ro/?feed=rss2&#038;p=98</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
