Aplicatii Ale Informaticii in Geografie

50
APLICAŢII ALE INFORMATICII ÎN GEOGRAFIE Forma de învăţământ ID şi FR 1. Aspecte generale Cod curs G/G/2/3/09 Denumire curs Aplicaţii ale informaticii în geografie Tip curs obligatoriu Durata cursului/credite Semestrelul III /credite 5 Perioada de accesare a cursului Prelegeri: - Lucrări practice: Lect. drd. Ionel Benea (marţi 12 30 -15 şi jo 12 - 13 30 ) Manualul recomandat NU ESTE PREVĂZUT CURS ÎN PLANUL DE ÎNVĂŢĂMÂNT Studenţii de la aceste forme de învăţământ vor folosi suportul de curs de pe Avizierul Virtual al Facultăţii de Geografie a Universităţii Spiru Haret. Obiectul principal al cursului Obiectul principal este acela de a furniza studenţilor un cumul de cunoştinţe necesare înţelegerii lucrului în mediul virtual, respectiv a constrângerilor şi avantajelor folosirii computerelor pentru aplicaţii în domeniul geografiei. Aplicaţiile propriu-zise vor fi realizate în cadrul altor cursuri: teledetecţie, prelucrarea datelor, sisteme informaţionale geografice. Modul de stabilire a notei finale Nota rezultă din rezolvarea testelor pe platforma de eLearning a Universităţii Spiru Haret. Consultaţii pentru studenţi Lect. drd. Ionel Benea [email protected] Adrese e-mail responsabil pentru contactul cu studenţii [email protected] Titularul cursului Lector univ. drd. Ionel BENEA 2. Conţinutul tematic al cursului (semestrul I) CAPITOLUL 1. Teoria Informaţiei CAPITOLUL 2. Informatica - ştiinţa despre informaţie CAPITOLUL 3. Bazele aritmetice ale sistemelor de calcul CAPITULUL 4. Operaţii în cod zecimal – binar CAPITOLUL 5. Coduri, operaţii aritmetice CAPITOLUL 6. Bazele logice ale structurii şi funcţionării calculatoarelor electronice CAPITOLUL 7. Algoritmi CAPITOLUL 8. Limbaj - Limbaje de programare 3. Bibliografia minimă obligatorie Suportul de curs de pe Avizierul Virtual 5. Prezentarea capitolelor:

Transcript of Aplicatii Ale Informaticii in Geografie

Page 1: Aplicatii Ale Informaticii in Geografie

APLICAŢII ALE INFORMATICII ÎN GEOGRAFIE Forma de învăţământ ID şi FR

1. Aspecte generale Cod curs G/G/2/3/09 Denumire curs Aplicaţii ale informaticii în geografie Tip curs obligatoriu Durata cursului/credite Semestrelul III /credite 5 Perioada de accesare a cursului

• Prelegeri: - • Lucrări practice: Lect. drd. Ionel Benea (marţi 1230-15 şi jo 12 -

1330) Manualul recomandat NU ESTE PREVĂZUT CURS ÎN PLANUL DE ÎNVĂŢĂMÂNT

Studenţii de la aceste forme de învăţământ vor folosi suportul de curs de pe Avizierul Virtual al Facultăţii de Geografie a Universităţii Spiru Haret.

Obiectul principal al cursului

Obiectul principal este acela de a furniza studenţilor un cumul de cunoştinţe necesare înţelegerii lucrului în mediul virtual, respectiv a constrângerilor şi avantajelor folosirii computerelor pentru aplicaţii în domeniul geografiei. Aplicaţiile propriu-zise vor fi realizate în cadrul altor cursuri: teledetecţie, prelucrarea datelor, sisteme informaţionale geografice.

Modul de stabilire a notei finale

Nota rezultă din rezolvarea testelor pe platforma de eLearning a Universităţii Spiru Haret.

Consultaţii pentru studenţi Lect. drd. Ionel Benea [email protected] Adrese e-mail responsabil

pentru contactul cu studenţii

[email protected]

Titularul cursului Lector univ. drd. Ionel BENEA 2. Conţinutul tematic al cursului (semestrul I) CAPITOLUL 1. Teoria Informaţiei CAPITOLUL 2. Informatica - ştiinţa despre informaţie CAPITOLUL 3. Bazele aritmetice ale sistemelor de calcul CAPITULUL 4. Operaţii în cod zecimal – binar CAPITOLUL 5. Coduri, operaţii aritmetice CAPITOLUL 6. Bazele logice ale structurii şi funcţionării calculatoarelor electronice CAPITOLUL 7. Algoritmi CAPITOLUL 8. Limbaj - Limbaje de programare 3. Bibliografia minimă obligatorie Suportul de curs de pe Avizierul Virtual 5. Prezentarea capitolelor:

Page 2: Aplicatii Ale Informaticii in Geografie

CAPITOLUL 1. TEORIA INFORMAŢIEI

1.1. Introducere

Una dintre caracteristicile cele mai pregnante ale secolului XX a fost dezvoltarea şi exploatarea unor noi medii de comunicare. În paralel cu creşterea numărului de mijloace şi procedee de transmitere şi exploatare a informaţiei, a fost dezvoltată şi o teorie de unificare, cunoscută sub numele de teoria informaţiei, iar aceasta a devenit obiectul unor studii extrem de intense. De fapt, această teorie a fost iniţiată de o singură persoană, inginerul american Claude E. Shannon, ale cărui prime idei au fost publicate în articolul "Teoria matematică a comunicării", apărut în Bell System Technical Journal (1948).

În sensul cel mai larg, informaţia este considerată ca incluzând mesajele care se transmit în orice mediu standadizat de comunicare, cum ar fi telegrafia, radioul, televiziunea sau semnalele interne din calculatoarele electronice, sistemele servomecanice sau orice alt procedeu de procesare a datelor. Teoria informaţiei se aplică şi pentru semnalele care apar în sistemele nervoase ale fiinţelor vii.

Semnalele sau mesajele nu trebuie să fie purtătoare de semnificaţii în sensul obişnuit al cuvântului. Preocuparea principală a teoriei informaţiei este aceea de a descoperi legi matematice care pot guverna sisteme desemnate pentru a comunica sau manipula informaţia. Aceasta se referă la stabilirea unor unităţi de măsurare cantitativă a informaţiei şi la capacitatea diverselor sisteme de a transmite, stoca sau procesa într-un fel oarecare informaţia respectivă.

Unele dintre problemele abordate se referă la găsirea celor mai bune metode de folosire a diferitelor sisteme de comunicare accesibile le un moment dat, a celor mai bune metode de selectare doar a informaţiei dorite şi separarea acesteia de cea externă, numită zgomot. O altă problemă este aceea a stabilirii limitei superioare a ceea ce se poate realiza cu un anumit mediu de transport al informaţiei (adesea numit canal de informaţie). Dacă rezultatele îi interesează mai ales pe inginerii din comunicaţii, unele dintre concepte au fost deja preluate de alte domenii, cum ar fi psihologia şi lingvistica.

Graniţele ştiinţei despre informaţie sunt slab precizate; există suprapuneri evidente cu teoria comunicării, deşi ea este orientată mai mult spre limitările fundamentale ale procesării şi comunicării informaţiei şi mai puţin spre detalierea operaţiilor şi mijloacele tehnice implicate.

1.2. Măsurarea informaţiei. Alegeri binare şi biţi Cel mai simplu mod de a exprima o alegere este cel al alegerii de tip binar: din două posibilităţi, fiecare are probabilitatea de producere de 1/2. Aceasta este situaţia, de exemplu, ca o monedă aruncată în sus să cadă pe una dintre cele două feţe. Este convenabil, prin urmare, să folosim cantitatea de informaţie produsă de o astfel de alegere drept unitate de bază, iar această unitate de bază să o denumim bit. În teoria informaţiei şi în comunicaţii bitul este unitatea de informaţie echivalentă cu rezultatul unei alegeri binare, ca între 0 şi 1 în sistemul binar folosit în general în calculatoarele digitale. Termenul este o prescurtare a cuvintelor "binary digit" din limba engleză. Noţiunea de bit se foloseşte şi pentru a desemna unitatea de memorie a unui computer capabilă să stocheze rezultatul unei alegeri dintre două alternative (evident, tot 0 şi 1).

Alegerea implicată de un bit de informaţie este redată schematic în figura 1.2 (stânga). Ramura de sus sau de jos poate fi aleasă cu o probabilitate de 1/2. Dacă sunt N posibilităţi, toate cu şanse egale, cantitatea de informaţie este de log2 N. Motivaţia este vizibilă în figura 1.2 (dreapta), în care sunt 8 posibilităţi, fiecare cu o probabilitate de 1/8. Ne putem imagina că alegerea se poate

Page 3: Aplicatii Ale Informaticii in Geografie

2

face în trei etape, fiecare dintre acestea implicând un singur bit. Primul bit corespunde alegerii primelor patru sau ultimelor patru posibilităţi din totalul de opt; al doilea bit corespunde alegerii primei dau a celei de-a doua perechi din setul de patru posibilităţi ales anterior; bitul final va determina primul sau al doilea element din perechea respectivă. Numărul de biţi necesari este cerut conform formulei log2 N, în cazul nostru log2 8 = 3.

Figura 1.2. Alegere binară (stânga); trei alegeri binare succesive (dreapta).

Dacă însă posibilităţile nu sunt egale ca potenţial de producere, mesajul va avea cantităţi

diferite de informaţie asociate fiecăreia. Valoarea calculată a acestor cantităţi de informaţie este dată de formula:

H = p1log2(1/p1) + p2 log2(1/p2) + …+ pNlog2(1/pN) şi se numeşte entropie – H – sau informaţia medie a setului de mesaje.

Entropia are valoarea cea mai mică, respectiv 0, atunci când mesajul este sigur că se va produce (adică are probabilitatea 1) şi toate celelalte mesaje nu se vor produce (au probabilitatea 0). În mod intuitiv, nu există informaţie într-un mesaj care este sigur în mod a priori. În mod reciproc, entropia are valoare maximă log2N atunci când N mesaje dintr-un set au probabilităţi maxime. Mesajele individuale dintr-un set pot avea în mod arbitrar cantităţi mari de informaţie, dar aceste mesaje sunt atât de rare încât valoarea calculată este dată tot de log2N.

1.3. Codificarea informaţiei

O trăsătură importantă a măsurii informaţiei este aceea că permite păstrarea acesteia pe

timpul transmiterii, printr-o codificare adecvată, pe baza statisticii sursei mesajului respectiv. Pentru a ilustra acest lucru, să considerăm un model de limbaj cu numai patru litere - A, B, C şi D - cu probabilităţi respective de 1/2, 1/4, 1/8 şi 1/8. Într-un text lung în acest limbaj, A va ocupa o jumătate din timp, B un sfert din timp, iar C şi D câte o optime. Dacă ar fi să codificăm acest mesaj în digiţi binari, respectiv folosind 0 şi 1, cel mai direct cod ar fi următorul: A = 00; B = 01; C = 10; D = 11. Acest cod necesită doi digiţi binari pentru fiecare literă a mesajului. Printr-o folosire corectă a statisticii, se poare concepe un cod mai bun: A = 0; B = 10; C = 110; D = 111. Desigur, trebuie avută în vedere şi recuperarea rapidă a mesajului din forma sa codificată. Mai mult, numărul de digiţi binari folosiţi este mai mic în acest caz: (1)1/2+(2)1/4+(3)1/8+(3)1/8 = 1 3/4,

Page 4: Aplicatii Ale Informaticii in Geografie

3

unde primul termen se datorează literei A, care ocupă jumătate din timp şi are o lungime de un digit, iar în mod similar sunt descrişi şi ceilalţi termeni. De fapt, valoarea de 1 3/4 este chiar valoarea lui H, calculată pentru probabilităţile de 1/2, 1/4, 1/8 şi 1/8. Această idee, de codare a literelor mai folosite în mesaje scurte şi a celor mai puţin folosite în mesaje mai lungi a stat şi la baza scrierii codului Morse.

Rezultatul găsit pentru cazul de mai sus poate fi considerat ca valabil şi pentru cazul general. Dacă H este entropia, exprimată în biţi/literă, a unei surse de informaţie, atunci orice codificare binară care reprezintă sursa foloseşte, în medie, cel puţin H digiţi binari/litera sursă. În mod reciproc, pot fi găsite codificări binare folosind un număr de digiţi binari pe cât posibil mai apropiat de H. Pentru cazul general însă, codificarea devine mai complicată pe măsură ce media de digiţi binari/litera sursă se apropie de H. În acest caz, se impune transpunerea de secvenţe de litere sursă în secvenţe de digiţi binari şi nu codificarea unor litere sursă individuale în secvenţe de digiţi binari.

Această trăsătură importantă a teoriei informaţiei dă un sens direct entropiei H pentru o sursă de limbaj. De fapt, se poare afirma că H poate fi interpretată ca fiind numărul echivalent de digiţi binari necesar pentru o codificare în 0 şi 1 cât mai eficientă a limbajului sau sursei. De exemplu, dacă estimarea de un bit/literă, menţionată anterior ca fiind rata de codare pentru scriere în engleză este corectă, atunci este posibil să codificăm un masaj (scris în engleză) în digiţi binari folosind, în medie, câte unul pentru fiecare literă din text şi, drept urmare, nici o altă metodă de codificare nu se va situa sub această medie.

Tehnicile folosite în mod practic pentru a codifica datele sursă cu un număr de biţi cât mai redus sunt numite tehnici de compresie a datelor; acestea sunt adesea metode adaptive, ajustând în mod automat codificarea conform cu statisticile unei surse date.

1.4. Conversia analog - digital

Obiectivul esenţial al oricărei comunicări de mesaj este acela de a asigura o fidelitate înaltă, adică o reproducere cât mai bună a acestuia, fără degradările impuse de distorsiunile semnalului şi de zgomot. În mod curent, informaţiile nu sunt transmise în format binar, ci sub forma unor semnale care variază continuu în intervalul unei game de valori, fiind de aceea denumite semnale în format analog. Pentru a fi înţelese şi folosite în sistemele informaţionale computerizate, aceste

semnale analoge trebuie convertite în format digital, proces denumit conversie analog-digital (în engleză: analog-to-digital (A/D) conversion). Acest proces presupune mai multe etape: eşantionarea, cuantificarea, codarea şi decodarea (fig. 1.4).

Figura 1.4. Conversia analog - digital

Page 5: Aplicatii Ale Informaticii in Geografie

4

În cazul conversiei analog - digital se aplică o teoremă fundamentală conform căreia semnalul analog trebuie reprezentat în mod unic prin valori discrete (teorema eşantionării), iar aceste valori trebuie separate de un interval anume (intervalul Nyquist, după numele inginerului american de origine suedeză Harry Nyquist).

Pentru ca semnalul eşantionat să poată fi stocat şi transmis în format digital, este necesar ca fiecare eşantion de amplitudine să fie convertit într-un număr finit de valori posibile sau nivele. Pentru a uşura convertirea în format binar, numărul de nivele este de obicei o putere a lui 2, adică 8, 16, 32, 64, 128, 256, etc. În figura 1.4 semnalul analog este cuantificat pe 8 nivele (de la 0 la 7), deşi în teoria comunicării se consideră că 256 de nivele de cuantificare sunt suficiente pentru a asigura fidelitatea optimă pentru transmiterea oricărui tip de mesaj.

1.5. Procesarea informaţiei şi sistemele informaţionale

Interesul asupra modului de comunicare a informaţiei şi a celui în care purtătorii acesteia transmit sensurile s-a constituit, încă de pe vremea filosofilor de dinaintea lui Socrate, în domeniul de studiu al semioticii (studierea semnelor şi a fenomenelor asociate acestora). Semnele sunt elementele ireductibile ale comunicării şi purtătoarele de sensuri. Filosoful, matematicianul şi fizicianul american Charles S. Peirce este considerat a fi cel care a evidenţiat cele trei dimensiuni ale semnelor, respectiv corpul (sau mediul) semnului, obiectul pe care îl desemnează şi interpretantul (interpretarea semnului). Peirce recunoştea că relaţiile fundamentale ale informaţiei sunt, în esenţă, de tip triadă, în timp ce relaţiile din toate ştiinţele fizice sunt de tip binar. Un alt filosof american, Charles W. Morris a denumit aceste trei dimensiuni ale semnelor: sintactic, semantic şi pragmatic, denumiri folosite si astăzi.

Procesele informatice sunt realizate de procesoare de informaţie; pentru un astfel de procesor, fie el de natură fizică sau biologică, un semn este un obiect, lipsit de înţeles, pe care acesta îl recunoaşte ca fiind total diferit de alte semne. Un grup de astfel de semne unice, pe care procesorul le recunoaşte, constituie "alfabetul" de bază al acestuia; de exemplu punctul, cratima şi spaţiul liber constituie semnele de bază ale procesorului de cod Morse.

Obiectele purtătoare de sens sunt reprezentate ca modele de semne, numite simboluri. Acestea se combină la rândul lor, formând expresii simbolice, care constituie intrările sau ieşirile spre, respectiv dinspre procesele informaţionale şi sunt stocate în memoria procesorului.

Procesoarele de informaţie sunt componente ale sistemelor informatice, care la rândul lor sunt o clasă de construcţie. Un model abstract al unui sistem informaţional necesită patru elemente fundamentale: procesorul, memoria, receptorul şi executantul (figura 1.5).

Figura 1.5. Modelul abstract al unui sistem informaţional

Receptor (intrare)

Executor (ieşire)

Procesor

Memorie

m e d i u l e x t e r n

Page 6: Aplicatii Ale Informaticii in Geografie

5

Procesorul are mai multe funcţii: 1. îndeplinirea de procese informaţionale elementare asupra expresiilor

simbolice; 2. stocarea în memoria temporară proprie a expresiilor de intrare şi a

rezultatelor procesării; 3. planificarea modului de efectuare a procesării; 4. schimbarea acestor secvenţe de operare în concordanţă cu conţinutul

memoriei proprii. Memoria stochează expresiile simbolice, inclusiv pe acelea reprezentând programele.

Celelalte două componente, receptorul şi executantul, sunt mecanisme de intrare şi ieşire ale căror funcţii sunt primirea expresiilor simbolice sau a stimulilor din mediul extern pentru a fi manipulate de către procesor, respectiv trimiterea structurilor procesate înapoi către mediul extern.

Puterea acestui model abstract de sistem de procesare a informaţiei este dată de capacitatea procesoarelor componente de a îndeplini un număr mic de operaţii elementare: citirea, compararea, crearea, modificarea, denumirea, copierea, stocarea şi scrierea. Modelul, care este reprezentativ pentru o mare varietate de astfel de sisteme, a fost folosit pentru a explica sistemele informaţionale construite şi implementate de om în procesoarele secvenţiale.

Deoarece s-a demonstrat că procesarea informaţiei în natură nu este totdeauna secvenţială, începând cu anii 1980 au fost demarate o serie de studii asupra funcţionării creierului uman, ca principalul tip de procesor paralel. Acestea au dus la dezvoltarea neurocomputerelor, o clasă nouă de procesoare de informaţie, care imită funcţionarea creierului uman, incluzând şi capacitatea acestuia de auto-organizare şi învăţare. Aşa-numitele reţele neurale, care sunt modele inspirate de reţeaua legăturilor dintre neuronii creierului uman, îşi găsesc un număr crescând de aplicaţii în domenii ca recunoaşterea automată a unor scheme şi modele, controlul proceselor industriale, finanţe, ca şi în alte domenii de cercetare.

CAPITOLUL 2. INFORMATICA - ŞTIINŢA DESPRE INFORMAŢIE

(engl. = computer science; fr. = informatique)

2.1. Definiţie, origini

Informatica o disciplină care se preocupă cu procesele de stocare şi transfer ale informaţiei. Informatica încearcă să pună de acord concepte care provin din domenii variate, cum ar fi biblioteconomia, cibernetica, automatica, lingvistica, psihologia şi altele, cu scopul de a dezvolta tehnici şi procedee de mânuire a informaţiei (mai exact, referitoare la: colectarea, organizarea, stocarea, recuperarea şi folosirea acesteia). Dacă în engleză denumirea reflectă legătura strânsă a acesteia cu apariţia şi dezvoltarea calculatoarelor electronice, în limba română a fost preluat termenul din franceză, introdus în 1960 de către Phillipe Dreyfus (INFORmation autoMATIQUE) pentru a desemna obţinerea informaţiei printr-un proces de prelucrare automată.

Transferul de informaţie de-a lungul timpului necesită existenţa unui mediu de stocare a acesteia, care a fost denumit document (de aici şi termenul de documentare). Din punct de vedere istoric, "documentarea" s-a constituit în disciplină de sine stătătoare la începutul secolului XX, în paralel cu dezvoltarea cercetărilor empirice, care de fapt i-au furnizat cele mai importante subiecte de studiu. Dezvoltarea accelerată a acestei discipline a fost un răspuns la creşterea importanţei şi volumului de publicaţii periodice ca suport fizic al rapoartelor ştiinţifice. Dacă în cazul cărţilor

Page 7: Aplicatii Ale Informaticii in Geografie

6

controlul necesar se face prin catalogare şi clasificare, în cazul periodicelor sunt necesare indexări şi rezumate, care să pună la dispoziţie informaţia primară, aşa cum a fost publicată în diferite surse.

Rădăcinile ştiinţei despre informaţie se află în perioada imediat următoare celui de-al doilea război mondial: modelul teoriei informaţiei creat de Shannon - Weaver, conceptul de cibernetică formulat de Norbert Wiener, dezvoltarea rapidă a proiectării şi fabricării calculatoarelor electronice. Aceste inovaţii au condus la definirea unui domeniu nou de studiu, domeniu în care multe alte discipline puteau fuziona sub ideea unificatoare de "informaţie". După ce Institutul de Tehnologie din Georgia (SUA) a pus la punct primul program formal de studiere a informaţiei (1963), această disciplină a fost adoptată de multe alte universităţi americane, fie ca un domeniu de studii independent, fie integrat departamentelor de ştiinţa computerelor sau inginerie.

La început, informatica era preocupată în primul rând de aplicarea tehnologiei computerelor la procesarea şi gestionarea documentelor. S-au elaborat studii despre modele de stocare şi recuperare eficientă a informaţiei, moduri de interacţiune om - maşină, efectele formei asupra conţinutului şi înţelegerii informaţiei, procese de generare, transmitere şi transformare a informaţiei, s-au stabilit principiile generale de explicare şi prognozare a fenomenelor legate de informaţie.

Aplicarea tehnologiei computerelor şi, mai recent, trecerea spre studii teoretice, au dus la introducerea ştiinţei despre informaţiei în multe alte discipline, la abordarea de noi direcţii de cercetare, fiecare dintre acestea preferând o desemnare mult mai descriptivă a propriului domeniu de studiu. Instituţionalizarea informaticii ca disciplină separată este abia la începuturi, deoarece adesea aceasta este asimilată tehnologiei computerelor, iar managementul tinde să absoarbă domeniul sistemelor informaţionale. Există sute de asociaţii profesionale care sunt preocupate de discipline conexe informaticii, acestea constituind un forum în cadrul căruia oamenii pot schimba idei despre procesarea informaţiei.

2.2. Dezvoltarea informaticii

Informatica poate fi considerată ca disciplină independentă doar începând cu 1960, deşi

calculatoarele electronice digitale, care constituie obiectul de studiu al acesteia, fuseseră inventate cu aproape 20 de ani mai devreme. Rădăcinile informaticii sunt în principal în domeniile ingineriei electrice şi al matematicii. Prima furnizează fundamentele despre proiectarea circuitelor, mai exact ideea că impulsurile electrice introduse într-un circuit pot fi combinate pentru a obţine la ieşirea din acesta semnale arbitrare. Inventarea tranzistorului şi miniaturizarea circuitelor, împreună cu inventarea de medii electronice, magnetice şi optice de stocare a informaţiei, sunt rezultate ale progreselor făcute în domeniul ingineriei electrice şi a fizicii.

Matematica este sursa unui concept cheie pentru dezvoltarea computerelor: acela că orice informaţie poate fi reprezentată printr-o succesiune de 0 şi 1. În sistemul de numeraţie binar (asupra căruia vom reveni), numerele sunt reprezentate ca succesiuni ale digiţilor binari 0 şi 1, într-un mod asemănător aceluia în care le reprezentăm în mult mai familiarul sistem de numeraţie zecimal, folosind digiţi de la 0 la 9. Uşurinţa relativă cu care două stări (de exemplu tensiuni electrice mari şi mici) pot fi realizate în dispozitive electrice şi electronice conduce, în mod natural, la digitul binar (numit bit), care devine astfel unitatea fundamentală de stocare şi transmitere în sistemul unui computer.

Algebra Booleană, dezvoltată în secolul XIX, a furnizat formalismul necesar pentru conceperea de circuite cu valori de intrare 0 şi 1 (fals şi respectiv adevărat în termeni de logică) care să producă orice combinaţie dorită de 0 şi 1 la ieşire. Lucrările teoretice din domeniul calculabilităţii, începute în anii 1930, au furnizat extensiile necesare proiectării calculatoarelor ca întreg. Un moment important în acest sens sunt specificaţiile maşinii conceptuale Turing - un

Page 8: Aplicatii Ale Informaticii in Geografie

7

dispozitiv teoretic ce poate manipula un şir infinit de 0 şi 1 - realizată de matematicianul britanic Alan Turing, care dovedea puterea de calcul a acestui model. O altă realizare remarcabilă este conceptul de calculator cu program rezident (instrucţiunile şi datele trebuie stocate în memoria maşinii pentru a putea fi accesate şi procesate rapid), a cărui paternitate îi este atribuită matematicianului american de origine germană John von Neumann (1903, Budapesta - 1957, Washington).

Nevoile utilizatorilor şi aplicaţiile realizate de aceştia au constituit, în perioada de început, impulsul principal pentru dezvoltarea informaticii, cum de altfel se întâmplă şi astăzi, într-o măsură destul de mare. Dificultatea de a scrie programe în limbaj maşină (folosind doar 0 şi 1) a impus iniţial crearea şi dezvoltarea de limbaje de asamblare, care permit programatorilor folosirea de termeni mnemotehnici pentru instrucţiuni (de ex. ADD) şi simboluri pentru variabile (de ex. X). Astfel de programe sunt apoi traduse de un alt program, numit asamblor, în succesiuni de 0/1, acceptate de către computer.

Asamblorii traduc programele dintr-un limbaj de asamblare într-un limbaj cod maşină. Fiecare instrucţiune a programului în limbaj de asamblare are o corespondenţă de aproape unu la unu cu instrucţiunile maşină din codul maşină. Cu alte cuvinte, opcodul şi operandul care constituie fiecare instrucţiune sunt exprimate cu ajutorul unei denumiri citibile (un opcod mnemotic) şi respectiv un număr zecimal în locul instrucţiunii maşină corespondente. Instrucţiunea de asamblare LOAD 8, de exemplu, corespunde instrucţiunii maşină 010100001000. Astfel, comparativ cu alte procesoare de limbaj, asambloarele au o structură relativ simplă. Fiecare secvenţă dintr-un limbaj de nivel ridicat are o relaţie mult mai complexă cu codul maşină; de aceea programele sunt scrise în limbaje de asamblare atunci când se doreşte utilizarea efectivă a componentelor fizice ale unui calculator. Oricum, limbajele de asamblare nu sunt atât de uşor citibile ca limbajele de nivel ridicat şi şansa de a avea erori de programare este mai mare.

Alte componente ale programelor, cunoscute sub denumirea de linking loaders combină părţi de cod asamblat şi le încarcă în memoria principală a calculatorului, unde sunt pregătite pentru a fi executate. Conceptul de legare a unor părţi separate de cod este foarte important, deoarece a permis crearea de programe "bibliotecă" pentru executarea sarcinilor obişnuite - un prim pas spre noţiunea de reutilizare a programelor.

Limbajul de asamblare s-a dovedit destul de ineficient, astfel că au fost inventate (în anii 1950) programe de nivel înalt, pentru a se putea realiza o programare mai uşoară şi mai rapidă. Pe măsură ce limbajele de programare deveneau tot mai puternice şi mai abstracte, construirea de compilatori eficienţi, care să creeze coduri de înaltă calitate sub aspectul vitezei şi necesarului de spaţiu de stocare a devenit o problemă în sine. Răspândirea folosirii calculatoarelor în anii 1960 a dat un impuls dezvoltării sistemelor de operare.

Calculatoarele au fost şi încă sunt folosite în principal în două domenii majore: (1) ca suport de calcul pentru disciplinele ştiinţifice şi inginereşti şi (2) procesări de date pentru mediile de afaceri. Cererea de tehnici de calcul mai performante a condus la redeşteptarea interesului pentru metodele numerice şi analiza lor, un domeniu al matematicii care îşi are originile în calculele de mână făcute de fizicieni, chiar cu secole în urmă, pentru a-şi valida teoriile. Aplicaţiile pentru afaceri au condus, în anii 1960 - 1970, la crearea conceptului de bază de date şi crearea de metode sofisticate de management al acestora. Structurarea datelor (în tabele, şiruri, etc.) şi realizarea de algoritmi eficienţi de inserare, localizare şi ştergere a datelor din astfel de structuri au constituit domenii de cercetare ale informaticii încă de la început, deoarece acestea sunt necesare pentru aproape toate computerele, mai ales pentru compilatoare, sisteme se operare şi sistemul de fişiere.

Inteligenţa artificială - capacitatea calculatoarelor de a îndeplini sarcini care sunt caracteristice inteligenţei umane - este un concept cu originea comună cu primele calculatoare, dar nu a fost abordată serios decât începând cu 1956.

Grafica pe calculator a fost introdusă la începutul anilor '50, odată cu afişarea imaginilor pe monitoare cu tub catodic şi imprimarea pe suport hârtie. Abia la începutul anilor '80, prin

Page 9: Aplicatii Ale Informaticii in Geografie

8

introducerea formatului bit-map, a memoriilor RAM ieftine şi a monitoarelor cu rezoluţie ridicată, dezvoltarea acestui sub-domeniu al informaticii a devenit explozivă.

Producerea de programe a căpătat un nou conţinut la sfărşitul anilor '70, prin introducerea unor standarte şi a unei relative discipline în structura acestora.

2.3. Evoluţia şi performanţele calculatoarelor electronice

Printre marile realizări ale secolului nostru se numără şi calculatoarele electronice,

considerate uneori ca prelungiri ale creierului omenesc, şi care au pătruns în cele mai diverse domenii de activitate, revoluţionând pe cele clasice, ducând chiar la apariţia unor domenii noi, dedicate rezolvării a numeroase probleme.

Primele încercări de automatizare a unor funcţii intelectuale îşi au originea în Asia, acum aproape 5000 de ani; babilonienii, de exemplu, foloseau abacul pentru calcule matematice. Deşi cu greu ar putea fi numit calculator, abacul este de altfel şi extrem de simplu.

După cum se poate vedea, abacul este alcătuit din câteva bare paralele, fiecare fiind divizată în două secţiuni. Prima secţiune are o singură bilă, reprezentând 0 dacă bila este în partea de sus şi 5 dacă bila este în partea de jos. A doua secţiune are patru bile, acestea reprezentând, prin plasarea în partea de sus, numerele de la 1 la 4. Fiecare număr este reprezentat pe bare consecutive (de exemplu, pe abacul din figură este reprezentat numărul 65 209). Calculele se fac prin deplasarea bilelor, conform regulilor de aritmetică (pe care operatorul trebuie să le cunoască în prealabil). Adunarea, scăderea, înmulţirea şi împărţirea se fac astfel folosind abacul doar ca registre de stocare a numerelor iniţiale şi a rezultatelor finale (din această perspectivă, abacul nefiind un calculator adevărat).

2.3.1. Calculatoarele digitale rudimentare.

Maşinile mecanice de calculat au apărut în Europa secolului XVII. Pe la 1623-24, germanul

Wilhelm Schickard, un prieten al astronomului Johannes Kepler, inventa primul calculator mecanic, dar datele despre acesta s-au pierdut în timpul Războiului de 30 de ani. Un fapt demn de reţinut este introducerea noţiunii de logaritm (John Napier, 1614) şi inventarea unui dispozitiv de calcul bazat pe aceştia (William Oughtred, 1620).

Al doilea calculator mecanic a fost o maşină de adunat, construită în 1642 de francezul Blaise Pascal, care va deveni ulterior un strălucit matematician. Era o maşină care efectua adunări şi scăderi (pasaclinul), un dispozitiv digital (opera cu opt coloane de digiţi), recunoscut ca fiind primul calculator mecanic.

În 1671 matematicianul german Gottfried von Leibnitz realizează o maşină mai performantă de cât pasaclinul ş care pute efectua adunări şi scăderi, înmulţiri şi împărţiri, dar şi extragerea rădăcinii pătrate. Leibnitz şi-a îmbunătăţit maşina în 1673, dar primul calculator disponibil comercial a fost arithmometrul, inventat de francezul Charles Xavier Thomas de Colmar în 1820.

Un alt pas important a fost introducerea cartelei perforate pentru a stoca date şi a controla procesarea datelor într-o maşină, lucru realizat de un alt francez, Joseph-Marie Jacquard, în 1804, ca aplicaţie la războaiele mecanice de ţesut.

În 1822, inventatorul şi matematicianul englez Charles Babbage a construit prototipul unui dispozitiv complex (Difference Engine), o maşină de calculat bazată pe metoda diferenţialelor finite. Primul calculator digital, numit dispozitiv analitic (Analytical Engine), a fost proiectat de Babbage în 1834, an în care l-a şi prezentat Societăţii Regale de Ştiinţe. Această maşină mecanică era proiectată pentru a combina procesele aritmetice cu decizii rezultate din propriile calcule şi funcţiona pe baza unor principii valabile şi astăzi:

• datele şi instrucţiunile trebuiau introduse pe un suport (cartele perforate); • sistemul avea un dispozitiv de memorare; • sistemul era dotat cu un dispozitiv de calcul;

Page 10: Aplicatii Ale Informaticii in Geografie

9

• sistemul era prevăzut cu un dispozitiv de ieşire Maşina analitică nu a fost însă niciodată construită din lipsă de fonduri. S-au păstrat însă

notele, ilustraţiile şi secvenţele de programe. Secretara sa, Ada Byron King, care l-a ajutat la dezvoltarea bazelor teoretice ale calculului automat, este considerată primul rogramator (ea utilizând instrucţiunile-cod ale lui Babbage pentru a scrie programele calculator), dar şi crea care a emis concepte standard de programare: loop (sari peste) şi if-then-else (structura condiţionată).

De mare importanţă a fost opera unui alt englez, logicianul George Boole (The Mathematical Analysis of Logic: Being an Essay Towards a Calculus of Deductive Reasoning, 1847), în care trata logica asemenea unei teorii matematice. Algebra lui Boole, cu operatorii logici AND, OR, NOT şi XOR asupra numerelor binare stă la baza realizării circiutelor cu tranzistori din procesoarele calculatoarelor digitale moderne.

Un statistician care lucra pentru prelucrarea datelor primului recensământ american (1884, peste 62 de milioane de persoane recenzate), Herman Hollerith, a conceput o maşină electomecanică (census tabulator), care putea citi cartele perforate pentru a sorta datele reprezentate pe acestea . În 1896 Hollerith fondează Tabulating Machine Company care va deveni International Business Machines Corporation (IBM). Dispozitivele electromecanice pentru realizarea şi citirea cartelelor perforate au fost precursorii unităţilor de intrare/ieşire din prezent, în particular pentru computerele IBM, pănă la sfârşitul anilor 1970, când terminalele de computer le-au făcut să dispară.

2.3.2. Primele computere analoge

Rigla de calcul, considerată de unii prea primitivă pentru a fi numită computer, a fost realizată în anii 1930 de către matematicianul englez Willian Oughtred pe baza dispozitivului de calcul al logaritmilor dezvoltat cu câţiva ani mai înainte de scoţianul John Napier.

Primele calculatoare analoge au fost proiectate pentru calcule aferente unor nevoi speciale, ca de exemplu analizatoarele armonice, unul dintre ele fiind folosit în 1873 de fizicianul englez Lord Kelvin pentru predicţia mareelor.

2.3.3. Computerele electronice şi analoge moderne Un pas semnificativ în dezvoltarea calculatoarelor analoge a fost invenţia inginerului

american Vannevar Bush, un dispozitiv de amplificare a micilor cupluri de tensiune generate de o roată. În 1930 Bush şi colegii săi de la MIT (Massachusetts Institute of Technology) au construit un computer analog denumit analizator diferenţial, pentru rezolvarea ecuaţiilor diferenţiale, şi care încorpora invenţia precedentă. Variabilele erau reprezentate prin mişcarea axului, adunările şi înmulţirile se făceau prin introducerea de variabile într-un set de roţi dinţate, iar integrarea se realiza cu ajutorul unor roţi cu raze diferite. Pentru rezolvarea de ecuaţii diferenţiale se interconectau mai multe integratoare mecanice.

Multe din calculatoarele analoge construite mai târziu au folosit tuburile electronice. Iniţial, o secvenţă de calcul se realiza prin redistribuirea manuală a interconexiunilor circuitelor; mai apoi s-a apelat la stocarea programului în formă binară, rezultând un sistem hibrid între calculatorul analog şi cel digital. Pentru majoritatea acestor hibrizi, construiţi în anii 1950, computerul digital era folosit doar ca unitate de stocare, mai multe procesoare operând sub controlul componentei digitale, cu o interfaţă de traducere a datelor de la procesoarele analoge în numere binare şi retraducerea datelor procesate binar în format analog. Începând cu anii 1960, calculatoarele hibride au fost larg folosite pentru studii de simulare în aviaţie, aeronautică, antrenarea piloţilor şi realizarea navetelor spaţiale.

Page 11: Aplicatii Ale Informaticii in Geografie

10

Pe măsură ce fabricarea circuitelor integrate destinate computerelor digitale a devenit mai ieftină decât fabricarea circuitelor pentru calculatoarele analoge, hibrizii aproape că au dispărut.

2.3.4. Calculatoarele digitale electronice moderne

Computerele cu comutare. Dezvoltări independente legate de calculatoarele digitale au

început spre sfârşitul anilor 1930, când s-au proiectat calculatoare electromecanice capabile să efectueze oraţii pe scară mare. În aceste calculatoare, numerele binare erau reprezentate prin întrerupătoare electromecanice denumite şi comutatoare, poziţiile închis/deschis denotând respectiv biţii 0/1. Un matematician american (George Sibitz) a proiectat şi pus în folosinţă, în 1939, Complex Number Calculator, prima din cele câteva astfel de maşini produse de Bell Laboratories. În Germania, Konrad Zuse a realizat, între 1936 - 49, o serie de patru calculatoare: Z1 - Z4. Dacă Z1 era în întregime un calculator mecanic, celelalte erau maşini electromecanice cu comutatoare.

In 1939 Howard Aiken de la Harvard University, în asociere cu IBM, a început proiectarea unui calculator la scară mare în întregime automat, în 1944 punând în funcţiune Automatic Sequence Controlled Calculator, cunoscut sub numele mai scurt de Harvard Mark I. Era o maşină electromecanică imensă (15,5 metri lungime şi 2,5 metri înălţime), datele erau introduse pe cartele perforate, operaţiile controlate cu secvenţe de instrucţiuni înscrise pe benzi perforate, iar rezultatele înregistrate fie pe cartele perforate fie de o maşină de scris electrică.

Computerele cu tuburi electronice. Primele asfel de computere au fost construite două decenii mai târziu, unul în Anglia (Colossus, 1943) şi altul în SUA (Electronic Numerical Integrator and Computer - ENIAC, 1945).

Primul calculator electronic digital a fost construit de John V. Atanasoff, un fizician teoretician american de la Iowa State College (astăzi Iowa State University), împreună cu asistentul său Clifford E. Berry. În perioada 1937-1942 Atanasoff a construit două calculatoare electronice speciale, la scară mică: primul era prototipul pentru cel de-al doilea, numit Atanasoff-Berry Computer, sau ABC. Prototipul, construit doar în două luni, a fost gata în 1939, servind pentru a testa două dintre ideile centrale ale proiectului lui Atanasoff: capacitatea de a stoca date în format digital şi circuite electonice pentru realizarea operaţiilor de adunare şi scădere. ABC a fost construit doar parţial, proiectul întrerupându-se din cauza războiului. Conţinea proape 300 de tuburi electronice pentru controlul calculelor, folosea numere binare, operatori logici (în locul numărării directe), capacitori de memorie şi folosea cartele perforate ca dispozitive de intrare/ieşire. Computerul digital ABC avea o acurateţe de 1000 de ori mai mare decât analizatorul diferenţial al lui Bush, considerat la acel moment cel mai avansat calculator ştiinţific din lume. Era prima maşină care folosea mijloace electronice pentru manipularea de numere binare; în plus unele concepte introduse de Atanasoff au rămas valabile şi astăzi (folosirea capacitorilor în memoriile dinamice cu acces aleatoriu-DRAM, regenerarea capacitorilor şi separarea memoriei de partea de procesare). Recunoaşterea meritelor lui Atanasoff, care au fost iniţial eclipsate de introducerea lui ENIAC, a fost rezultatul unui proces juridic pus pe rol în 1967 de Sperry Rand Corporation împotriva Honeywell, Inc., pentru a-şi proteja patentul. Părţi ale respectivului patent (care acopereau toate aspectele esenţiale ale realizării de calculatoare electronice digitale) s-au dovedit a fi derivate din ABC şi informaţiile oferite de Atanasoff lui John W. Mauchly la începutul anilor 1940. În 1973 patentul asupra ENIAC a fost declarat invalid.

Colossus a fost construit la Bletchley Park, în nordul Londrei, fiind operaţional în decembrie 1943; conţinea 1500 de tuburi electronice şi fusese proiectat pentru spargerea codurilor gernerate de dispozitivil german Enigma.

Un alt moment important a fost acela în care J. Mauchly, J. Presper Eckert şi colegii lor de la Moore School of Electrical Engineering, University of Pennsylvania au construit calculatorul

Page 12: Aplicatii Ale Informaticii in Geografie

11

electronic digital de mare viteză ENIAC (februarie 1946), primul calculator pentru scopuri generale. ENIAC, cu cele 18000 de tuburi electronice, deşi era uriaş ca dimensiuni, era de peste 1000 de ori mai rapid decât predecesorii săi, executa până la 5000 de adunări pe secundă şi era controlat de un program extern, care se încărca prin conectori electrici.

În 1945, matematicianul american John von Neumann (născut la Budapesta), sintetizând descoperirile unei echipe de cercetători de la Moore School şi făcând analogii cu modul de funcţionare a creierului uman, a elaborat principiile care stau, şi astăzi, la baza construcţiei unui computer digital, cunoscute ca fiind principiile şi arhitectura von Neumann: • deoarece maşina este destinată calculelor, deci va efectua cel mai frecvent operaţii aritmetice, este necesară prezenţa unei componente specializate, numită astăzi unitatea aritmetico-logică; • operaţiile se execută secvenţial, ceea ce impune o distincţie între instrucţiunile necesare rezolvării unei probleme particulare şi controlul general asupra acestor instrucţiuni. De aici rezultă necesitatea unei alte componente, numită astăzi unitatea de control; • este necesară o componentă de memorie, în care sunt stocate instrucţiunile şi datele necesare rezolvării problemei, componentă numită astăzi memorie operativă; • sunt necesare componente pentru receptarea semnalelor exterioare şi comunicare de mesaje către exterior, componente numite astăzi unităţi de intrare/ieşire; • este mecesară o memorie permanentă, numită astăzi memoria externă; • este necesară existenţa posibilităţii de trecere de le memoria intrenă la cea externă.

Multe dintre idei exprimau şi contribuţia altor ingineri din grupul de cercetări, cu deosebire

Eckert and Mauchly, care prevăzuseră programe rezidente în calculator pentru EDVAC (Electronic Discrete Variable Automatic Computer), succesorul lui ENIAC. Neuman şi-a continuat cercetările la Institute for Advanced Study (IAS), Princeton University, împeună cu Herman Goldstine şi Arthur Burks, publicând în 1946 un raport extrem de influent despre programele rezidente în computer.

Mark I, proiectat de Thomas M. Kilburn şi Frederic C. Williams, de la Manchester University, şi EDSAC (Electronic Delay Storage Automatic Calculator), proiectat de Maurice V. Wilkes la Cambridge University, au fost primele calculatoare cu program rezident produse în Marea Britanie. Mark I a fost şi primul computer comercial, vânzându-se opt unităţi. Unele dintre primele calculatoare proiectate în SUA, ca ORDVAC (Ordinance Variable Automatic Computer), Whirlwind I, şi IBM 701, erau tot computere cu program rezident.

2.4. Clasificarea calculatoarelor

Calculatoarele moderne sunt uneori clasificate în mai multe generaţii, fiecăreia corespunzându-i inovaţii tehnologice majore.

Computerele din prima generaţie (anterioare anului 1955) foloseau tuburi electronice şi porţi logice, aveau viteză de calcul mică şi capacităţi de stocare limitate şi un consum mare de energie. Notabile sunt: UNIVAC I (Universal Automatic Computer), UNIVAC II, Mark I şi Mark III.

Computerele din a doua generaţie (1956 - 1965) marchează introducerea tranzistorului în realizarea circuitelor logice, fiind lansate pe piaţă de Control Data Corporation şi IBM în anii1960.

Deşi inventat din 1947, tranzistorul a înlocuit tuburile electronice abia 10 ani mai târziu, când şi-a dovedit avantajele: mărime mică, fezabilitate mare şi consum redus de energie. Împreună cu memoriile cu miez magnetic, acestea au făcut calculatoarele mai mici, mai rapide (100 000

Page 13: Aplicatii Ale Informaticii in Geografie

12

instrucţiuni pe secundă), mai ieftine şi deci mai accesibile. Notabile sunt: TRADIC, TX-0 (MIT), PDP 1 (DEC), CDC 6600 şi mai ales IBM 1400.

Computerele din a treia generaţie (1965-1970) se remarcă prin introducerea circuitelor integrate, miniaturizate şi introduse pe mici pastile pătrate de siliciu (6,5 mm). O realizare cu totul notabilă a fost System/360, de la IBM, o familie de şase modele diferite ca performanţe şi preţ, pentru care marele albastru investise peste 5 miliarde de dolari. Rezultatul a fost introducerea conceptului de "compatibil IBM", ceea ce înseamnă partajarea resurselor calculatorului şi schimbul de date între mai multe calculatoare.

Computerele din generaţia a patra (1970-1990) au adus nou integrarea pe scară mare (large-scale integration - LSI), adică apariţia microprocesoarelor, în care se află încorporate toate componentele aritmetice, logice şi de control necesre funcţionării unităţii centrale de procesare, primul dintre ele cu succes comercial fiind 8080, produs de Intel Corp. în 1974. În 1975, Stevan Jobs şi Stephan Wozniak au realizat calculatorul personal ALTAIR 8000, iar doi ani mai târziu pun bazele companiei Apple, care va deveni un nume de referinţă. S-a renunţat la memoriile cu miez magnetic, trecându-se la fabricarea de cipuri de RAM, mai ieftine şi mai fiabile, iar calculatoarele au capătat configuraţia familiară în prezent.

În anii 1980 s-a trecut la integrarea la scară foarte mare (very-large-scale integration VLSI), computerele acestei perioade fiind considerate tot de generaţia a patra, dar mul mai rapide (milioane de operaţii pe secundă) şi din ce în ce mai accesibile utilizatorului individual.

Începând cu 1990 se poate vorbi de computerele de generaţia a cincea, rezultat al eforturilor conjugare ale producătorilor din SUA şi Japonia, sponsorizaţi de către guvernele respective. Se pune accentul pe inteligenţa artificială, raţionamente produse de maşini, limbaje de programare logice (Prolog), dar ale căror implicaţii nu sunt încă evidente pe piaţa computerelor.

Calculatoarele mici sau calculatoarele personale (PC) sunt destinate uzului personal. Cu

alte cuvinte, ele sunt destinate folosinţei exclusive a unei singure persoane, spre deosebire de supercalculatoare, servere sau minicomputere, care sunt folosite în comun de mai mulţi utilizatori.

Calculatoarele personale, ca de exemplu familia PS/2 produsă de IBM, clonele acesteia produse de o mare varietate de fabricanţi şi familia MacIntosh produsă de Apple Computers Inc., sunt mai ieftine şi mai mici decât serverele sau microcomputerele, dar au performanţe mai reduse. Ele sunt însă potrivite pentru nevoile medii ale utilizatorilor individuali, cum ar fi editarea de texte, aplicaţii grafice relativ simple şi rularea unor programe obişnuite de contabilitate.

Calculatoarele personale sunt clasificate pe baza mărimii şi a portabilităţii. Acelea dintre ele care pot fi aşezate pe birou dar nu sunt portabile sunt numite desktop computers. Sunt numite portabile acele calculatoare personale care sunt destul de uşoare pentru a putea fi transportate fără efort. Portabilele care pot fi ţinute pe genunchi în timpul folosirii sunt denumite laptop computers; notebook computers sunt cam de mărimea unei cărţi. Există şi calculatoare personale care pot fi purtate în buzunar (pocket computers) sau chiar de mărime mai mică (palm computers).

În mod obişnuit, unitatea standard de introducere a datelor este tastatura, dar în cazul în care nu este necesară utilizarea unor comenzi foarte explicite (cum sunt meniurile multiopţiune), se folosesc şi alte procedee (mouse, touch-screen, creionul electronic etc.).

Staţiile grafice sunt calculatoare personale mai puternice, capabile de performanţe apropiate de minicomputere, ca de exemplu staţiile SPARC, produse de SunMicrosystems Inc. sau familia RS/6000 produsă de IBM. Acestea sunt folosite în mod curent pentru aplicaţii ştiinţifice sau inginereşti, ca şi pentru sistemele bancare.

Calculatorul este legat de o serie de periferice, de regulă comune pentru orice sistem informatic spaţial.

Page 14: Aplicatii Ale Informaticii in Geografie

13

Digitizorul, sau un alt dispozitiv asemănător, este folosit pentru convertirea datelor cartografice din format analog în format digital.

Scannerul este utilizat pentru importul imaginilor şi transformarea lor în format digital, ca şi pentru acele date care ulterior pot fi digitizate direct pe ecran (on screen).

Modemul asigură comunicarea cu alte calculatoare sau cu exteriorul şi importul automat al datelor în format digital.

Pentru transferul unui volum mare de informaţii pe suport material se folosesc în mod curent inscriptorul de CD (pentru transpunerea informaţiei pe suport), respectiv lectorul de CD (pentru citirea şi preluarea informaţiei de pe suportul material).

Plotterul sau imprimanta sunt dispozitive folosite în mod curent pentru prezentarea rezultatelor prelucrării datelor sau pentru editarea de produse cartografice.

Calculatoarele mai sunt clasificate şi pe baza modului în care sunt prezentate datele, în trei tipuri: analogice, digitale şi hibride.

2.5. Structura internă şi modul de funcţionare

Dintre cele trei tipuri, calculatoarele digitale sunt cele mai răspândite. Din punct de vedere funcţional, la un prim nivel de descriere simplist, dar corect, componentele esenţiale ale unui calculator digital sunt: unitatea de control, unitatea aritmetică şi logică, unitatea de

memorie şi unităţile de intrare şi ieşire (fig.2.5.1): Unitatea de control (Control Unit sau CU) coordonează activitatea tuturor componentelor,

sincronizează şi execută instrucţiunile. Unitatea aritmetică şi logică (Arithmetic - Logic Unit = ALU) cuprinde totalitatea circuitelor şi

dispozitivelor în care sunt efectuate calcule şi executate instrucţiunile, ea fiind astfel implicată direct în realizarea operaţiilor aritmetice şi logice.

Figura 2.5.1. Organizarea de bază a computerelor

Page 15: Aplicatii Ale Informaticii in Geografie

14

Din punct de vedere constructiv însă, cele importante care asigură funcţionarea unui calculator personal sunt microprocesorul, memoria internă, magistrala de date şi magistrala de comenzi (fig. 2.5.2):

Pentru a putea să înţelegem mai uşor, va trebui mai întâi să descriem fiecare componentă în parte. Apoi vom explica modul în care aceste componente interacţionează pentru a asigura funcţionarea unui calculator.

Unitatea aritmetică, unitatea de control şi eventual memoria de capacitate mică sunt cunoscute sub denumirea de procesor sau unitatea centrală de procesare (Central Processing Unit sau CPU). Procesorul execută instrucţiunile individuale de program şi controlează modul de operare a celorlalte componente ale calculatorului. Toate componentele procesorului conţin registre (locaţii de memorie ce pot fi accesate rapid), unele folosite pentru a depozita datele folosite frecvent sau rezultatele intermediare, altele fiind rezervate pentru sarcini speciale. Prin urmare, procesorul este componenta esenţială a computerelor, deoarece viteza sa de operare determină în mod direct viteza calculatorului ca întreg.

Un microprocesor conţine în interiorul său zone în care poate memora date de lungimi foarte mici. Aceste locaţii poartă numele registre, iar fiecare registru are un nume special (de exemplu: registrul AX, registrul BX, etc.). Între toţi regiştrii, există un registru care are un rol special, şi anume registrul IP (Instruction Program). Microprocesorul este conectat la celelalte componente ale calculatorului prin intermediul magistralei de comenzi. Microprocesorul reprezintă "creierul" întregului calculator, coordonatorul tuturor operaţiilor ce sunt efectuate de către acesta.

Modul de operare al procesorului este analog calculelor pe care le face o persoană care foloseşte un calculator aritmetic. Unitatea de control corespunde creierului uman, iar memoria unui carnet pe care sunt notate algoritmul de lucru, datele iniţiale, intermediare şi rezultatul calculelor. În cazul calculatoarelor electronice, unitatea centrală de procesare, unitatea de control şi memoria

Pupitrul de comandă

Memoria internă

Unitatea aritmetică şi logică

Memoria externă

Echipament de intrare

Echipament de ieşire

Unitatea de comandă şi control

Mesaje

Instrucţiuni

Adrese

Informaţii de stare

Comenzi

Comenzi şi informaţii de stare

Rezultate finale

Rezultate intermediare

Figura 2.5.2. Structura internă a unui calculator

Page 16: Aplicatii Ale Informaticii in Geografie

15

cu acces rapid sunt realizate utilizând circuite cu grad foarte mare de integrare (Very-Large-Scale Integration = VLSI).

Toate datele, indiferent de format (text, imagine, magnitudini, sunete, simboluri, calcule etc.), sunt exprimate în numere, ceea ce face posibilă procesarea lor (prin adunare, înmulţire, comparare sau alte operaţii simple) de către unitatea aritmetică şi logică. Aceste numere sunt reprezentate în format binar şi nu în formatul zecimal pe care noi îl folosim în mod curent.

Memoria internă este formată, fizic, din mai multe circuite integrate, care au un aspect exterior asemănător cu cel al procesorului. Ea este alcătuită din mai multe părţi de dimensiune egală, care sunt denumite locaţii de memorie. Locaţiile de memorie sunt numerotate în ordine începând cu valoarea 0 (0, l, 2, 3, 4, ...). Aceste "etichete" puse peste locaţiile de memorie se cheamă adrese de memorie. Deci adresele de memorie sunt numele locaţiilor (zonelor) de memorie.

Şi memoria internă este conectată la celelalte componente a1e calculatorului prin intermediul celor două magistrale: magistrala de date şi magistrala de comenzi Deşi denumirea lor este pretenţioasă, aceste "magistrale" nu sunt altceva decât un mănunchi de fire (sau mai exact trasee de cupru imprimate pe o placă de circuit). Desigur, pe magistrala de comenzi circulă comenzile, iar pe cea de date, datele transferate între componentele calculatorului. Placa de bază (engl. motherboard; mainboard) este o placă de circuite integrate ce conţine principalele componente ale unui computer (CPU, RAM, ROM) şi număr de un sloturi pentru plăcile de extensie. Puterea, capacitatea memoriei şi compatibilitatea unui microcomputer pot fi îmbunătăţite prin adăugarea de plăci de extensie sau memorie suplimentară la placa de bază.

Plăcile de extensie sunt tot plăci cu circuite integrate, care pot fi introduse în computere cu scopul măririi capacităţilor sale sau adăugarea de facilităţi (placa grafică, placa de sunet, placa de reţea etc.).

Am prezentat toate aceste noţiuni pentru a putea descrie corect modul de funcţionare a unui calculator. Să precizăm însă că modul de funcţionare al unui calculator digital este algoritmic.

La un moment dat în toate registrele microprocesorului se află valori bine determinate (altfel spus starea sa curentă este determinată). Totodată, în registrul IP (ce are un rol special) se află adresa următoarei instrucţiuni de executat (să zicem valoarea 7). Iată ce se întâmplă în continuate, la nivel infinitezimal: − microprocesorul depune pe magistrala de date valoarea din registrului IP; − apoi depune pe magistrala de comenzi instrucţiunea "citeşte din memorie"; − memoria internă primeşte comanda respectivă şi se conformează, adică: − preia de pe magistrala de date valoarea lui IP, caută la adresa respectivă şi scoate din acea locaţie (locaţia 7) conţinutul ei (presupunem că în locaţia 7 era memorată valoarea 23); − apoi depune pe magistrala de date valoarea citită (23) şi în final îşi încheie misiunea prin depunerea pe magistrala de comenzi a semnalului "am terminat citirea"; − microprocesorul recepţionează semnalul şi citeşte de pe magistrala de date (valoarea 23); − această valoare reprezintă pentru microprocesor acţiunea de realizat sau o instrucţiune. Dacă această instrucţiune înseamnă "adună registrul AX cu registrul BX şi depune rezultatul operaţiei în registrul AX": − instrucţiunea este executată, iar apoi − registrul IP este crescut cu o unitate; noua valoare a lui IP va fi 8.

Din acest moment întreg ciclul se repetă. Se va citi noua instrucţiune de executat (ce se află în memorie la adresa 8), va fi executată această instrucţiune, iar apoi registrul IP va fi crescut cu o unitate, trecându-se la instrucţiunea următoare. Execuţia continuă în acest mod, la infinit.

Totuşi, vă puteţi întreba ce se întâmplă când registrul IP alunge la "sfârşitul" memoriei interne? Acest lucru nu se întâmplă niciodată, deoarece există şi instrucţiuni care modifică valoarea

Page 17: Aplicatii Ale Informaticii in Geografie

16

lui IP, scoţându-l din monotonia incrementării cu o unitate. Spre exemplu, o instrucţiune pe care o poate executa microprocesorul sună astfel: "scade din registrul IP valoarea 100". Aceasta înseamnă întoarcerea cu 100 de instrucţiuni mai înainte. Iar această revenire nu înseamnă executarea, în mod inutil, a aceloraşi 100 de instrucţiuni anterioare, deoarece la întoarcerea în acel punct valorile registrelor de date sunt altele. Executarea aceloraşi operaţii înseamnă progresarea în calcule .

Atunci când sunt complet realizate calculele pentru care a fost concepută o astfel de "buclă", registrului IP i se dă (tot printr-o instrucţiune) o valoare ce semnifică trecerea la următoarea etapă de lucru ş.a.m.d. Pe parcursul executării unor astfel de instrucţiuni, procesorul poate depune conţinutul unui registru într-o locaţie de memorie, sau poate citi valoarea unei locaţii de memorie şi o poate depune în unul din registrele sale pentru a fi prelucrată. Toate acestea, desigur, dacă instrucţiunile pe care le execută îi comandă aşa ceva.

Memoria internă este componenta cea mai apropiată, cu care colaborează microprocesorul. În memoria internă se află programul, secvenţa de instrucţiuni pe care le execută microprocesorul, precum şi datele folosite de program sau rezultatele finale furnizate de program.

Desigur, rezultatele furnizate de execuţia unui program nu pot rămâne numai în memoria internă a calculatorului. Cine le-ar putea citi astfel? Ele trebuie afişate pe monitor. Pentru aceasta microprocesorul parcurge următoarele etape (dictate ca totdeauna de instrucţiuni ale programului):

• citeşte un caracter din memoria internă; • depune acest caracter pe magistrala de date; • depune pe magistrala de comenzi, comanda (destinată monitorului): "afişează pe

ecran acest caracter". Şi tot aşa, până termină de afişat întregul mesaj. Această modalitate de lucru este posibilă deoarece monitorul (ca orice alt dispozitiv) este şi el cuplat la cele două magistrale.

Tipărirea la imprimanta decurge - în principiu - similar modului în care se afişează mesaje pe monitor.

Toate dispozitivele diferite de microprocesor sau de memoria internă sunt denumite periferice. Monitorul şi imprimanta sunt periferice "de ieşire" deoarece datele ies din memoria internă către exterior. Tastatura este un periferic "de intrare" deoarece datele (comenzile) parcurg drumul invers, din exterior, prin intermediul microprocesorului, către memoria internă.

Pentru a avea o imagine completă asupra structurii interne a unui calculator personal rămâne să ne lămurim cum funcţionează şi la ce foloseşte memoria externă.

Această memorie suplimentară comunică cu microprocesorul, tot prin intermediul celor două magistrale, într-un mod similar celorlalte periferice. De remarcat că memoria externă este un dispozitiv "de intrare - ieşire". Istoria acestei memorii externe este următoarea.

Memoria internă, fiind fizic compusă din circuite integrate, este volatilă. Ceea ce înseamnă că 1a decuplarea de la curent a calculatorului, moment în care circuitele integrate nu mai sunt alimentate cu tensiune, informaţia existentă în memoria internă se pierde iremediabil. Dacă înainte de oprirea calculatorului la adresa de memorie 7 se află valoarea 35, după ce calculatorul este oprit şi apoi repornit, la adresa de memorie 7 va fi o valoare absolut întâmplătoare, pe care nimeni în această lume nu o poate prevedea (ea poate fi 53 sau 41 sau ... chiar 35 - procesul este complet aleator).

Într-o astfel de situaţie ne punem întreba ce se întâmplă când se porneşte un calculator. În memorie se află instrucţiuni haotice, nicidecum un program coerent. Cum apare un program în memorie? Trebuie să-l introducem de la tastatură? Sau - după ce a fost executat un program - dacă doresc să păstrez rezultatele execuţiei sale ce trebuie să fac? Să păstrez continuu calculatorul conectat la curent?

Page 18: Aplicatii Ale Informaticii in Geografie

17

Toate aceste neplăceri au fost rezolvate prin adăugarea la componenţa calculatorului a unei memorii nevolatile din care se poate citi şi în care se poate scrie. Această memorie - pe post de depozit - este memoria externă. Ea este reprezentată în mod special de discurile magnetice, informaţiile memorate astfel fiind nevolatile.

Pe de altă parte memoria externă are de obicei o capacitate mult superioară celei interne. În memoria externă sunt stocate mai multe programe precum şi datele corespunzătoare lor. La un moment dat va fi încărcat în memoria internă un anumit program de pe disc, va fi executat iar rezultatele sale vor fi salvate pe disc. Odată ce programul în cauză şi-a făcut datoria, se poate încărca, de pe disc, un alt program, în aceeaşi zonă de memorie în care a fost predecesorul său. Noul program va fi executat, iar rezultatele sale (dacă sunt utile) vor fi salvate ş.a.m.d. Deci, în memoria internă există un singur program la un moment dat, program ce deţine controlul asupra calculatorului. În memoria externă (pe suport magnetic) există toate celelalte programe care pot fi lansate pe calculatorul respectiv. Orice program pentru, a fi executat, este mai întâi copiat de pe suportul magnetic (disc) în memorie.

Memoria externă este alcătuită, în principal, din discuri. Discurile fixe sunt de obicei în interiorul unităţii centrale, iar discurile mobile (floppy, CD, DVD, etc.) sunt citite cu ajutorul unor dispozitive speciale, numite generic drive-uri. Datorită modului lor constructiv, discurile fixe au capacităţi foarte mari de stocare, dar şi viteze din ce în ce mai ridicate de lucru. Ele sunt folosite pentru stocări masive de date şi rulări rapide de programe.

2.6. Parametrii şi caracteristicile esenţiale ale unui calculator personal

Deoarece vom vorbi despre parametrii care caracterizează un calculator, vom prezenta

fiecare componentă în parte, cu specificaţiile tehnice necesare.

2.6.1. Microprocesorul Nu vom face o istorie a evoluţiei microprocesoarelor sau a metodelor constructive folosite

pentru fabricarea lor. Deocamdată ne interesează informaţii mult mai concrete. Un microprocesor este caracterizat, în principal, de: • viteza de lucru; • capacitatea maximă de memorie care o poate adresa; • setul de instrucţiuni pe care le poate executa.

Viteza de lucru a unui microprocesor este determinată de mai mulţi factori: • frecvenţa ceasului intern; • dimensiunea registrelor interne şi a magistratei de date; • tipul constructiv al microprocesorului; • dimensiunea memoriei cache.

Să analizăm în parte fiecare dintre aceste caracteristici. Ceasul intern al unui calculator personal este de fapt un oscilator care trimite pulsuri la

intervale de timp egale, bine determinate. Toate activităţile calculatorului sunt coordonate de aceste pulsuri periodice şi în special funcţionarea microprocesorului. Dacă ne amintim modalitatea în care este efectuată o instrucţiune (depunerea adresei pe magistrală, comanda de citire din memorie, citire efectivă cu depunerea valorii citite pe magistrală, preluarea valorii de către microprocesor şi executarea instrucţiunii corespunzătoare acestei valori) constatăm că realizarea unei instrucţiuni de către microprocesor reprezintă o sumă de etape parţiale. Fiecare dintre etape se realizează în intervalul dintre două pulsuri de ceas. Ca o paranteză, putem menţiona că etapele de realizare a unei

Page 19: Aplicatii Ale Informaticii in Geografie

18

instrucţiuni nu sunt cu exactitate cele descrise mai sus, dar important rămâne să înţelegem corect modalitatea de funcţionare şi nu detaliile tehnice subtile.

Aşadar, ceasul intern nu are nimic de-a face cu măsurarea orei exacte, aşa cum ar sugera denumirea sa. El are rolul de a asigura în permanenţă pulsuri pe baza cărora componentele unui calculator îşi coordonează activitatea. Frecvenţa cu care sunt generate aceste pulsuri se numeşte frecvenţa ceasului intern. Unitatea de măsură a frecvenţei este Hertz-ul, împreună cu multiplii săi:

1 Kilo Hertz = 1.000 Hertz 1 Mega Hertz = 1.000.000 Hertz 1 Giga Hertz = 1.000.000.000 Hertz De exemplu, o frecvenţă de 650 MHz înseamnă 650 milioane de pulsuri pe secundă.

Desigur, nici un microprocesor nu realizează instantaneu operaţiile care îi asigură funcţionarea. Fiecare are o valoare maximă a frecvenţei de ceas la care poate funcţiona fără să se "încurce". Există mulţi alţi factori care determină viteza de lucru a unui calculator. Şi, de fapt, un calculator "lent" pentru un program foarte complicat, poate să reacţioneze extrem de rapid in cazul unui program mai puţin complex.

Un alt factor care determină viteza de lucru a unui calculator este dimensiunea registrelor interne ale microprocesorului şi dimensiunea magistralei de date. Toate aceste dimensiuni se măsoară cu ajutorul bit-ului.

Un bit este cea mai mică unitate de informaţie. Ne putem imagina bit-ul ca o adresă goală; la această adresă poate exista valoarea 1 (care înseamnă tot) sau valoarea 0 (care nu înseamnă nimic). Să nu confundăm! Căsuţa goală este bit-ul, iar conţinutul ei reprezintă informaţia bit-ului (care poate fi 0 sau 1)

Deoarece sistemul de numeraţie folosit cu predilecţie în informatică este cel binar (sistem în care există numai cifrele 0 şi1), vom constata că multiplii bit-ului sunt puteri ale lui 2.

1 byte

bit 7 bit 6 bit 5 b

bit 4 bit 3 bit 2 bit 1 bit 0 1 byte (octet) = 23 = 8 biţi 1 word (cuvânt) = 24= 16 biţi 1 double word (dublu cuvânt) = 25 = 32 biţi 1 Kilo byte (Kb) = 210= 1024 biţi (Deci un kilobyte nu este egal cu 1000 biţi!) 1 Mega byte (Mb) = 220 = 1.048.576 biţi 1 Giga byte (Gb) = 230 biţi 1 Tera byte (Tb) = 240 biţi Revenind la dimensiunea registrelor din microprocesor este uşor de înţeles de ce cu cât

dimensiunea lor este mei mare cu atât este viteza de lucru mai mare. Aceasta deoarece capacitatea de memorare din interiorul microprocesorului (în registre sale) este mai mare, deci numărul de operaţii de transfer cu memoria internă este mai mic, iar toate aceste transferuri consumă timp (pulsuri de ceas).

Dimensiunile tipice ale registrelor interne sunt de 8, 16, 32, 64 şi mai recent de 128 de biţi. De asemenea este foarte importantă dimensiunea magistralei de date. Cu cât această

dimensiune este mai mare, cu atât este mai mare volumul de date ce circulă pe magistrală. O magistrală îngustă poate gâtui un calculator în care toate celelalte componente sunt rapide. Un alt factor ce influenţează viteza de lucru este tipul de microprocesor, deoarece fiecare generaţie de astfel de produse are performanţe menţionate în mod expres de către producători.

Page 20: Aplicatii Ale Informaticii in Geografie

19

O ultimă caracteristică ce influenţează viteza de lucru a microprocesorului o reprezintă dimensiunea memoriei cache. Respectiva memorie este concepută pentru a fi legată mai direct de microprocesor decât memoria internă, pentru se evita toate acele operaţii intermediare. Microprocesorul comunică mult mai rapid cu memoria cache (dat fiind modul constructiv special al acesteia), iar dacă programul pe care îl are de executat se află în memoria cache el va funcţiona mult mai rapid.

Mai jos este descris modul în care funcţionează un microprocesor dotat cu memorie cache. Să presupunem că această memorie cache are dimensiunea de 1 Kb (Kilobyte). Când

microprocesorul are de executat o instrucţiune, să zicem cea de la adresa 28 el va citi mai întâi din memoria internă în memoria cache un Kilobyte de memorie începând cu adresa 28 (deci de la adresa 28 până la adresa 28 + 1024 = 1052) după care va executa în ordine (ca şi când nimic nu s-ar fi schimbat) instrucţiunile programului. Diferenţa constă in faptul că aceste instrucţiuni se află în cache şi pot fi accesate mult mai rapid. Când a ajuns cu execuţia la instrucţiunea de la adresa 1053, care nu se află în cache, va face din nou citirea unui bloc întreg în cache, iar apoi va continua execuţia. La citirea unui astfel de bloc procedeul aplicat este citirea "în cascadă", ceea ce înseamnă că se dă o singură comandă memoriei interne, comandă ce sună astfel: "citeşte 1024 de bytes începând de la adresa ...". Se economiseşte astfel timpul necesar efectuări de 1023 de comenzi ale microprocesorului către memoria internă şi a unui număr tot atât de mare de răspunsuri "terminat citirea" furnizate de memoria internă.

Concluzia: cu cât memoria cache este mare, cu atât este mai mare viteza de lucru. Valorile tipice ale dimensiunii memoriei cache sunt: 128, 256, 512 biţi.

Pe lângă viteza de lucru, o altă mărime este esenţială pentru un microprocesor: capacitatea maximă de memorie pe care o poate adresa.

Să presupunem că un microprocesor are registrul IP de 16 biţi. Deci în acest registru, în care se află adresa de memorie (a unei instrucţiuni) se pot afla valori între 0 şi 1111.1111.1111.1111 - cel mai mare număr de 16 cifre în sistemul de numeraţie binar.

Această valoare maximă este de 1111.1111.1111.111(2) = 1x215 + 1x214 +…+ 1x20 = 216 - 1 = 65535.

Deci registrul IP poate adresa locaţiile de memorie dintre adresele 0 şi 65535, adică poate adresa maximum 64 Kb de memorie. Calculatorul poate avea de 10 ai mai multă memorie, ea poate fi considerată inutilă deoarece microprocesorul nu ştie să o adreseze. În principiu, este de reţinut faptul că un microprocesor nu poate adresa o cantitate infinită de memorie, ci numai cantitatea maximă impusă de procesul său constructiv. În realitate, se fac tot felul de "trucuri" pentru a mări continuu aceste valori. De ce este importantă valoarea maximă a memoriei adresabile? În primul rând pentru că microprocesorul lucrează mult mai rapid cu memoria internă decât cu cea externă (discurile) şi în al doilea rând să ne amintim că un program nu se poate executa decât dacă se află în memoria internă. Iar programele, cu cât sânt mai complexe cu atât ocupă mai multă memorie. Deci ne putem trezi că nici măcar nu putem porni un program deoarece memoria internă a calculatorului de care dispunem este insuficientă.

O ultimă caracteristică a microprocesorului o reprezintă setul de instrucţiuni pe care acesta le poate executa. Cu cât acest set este mai bogat, cu atât mai multe domenii de activitate pot fi abordate cu succes de respectivul calculator. În general, setul de instrucţiuni este caracterizat direct de tipul microprocesorului. Ordinea ascendentă a generozităţii setului de instrucţiuni este aceeaşi cu cea cronologică a apariţiei lor, şi anume: (8088), 8086, 80186, 80286, 80386, 80486, 80586, Pentium, Pentium II, Pentium III etc. Setul de instrucţiuni al fiecăruia din aceste microprocesoare poate fi îmbunătăţit prin adăugarea unui coprocesor matematic.

Când microprocesorul trebuie să efectueze o de adunare repetată, apelează la coprocesor său şi primeşte "cadou" rezultatul final. Pentru fiecare microprocesor există un unic coprocesor

Page 21: Aplicatii Ale Informaticii in Geografie

20

matematic cu care acesta poate funcţiona. La ora actuală, aceste coprocesoare sunt incluse în pastila de siliciu a microprocesorului. Folosirea unui coprocesor matematic îmbunătăţeşte performanţele de lucru ale unui calculator doar dacă se rulează un program ce apelează funcţiile sale. Spre exemplu, dacă se rulează un program de culegere de text, prezenţa unui coprocesor nu influenţează cu nimic funcţionarea calculatorului. În schimb, dacă este rulat un program specializat pe calcule matematice (funcţii trigonometrice, rezolvarea de ecuaţii matematice complexe) prezenţa unui coprocesor devine o necesitate. Observaţie: Frecvenţa de ceas a coprocesorului trebuie să fie egală cu cea a microprocesorului !

În general, pentru caracterizarea unui microprocesor este folosită şi noţiunea: Milioane de Instrucţiuni Pe Secundă (MIPS). Desigur, cu cât această valoare este mai mare, microprocesorul este mai rapid. Nu vom detalia noţiunea în cauză deoarece în ofertele de PC-uri nu veţi întâlni specificaţii de acest gen.

2.6.2. Memoria internă

Dacă microprocesorul unui calculator a fost relativ dificil de caracterizat, de acum înainte

lucrurile vor fi mult mai simple pentru celelalte componente, deoarece acestea sunt mai puţin complexe.

Memoria internă a unui calculator, a doua componentă în ordinea importanţei, este caracterizată de doi parametri:

- dimensiunea şi - timpul maxim de răspuns. Dimensiunea acestei memorii este, desigur, în strânsă legătură cu microprocesorul folosit

(în speţă cu limitările impuse de acesta). Cu cât dispuneţi de mai multă memorie internă, performanţele calculatorului dumneavoastră vor creşte exponenţial. Dacă notăm şi faptul că această memorie este relativ de ieftină, putem formula următorul îndemn: "Cumpăraţi cât mai multă memorie cu putinţă pentru că nu veţi regreta!".

Cealaltă caracteristică, timpul maxim de răspuns, se referă la intervalul de timp care este necesar memoriei interne pentru a citi sau scrie date. Mai exact intervalul de timp ce se scurge din momentul în care primeşte de la microprocesor comanda de citire şi momentul în care depune pe magistrala de date valoarea citită (similar pentru scriere). Valoarea medie a acestui parametru este de 70 ns. Să amintim că:

1 ms (mili) = 10-3 secunde = 0,001 secunde 1 µs (micro) = 10-6 s = 0,000.001 s 1 ns (nano) = 10-9 s = 0,000.000.001 s 1 ps (Pico) = l0-12 s = 0,000.000.000.001 s Desigur, cu cât această valoare este mai mică, cu atât mai rapid va funcţiona calculatorul în

cauză. Acest parametru depinde în principal de tehnologia de construcţie a cip-urilor (circuitelor) de memorie.

Memoria internă a unui calculator se împarte în trei grupe mari. Acestea sunt: memoria de bază, memoria expandată şi memoria extinsă.

Memoria de bază este cea mai importantă componentă a memoriei interne. Ea reprezintă primii 640Kb de memorie sau altfel spus memoria maximă disponibilă pentru programe în cazul primului microprocesor folosit la realizarea unui PC - microprocesorul 8088.

Marea majoritate a programelor funcţionează în această zonă de memorie. Să precizăm mai exact: un microprocesor 8088 (sau 8086) poate adresa maxim 1Mb de memorie. Totuşi la dispoziţia programelor ce se rulează nu sunt puşi decât 640 de Kb. Ceilalţi 384 Kb de memorie (zona de adrese de la 640 Kb la 1024 Kb) sunt folosiţi de programe speciale, fără de care un calculator nu

Page 22: Aplicatii Ale Informaticii in Geografie

21

poate funcţiona, în speţă de rutine de intrare/ieşire. În această zonă există BIOS-ul (Basic Input Output System, în traducere, sistemul de bază pentru intrări/ieşiri). BIOS reprezintă o colecţie de mici programe care "ştiu" să comunice cu perifericele calculatorului. Fără aceste "servicii" oferite de BIOS un calculator nu poate "citi" un caracter de tastatură şi nici nu poate afişa un caracter pe ecran - deci nu poate funcţiona.

Aşadar, pentru BIOS este rezervată zona dintre 640 Kb şi 1 Mb, restul fiind la dispoziţia oricărui program aplicativ. Această memorie disponibilă (între 0 şi 640 Kb ) se numeşte memorie de bază.

Memoria expandată. Odată cu mărirea gradului de complexitate a programelor, cei 640 Kb deveneau insuficienţi şi atunci s-a recurs la un "şiretlic" genial. S-a constatat că în BIOS existau zone libere, programele din BIOS nefiind "alipite" unul de celălalt. Aceste porţiuni libere constituie calea de a instala pe un calculator o memorie internă imensă, memoria expandată.

În această zonă liberă din BIOS pot aluneca pe rând diverse banc-uri de memorie. Spre exemplu, microprocesorul lucrează în această zonă cu bancul 0, apoi dă o comandă prin care solicită bancul 3. Memoria expandată "se deplasează în sus" până când bancul 3 se va afla în zona liberă din BIOS. Se lucrează cu acest banc atât cât este nevoie, iar apoi se poate comuta din nou pe bancul 0, informaţiile acestuia fiind intacte.

Deşi microprocesorul poate adresa in mod direct numai 1 Mb de memorie (memoria fizică adresabilă) el poate funcţiona cu o memorie teoretic infinită (memorie logică). Practic dimensiunea memoriei expandate (suplimentare) este şi ea limitată, deoarece numărul bancului de memorie ce trebuie comutat este memorat într-un registru al microprocesorului, deci este limitat.

Principalul lucru de reţinut din această prezentare este că în memoria expandată pot exista date sau programe şi că această memorie este semnificativ mai lentă decât memoria de bază.

Memoria extinsă. Cel de-al treilea tip de memorie internă este memoria extinsă. Este numită astfel memoria adresabilă direct de către microprocesor, de peste 1 Mb.

Această denumire este de fapt o convenţie pentru a desemna memoria adresabilă de peste 1 Mb. De reţinut este faptul că unele programe "ştiu" să folosească memoria extinsă, iar altele rulează fără a sesiza prezenţa acestei memorii, folosind în mod ineficient resursele calculatorului.

2.6.3. Memoria externă

De regulă, memoria externă a unui PC este compusă unităţi de disc fix şi flexibil. Să facem distincţia: unitatea de disc este dispozitivul care gestionează discul iar discul este suportul de memorare. Memoria externă este caracterizată (ca şi memoria internă) de doi parametri: capacitate şi viteza de transfer.

Discul fix (Hard Disk = HD) este departe, cel mai important dispozitiv al memoriei externe a unui PC, scopul său principal fiind de a funcţiona în strânsă legătură cu microprocesorul, constituindu-se într-un depozit sigur al acestuia. Este alcătuit dintr-un disc rigid (din aluminiu sau materiale ceramice speciale), acoperit cu materiale cu proprietăţi magnetice. Datele sunt citite / scrise pe disc printr-un cap de citire / scriere. Discul fix şi capul de citire / scriere sunt fixare într-o carcasă, formând împreună cu aceasta Hard Disc Drive (HDD), fiind astfel posibilă montarea sau înlocuirea acestuia cu altul nou sau de capacitate mai mare. În prezent, se consideră ca minimum necesar un disc dfix cu o capacitate de 10Gb, dar foarte curând vor fi necesare discuri dure cu capacităţi de 20 Gb sau chiar mai mari.

Deşi în general un PC posedă un singur disc fix, el poate suporta mai multe astfel de discuri, unele montate chiar în exteriorul său; există chiar şi discuri amovibile.

Page 23: Aplicatii Ale Informaticii in Geografie

22

Cât despre discurile flexibile (engl. floppy disk), datorită capacităţii lor mici de stocare (1,44 Mb), sunt din ce în ce mai puţin folosite, calculatoarele din seria iMac, de exemplu, nemaifiind prevăzute cu unităţi FDD (Floppy Disk Drive).

Să încheiem secţiunea rezervată memoriei externe menţionând şi alte tipuri de dispozitive de stocare.

CD-ROM - Abreviere de la Compact Disc Read-Only Memory, un compact disc ce este citit prin procedee optice. Un driver CD-ROM foloseşte o rază laser de mică putere pentru a citi date digitale (binare) care au fost înscrise (codate) sub forma unor mici adâncituri. Datele citite sunt apoi trimise la procesor, pentru a fi prelucrate. Suportul CD poate stoca text, imagine, sunete, muzică, filme, etc. Spre deosebire de discul fix, un drive CD-ROM nu pate scrie date, ci doar să le citească, de aceea are extensia "read only." Capacitatea standard de stocare pe un CD este de 650 MB.

CAPITOLUL 3. BAZELE ARITMETICE ALE SISTEMELOR DE CALCUL

În calculele uzuale, numerele sunt scrise în baza 10 (reprezentarea zecimală). Reprezentarea este numită poziţională, deoarece semnificaţia unei cifre depinde de poziţia ocupată în scrierea textului. În cazul calculatoarelor se utilizează alte moduri de reprezentare a numerelor (tabelul 3.1)

Tabelul 3.1. Sisteme de numeraţie

Sistemul de numeraţie Baza p Alfabetul Binar 2 (0, 1) Ternar 3 (0, 1, 2) Octal 8 (0, 1, 2, 3, 4, 5, 6, 7)

Zecimal 10 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9)

Hexagesimal 16 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F)

Într-un sistem de numeraţie, cifra este un simbol care reprezintă o cantitate întreagă, iar

numărul de simboluri permise pentru reprezentarea cifrei este numit baza sau rădăcina sistemului de numeraţie. Un număr este format din mai multe cifre:

K = Xm Xm-1…, X0,X-1,X-2,…, Xm-1

în care Xm este cifra cea mai semnificativă (CCMS) a numărului K, iar X-n este cifra cea mai puţin semnificativă (CCMPS). În continuare (tab. 3.1) sunt date exemple de sisteme de enumeraţie, fiecare fiind definit printr-un alfabet format din cifre şi litere, numărul lor determinând baza sistemului de numeraţie respectiv.

3.1. Sistemul de numeraţie zecimal Dintre sistemele de numeraţie poziţionale, cel mai reprezentativ este sistemul arab,

caracterizat de faptul că aportul unei cifre la valoarea numărului depinde atât de valoarea ei cât şi de poziţia pe care o ocupă în scrierea numărului. Acesta este de fapt ceea ce numim astăzi sistemul de numeraţie zecimal.

Bazându-se pe poziţia cifrelor unele faţă de altele şi pe ponderea puterilor lui 10 (altfel spus, cifrele cer compun numerele sunt aşezate în ordine, după puterile crescătoare sau descrescătoare ale bazei), acest sistem este numit sistem de numeraţie poziţional şi ponderat.

Exemple:

2658(10) = 2*103+6*102+5*101+8*100

Page 24: Aplicatii Ale Informaticii in Geografie

23

43,719(10) = 4*101+3*100+7*10-1+1*10-2+9*10-3

3.2. Sistemul de numeraţie octal Acest sistem conţine 8 simboluri pentru reprezentarea numerelor, fiind tot un sistem

poziţional ponderat, dar bazat pe puteri ale lui 8:

423(8) = 4*82+2*81+3*80

3.3. Sistemul de numeraţie hexagesimal Conţine 16 numere şi se bazează pe puteri ale lui 16:

36F = 3*162+6*161+15*60

3.4. Sistemul de numeraţie binar Şi acesta este un sistem de numeraţie poziţional ponderat, dar se bazează pe puterile lui 2.

Datorită faptului că celor două cifre binare (0 şi 1) li se pot asocia stările de lipsă de semnal şi semnal, sistemul binar este cel mai utilizat în calculatoarele electronice numerice.

Exemple de numere scrise în sistemul binar:

43(10) = 1*25+0*24+1*23+0*22+1*21+1*20 = 101011(2)

29,625(10) = 1*24+1*23+1*22+0*21+1*20+1*2-1+0*2-2+1*2-3 = 11101,101(2) Desigur că există şi sisteme de numeraţie nepoziţionale, cel mai reprezentativ dintre acestea

fiind sistemul roman, care foloseşte simbolurile I, V, L, C, D, MB . Regulile de formare a numerelor în acest sistem sunt următoarele:

Cifrele de aceeaşi valoare aflate unele după altele se însumează: III = 3; XXX = 30. O cifră de valoare mai mică aşezată în faţa uneia de valoare mai mare se scade din aceasta: IV

= 4; XL = 40. O cifră de valoare mai mare aşezată înaintea uneia de valoare mai mică se adaugă la aceasta:

VI = 6; LX = 60. Deşi pare simplu, acest sistem a fost abandonat datorită următoarelor neajunsuri:

- Nu există o unicitate a reprezentării numerelor (45 = VL = XXXXV) - Lungimea numărului nu are nici o legătură cu valoarea sa - Există mari dificultăţi în efectuarea calculelor.

CAPITULUL 4. OPERAŢII ÎN COD ZECIMAL – BINAR

Conversia unui număr N din zecimal în binar se face mai anevoios decât scrierea cifrelor

zecimale care formează numărul, cu ajutorul unui cod care foloseşte sistemul zecimal de reprezentare.

Page 25: Aplicatii Ale Informaticii in Geografie

24

Pentru reprezentarea cifrelor zecimale sunt necesari 4 biţi, cu ajutorul cărora se pot realiza 16 combinaţii distincte. Dintre aceste combinaţii sunt utile doar 10. În funcţie de combinaţiile alese s-au obţinut o serie de coduri, cum ar fi: 8421, 2421, 4241, Exces3 etc. În tehnica de calcul, pentru operaţiile în sistem zecimal se utilizează mai frecvent codurile 8421, Exces 3 şi 2421. Folosind codul 8421, oricare număr zecimal se poate scrie în binar cifră cu cifră mult mai repede decât în cazul în care numărul ar fi trebuit trecut din sistemul zecimal în sistemul binar.

Exemplu: numărul N = 679 va fi scris în codul binar - zecimal 8421 astfel:

6 7 9

0110 0111 1001

Folosind scrierea în codul 8421 a numerelor zecimale, să considerăm două numere: N1 = 794 şi N2 = 682

pe care le adunăm, determinând astfel algoritmul operaţiei de adunare în zecimal:

Numere mii sute zeci unităţi 0001 0001

N1 = 794 0111 1001 0100 N2 = 682 0110 1000 0010

N1 + N2 = 1467 1110 1/0001 0110 pasul 1 0110 0110

transport 0001 1/0100 0111 0110 pasul 2 (1) (4) (7) (6)

Operaţii aritmertice în sistemul binar Adunarea: 0+0 = 1 0+1 = 1 1+0 = 1 1+1 = 10, 1 se transportă la rangul următor.

Scăderea:

0-0 = 0 1-0 = 1 0-1 = 1- rezultat prin împrumut din rangul superior. 1-1 = 0

CAPITOLUL 5. CODURI, OPERAŢII ARITMETICE

În tehnica de calcul se folosesc o serie de termeni care necesită a fi precizaţi: CODUL este un sistem de reguli şi simboluri utilizate în tehnica de calcul pentru

reprezentarea informaţiei. deoarece informaţia este introdusă sub forma unor şiruri de cifre şi litere, scrierea acesteia sub forma unor şir de biţi trebuie să respecte două condiţii : combinaţia de biţi pentru fiecare caracter (cifră sau literă) trebuie să fie unică şi limita dintre combinaţiile de biţi trebuie să fie sesizabilă. În mod curent se utilizează două tipuri de coduri: coduri numerice tabelul…. (pentru cazul introducerii numai de date sub formă de numere) şi coduri alfanumerice tabelul…. (pentru cazurile în care informaţiile conţin combinaţii de cifre şi numere). Ambele tipuri de coduri pot fi ponderate şi neponderate.

CARACTERELE sunt simboluri ale alfabetului, respectiv litere, cifre, semne de punctuaţie, semne pentru operaţii etc.

Page 26: Aplicatii Ale Informaticii in Geografie

25

MODULUL (MODULO) este folosit pentru a determina o unitate de măsură sau o capacitate şi reprezintă cantitatea de combinaţii distincte care pot fi scrise cu un număr limitat de poziţii simbolice.

Cuvântul CALCULATOR este format dintr-un grup de cifre care reprezintă o unitate de bază a informaţiei în calculator. La un calculator universal, un cuvânt cuprinde între 10 şi 15 cifre zecimale sau 21 - 61 biţi.

Observaţie: cifrele din sistemul binar se mai numesc şi bit (plural biţi), denumire rezultată în urma prescurtării termenilor din limba engleză BInary digiT (digit = cifră, binary = binar).

CODUL este un sistem de reguli şi simboluri utilizate în tehnica de calcul pentru reprezentarea informaţiei. Deoarece informaţia este introdusă sub forma unor şiruri de cifre şi litere, scrierea acesteia sub forma unor şiruri de biţi trebuie să respecte două condiţii:

- combinaţia de biţi pentru fiecare caracter (cifră sau literă) trebuie să fie unică; - limita dintre combinaţiile de biţi trebuie să fie sesizabilă.

În mod curent se utilizează două tipuri de coduri: coduri numerice (pentru cazul introducerii numai de date sub formă de numere) şi coduri alfanumerice (pentru cazurile în care informaţiile conţin combinaţii de cifre şi litere). Ambele tipuri de coduri pot fi ponderate şi neponderate. În cazul reprezentării unei informaţii sub forma unui şir de caractere cu ajutorul unui cod, este necesar ca fiecare caracter să fie reprezentat cu acelaşi număr de biţi, pentru a distinge caracterele între ele adică începutul şi sfârşitul fiecăruicaracter din cadrul şirului.

Codurile numerice permit reprezentarea în mod unic a fiecărei cifre a numerelor, a semnului şi a virgulei. În cazul sistemului zecimal, pentru reprezentarea celor zece cifre vor fi necesare 10 combinaţii distincte de biţi; în cazul reprezentării cifrelor sistemului zecimal folosind numărarea în binar se foloseşte codul binar - zecimal (CBZ).

Codurile alfanumerice conţin un număr suficient de mare de biţi pentru a putea reprezenta în mod distinct cifrele, literele, semnele de punctuaţie, simbolurile aritmetice etc. Codurile alfanumerice cu 6 biţi pot realiza 64 de combinaţii distincte, iar cele cu 8 biţi oferă 156 de combinaţii distincte, suficiente pentru reprezentarea tuturor cifrelor, simbolurilor, literelor mari şi mici, precum şi a unor serii de comenzi din limbajul de programare.

CAPITOLUL 6. BAZELE LOGICE ALE STRUCTURII ŞI FUNCŢIONĂRII

CALCULATOARELOR ELECTRONICE

6.1. Algebra Booleană. Definirea domeniului

Algebra logicii sau algebra booleană este o metodă simbolică pentru studierea relaţiilor logice, fiind un capitol al logicii matematice. Regulile de bază ale acesteia au fost formulate în 1847 de către matematicianul englez George Boole şi au fost ulterior rafinate de alţi matematicieni şi aplicate pentru a da naştere unei teorii. Capitolul de logică matematică, intitulat algebra logică, a găsit o largă aplicabilitate în analiza şi sinteza schemelor componente şi a blocurilor funcţionale ale computerelor.

Ca orice sistem matematic, algebra booleană poate fi definită printr-o mulţime a elementelor, S = {0,1}, o mulţime a operatorilor elementari (•, +, -, =) şi un număr de postulate. Conform acestei definiţii, în algebra booleană variabilele nu pot avea decât una din cele două valori posibile, notate simbolic cu 0 şi1, orice valoare intermediară neavând nicio semnificaţie. Variabilele logice sunt reunite cu ajutorul operatorilor (simbolurilor) pentru a forma expresii logice. Orice funcţie poate fi determinată cu ajutorul celor patru simboluri care alcătuiesc mulţimea

Page 27: Aplicatii Ale Informaticii in Geografie

26

operatorilor din definiţia algebrei booleene. Din acest motiv aceştia sunt denumiţi operatori fundamentali şi conduc la funcţiile elementare. Definirea funcţiilor elementare este pusă în evidenţă prin metode grafice.

Algebra logică operează cu propoziţii despre care se poate spune că sunt fie adevărate, fie false. Unei propoziţii adevărate i se atribuie valoarea 1, iar uneia false valoarea 0. O propoziţie nu poate fi simultan şi adevărată şi falsă. Două propoziţii sunt echivalente dacă sunt simultan adevărate sau false.

Pentru o mai uşoară înţelegere, prezentarea acestui domeniu va fi făcută pe etape: - simbolurile care caracterizează acest domeniu matematic; - grupul de postulate sau baza algebrei booleene (postulatele sunt condiţiile principale

impuse acestui domeniu matematic sau conceptele sale fundamentale); - teoremele fundamentale ale algebrei booleene sau regulile de lucru din acest domeniu al

matematicii. Clasa este formată dintr-un grup de elemente (lucruri, fiinţe, simboluri), care posedă cep

puţin o proprietate comună. Logica claselor se ocupă cu relaţiile dintre subclasele care există în interiorul unei calase

particulare. Clasa complementară reiese din definiţia clasei şi este formată din elementele clasei

generale care nu posedă, nici unul, proprietatea ce caracterizează clasa particulară dată. Pentru ilustrarea celor mai sus, vezi figura 6.1.

Pătratul conţine toate elementele clasei universale date; cercul conţine toate elementele ce posedă cel puţin o proprietate comună, constituind clasa de elemente notat A. Restul de elemente din pătrat, care nu posedă proprietatea comună elementelor grupului A, formează clasa complementară non-A.

In concluzie, clasa universală poate fi împărţită în subclase, în cazul nostru două, adică A şi non-A. pentru a distinge complementul unei variabile de aceasta, se plasează o bară orizontală ce reprezintă simbolul de complementaritate. Nu este singura notaţie; de multe ori se foloseşte şi apostroful.

Logica claselor se ocupă şi cu relaţiile dintre diverse mulţimi. Una dintre aceste relaţii este relaţia de complementaritate, descrisă mai sus.

Figura 6.1. Mulţimea (clasa) universală (stânga), mulţimea (clasa) adevărată (centru)

şi mulţimea (clasa) complementară (dreapta) în algebra booleană

O altă relaţie este incluziunea. Să considerăm mulţimea A = {0,1,} şi mulţimea B = {1}. Se

constată că orice element care aparţine mulţimii B aparţine şi mulţimii A. În acest caz se spune că mulţimea B este inclusă în mulţimea A şi această relaţie se notează astfel:

B ⊆ A. Cea de-a treia relaţie este egalitatea. Două mulţimi A şi B sunt egale dacă au aceleaşi

elemente: A ={0,1}si B = {0,1}; A = B.

A

A

A

A

Page 28: Aplicatii Ale Informaticii in Geografie

27

6. 2. Operaţii cu mulţimi

a. Reuniunea sau suma logică

Mulţimea în care se află toate elementele mulţimilor A şi B, figurând o singură dată, se numeşte reuniunea mulţimilor A şi B. Această mulţime formată se notează:

A ∪ B sau A + B

şi se citeşte "reuniunea mulţimilor A şi B". Relaţia matematică este comutativă , adică A + B = B + A, relaţie care se citeşte "A sau B este egal cu B sau A" sau "suma logică A + B este egală cu suma logică B + A" şi este ilustrată în figura 6.2.a.

b. Intersecţia sau produsul logic Mulţimea elementelor comune mulţimilor A şi B, fiecare element comun mulţimilor A şi b figurând o singură dată, se numeşte intersecţia mulţimilor A şi B şi se notează:

A ∩ B sau A • B

Relaţia se citeşte "intersecţia mulţimilor A şi B" sau "produsul logic al claselor A şi B", fiind ilustrată în figura 6.2.

6. 3. Simboluri, variabile, definiţii, postulate

Algebra logică posedă patru simboluri, figurate în tabelul 6.3. Tabelul 6.3. Simbolurile din algebra logică

Denumire Reprezentare Intersecţie sau produs logic "." (punct), ∩, ∧, x (semnul înmulţirii) Reuniune sau adunare logică "+" (plus", ∪, ∨ Complement sau negaţie "⎯" (bară deasupra", "’" (apostrof) Egalitate sau identitate "=" (egal)

Algebra booleană lucrează cu variabile. Acestea se notează, ca orice variabile, cu litere.

Valoarea logică sau booleană este reprezentată printr-o literă care semnifică orice fenomen care nu poate lua decât stări opuse. Prin convenţie, cele două stări sunt reprezentate prin 1 sau 0, respectiv adevărat sau fals. • Definiţiile algebrei booleene sunt trei relaţii simple impuse: Definiţia I:

Definiţia II:

.1element 1;AA =+

.0element 1;AA =•

A B

Figura 6.2.a. Reuniunea sau suma logică Figura 6.2.b. Intersecţia sau produsul logic

Page 29: Aplicatii Ale Informaticii in Geografie

28

Definiţia III: • Postulatele algebrei booleene Sunt expresiile fundamentale care formează baza unui număr de teoreme ce ajută la utilizarea simplificată a expresiilor booleene.

Postulatul 1. Dacă A şi B sunt două elemente distincte din clasa K (clasa K conţinând cel puţin două elemente distincte), atunci şi expresia A + B face parte din clasa K. Acest postulat este valabil şi pentru expresia A • B.

Postulatul 2. Dacă elementul A face parte din clasa K, atunci şi elementul non-A face parte

din clasa K. Postulatul 3. (de comutativitate. Dacă A şi B fac parte din clasa K, atunci:

A + B = B + A; A • B = B • A.

Postulatul 4. (de asociativitate). Dacă A, B şi C fac parte din clasa K, atunci:

(A + B) + C = A + (B + C); (A • B) • C = A • (B • C).

Postulatul 5. Dacă A face parte din clasa K, atunci:

A + A = A şi A • A = A. Postulatul 6. Dacă A şi B fac parte din K, atunci: În acest caz se aplică definiţiile I, II şi III.

6.4. Interpretarea postulatelor

a. diagramele Venn Diagramele prezentate anterior ( figurile 6.1, 6.2.a şi

6.2.b) se numesc diagramele lui Venn. Interpretarea grafică a celor trei definiţii cu ajutorul diagramelor Venn este următoarea: elementul 1 este reprezentat prin întregul pătrat (fig. 6.4.1), în timp ce elementul 0 nu ocupă nici o suprafaţă. Observăm că atât suprafaţa A cât şi suprafaţa non-A formează împreună suprafaţa pătratului, care în condiţiile iniţiale am egalat-o cu 1. Elementul 0 sau definiţia a doua pot fi interpretate astfel: complementul întregului pătrat sau elementul 0. Definiţia a treia se referă la simbolul "•" (x), denumit şi intersecţie.

b. tabelele de adevăr Al doilea mod de interpretare a simbolurilor, postulatelor, teoremelor şi funcţiilor algebrei

booleene este acela al tabelelor de adevăr. Acestea se referă la calculul propoziţiilor. Fiecare

.B A AA +=•

.A BA BA =+=+

A

A

Figura 6.4.1. Elementul 1

Page 30: Aplicatii Ale Informaticii in Geografie

29

1;AA =+1;AA =•

AA =

;BABA •=+.BABA +=•

propoziţie nu poate lua decât două valori, 1 sau 0, cu alte cuvinte ea poate fi adevărată sau falsă. Simbolurile algebrei booleene pot fi interpretate şi cu ajutorul tabelelor de adevăr, denumite şi tabele de valori sau tabele de combinaţii (tabelul 6.1.4.)

Tabelul 6.1.4. Interpretarea simbolurilor A B A + B A• B non-A C = A 0 0 0 0 1 0 0 1 1 0 1 0 1 0 1 0 0 1 1 1 1 1 0 1

În tabelul 6.1.4. variabilele logice A şi B reprezintă două propoziţii. Deoarece fiecare propoziţie poate fi adevărată sau falsă (deci 1 sau 0), există patru combinaţii posibile între adevărat şi fals, care sunt trecute în primele două coloane di tabel. În primele două coloane din stânga s-au înscris variabilele. Funcţie de valorile pe care le iau acestea, simbolurile dau expresiilor pe care le formează o anumită valoare, care nu poate fi decât 0 sau 1. De la stânga la dreapta, după coloanele în care sunt înscrise variabilele, sunt înscrise, în ordine, simbolurile "+" (sau), "•" (şi), "-" (complementul sau negarea) şi "=" (egalitatea).

Simbolul "+", numit "reuniune" sau "logic", semnifică sensul cuvântului SAU. Propoziţia logică A + B, reuniunea celor două propoziţii date este falsă dacă ambele propoziţii, A şi B, sunt false. Valoarea ei este dată în coloana a treia a tabelului X.2. Simbolul "-", numit "nu logic" sau "complement" semnifică sensul cuvântului NU. Negarea logică a propoziţiei A este adevărată (sau falsă) dacă A este falsă (sau adevărată). Valoarea ei este dată în coloana a cincea a tabelului. Simbolul "=", numit "egal" semnifică egalitatea logică. Două propoziţii sunt egale logic dacă au aceleaşi valori (ultima coloană a tabelului, adică C = A).

6.1.5. Teoremele fundamentale ale algebrei booleene

Aceste teoreme se pot deduce din postulatele enunţate anterior. 1. Teoremele de unicitate:

1.a. Elementul 1 este unic. 1.b. Elementul 0 este unic.

2. Teoremele complementarităţii:

2.a. 2.b.

3. Teorema dublei negaţii:

3.a. 4. Teoremele lui Morgan:

4.a. 4.b.

5. Teoremele absorbţiei:

5.a. A + A • B = A; 5.b. A (A + B) = A.

Page 31: Aplicatii Ale Informaticii in Geografie

30

6. Teoremele de idempotenţă:

6.a. A + A = A; 6.b. A • A = A.

7. Teoremele reuniunii:

7.a. A + 0 = A; 7.b. A • 1 = A.

8. Teoremele intersecţiei:

8.a. A + 1 = 1; 8.b. A • 0 = 0.

9. Teoremele de comutativităţii:

9.a. A + B = B = A; 9.b. A • B = B • A

10. Teoremele de asociativitate:

10.a. A = (B + C) = (A + B) = C; 10.b. A • (B • C) = (A • B) • C.

11. Teoremele de distributivitate:

11.a. (A + B) • (A + C) = A + BC; 11.b. A • (B + C) = AB + AC.

Teoremele enunţate mai sus se pot demonstra atât prin diagramele lui Venn cât şi prin tabele de adevăr.

CAPITOLUL 7. ALGORITMI

Cuvântul algoritm provine de la numele matematicianului persan Abu‘Abd Allah

Muhammad Ibn Musa al Khwarizmî (sec. VII-IX d. Ch.), care a scris o carte de matematică tradusă apoi în latină (Algoritmi de numero indorum), în care algoritm provine de la al Khwarizmî, ceea ce înseamnă oraşul Khwarizm (care în prezent se numeşte Khiva şi se află în Uzbekistan). Algoritmul este un procedeu matematic sistematic care conduce - în urma parcurgerii unui număr finit de paşi - la răspunsul la o întrebare sau la soluţionarea unei probleme. Întrebarea sau problema, după caz, trebuie să aparţină unei clase care are un număr definit de entităţi, ca de exemplu "Este numărul întreg a număr prim?" sau "Care este cel mai mare divizor comun al numerelor a si b?". Prima dintre aceste întrebări aparţine unei clase numite "de decizie" deoarece algoritmul va finaliza răspunsul prin "da" sau "nu". A doua întrebare aparţine unei alte clase, denumită "de calcul", deoarece algoritmul va conduce la un răspuns specific (un număr). Pentru clase finite de întrebări, există totdeauna algoritmi obişnuiţi (cel puţin în principiu); aceştia sunt constituiţi din tabele de valori ale răspunsurilor.

Page 32: Aplicatii Ale Informaticii in Geografie

31

Algoritmii există pentru multe clase infinite de întrebări; Elementele lui Euclid, publicate aproximativ în anul 300 î. Ch. conţineau astfel de algoritmi pentru aflarea divizorului comun a două numere. Fiecare elev este supus, în clasele primare, învăţării algoritmilor sub forma tabelelor pentru înmulţire şi împărţire. Folosirea acestor procedee de calcul duce la găsirea răspunsului pentru întrebări de tipul "a divide exact pe b?" (răspunsul "da" dacă restul este zero) sau "dacă nu, ce rest se obţine?". Folosirea repetată a acestor algoritmi va duce, eventual, la găsirea răspunsului "este a număr prim?" (răspunsul fiind "nu" dacă a este divizibil printr-un număr întreg mai mic decât el, exceptând 1).

Pentru alte clase infinite de numere, nu se cunosc algoritmi de rezolvare. O problemă de acest tip a preocupat matematicienii începând cu 1637, când Pierre de Fermat a afirmat că a găsit o dovadă că nici un set de numere întregi n: x, y, z, nu satisfac relaţia x + y = z pentru un număr mare decât 2. Fermat nu şi-a demonstrat afirmaţia, iar de atunci până astăzi nimeni nu a reuşit aceasta, dar nici nu a reuşit să demonstreze contrariul, deşi un caz particular odată demonstrat ar fi fost suficient. O astfel de situaţie ar fi stabilit tot un algoritm, deoarece unele seturi finite de calcule ar fi condus la întregii în cauză, indiferent care ar fi fost valoarea lor.

7.1. Reprezentarea algoritmilor

Există o mare varietate de reprezentare a algoritmilor. Oricare ar fi limbajul pe care îl folosim,

algoritmii trebuie să respecte anumite criterii. Astfel, fiecare algoritm trebuie să respecte criteriile de finitudine (adică să se încheie după un număr finit de paşi) şi de generalitate (un algoritm trebuie să rezolve toate problemele dintr-o anumită clasă). În plus, pentru a permite scrierea uşoară a unor algoritmi care respectă criteriile de definire şi fezabilitate, s-au dezvoltat limbaje speciale , numite metode de reprezentare. Cele mai răspândite metode de reprezentare sunt schemele logice şi limbajul algoritmic (pseudocodul). Deşi schemele logice devin la un nivel mai avansat de programare destul de greoaie, ele reprezintă un bun instrument de lucru pentru iniţierea celor începători.

7.2. Schemele logice

Schemele logice (fig.7.2.2) sunt reprezentări grafice ale modului în care se succed operaţiile prevăzute de algoritm. Ele pot fi urmărite cu uşurinţă deoarece acţiunile algoritmului sunt vizualizate grafic. Schemele logice sunt formate din instrucţiuni; fiecare instrucţiune este încadrată într-o figură geometrică (fig. 7.1.1), forma acesteia (dreptunghi, trapez, romb, etc.) indicând tipul de acţiune ce trebuie efectuată.

Algoritmii au unele componente ale căror valori variază pe parcursul execuţiei. Acestea se numesc

variabile şi referirea la ele se face printr-un nume care este alcătuit din cifre şi litere. Numele începe întotdeauna cu o literă (de exemplu: i, aux, xl, etc.) şi trebuie să fie cât mai sugestiv pentru semnificaţia sa în cadrul problemei.

START

STOP

CITESTE x1,x2,…,xn

SCRIE a1,a2,…,an

p

Figura 7.2.1. Tipuri de instrucţiuni

Page 33: Aplicatii Ale Informaticii in Geografie

32

Succesiunea de instrucţiuni dintr-un algoritm trebuie să respecte o serie de reguli, dintre care cele mai importante sunt:

☺ Fiecare algoritm are un început şi un sfârşit, desemnate prin instrucţiunile START, respectiv STOP,

încadrate în dreptunghiuri cu colţuri rotunjite. ☺ Preluarea datelor de intrare se face cu instrucţiunea citeşte, care are ca efect încărcarea variabilelor x1,

x2, …, xn. ☺ Afişarea datelor de ieşire se realizează cu instrucţiunea scrie, în care a1,a2, ,an sunt nume de variabile

sau mesaje. Mesajele sunt secvenţe de text încadrate de apostrof (scrie cu majuscule). Scrierea unei variabile înseamnă scrierea conţinutului ei, iar scrierea unui mesaj înseamnă scrierea textului dintre apostrofuri.

☺ Instrucţiunile de atribuire au forma de dreptunghi cu colţuri drepte, în care v este variabila iar e este o expresie algebrică. Prin atribuire, se evaluează expresia e, după care conţinutul variabilei v este înlocuit cu valoarea expresiei; vechea valoare a lui v se pierde.

☺ Instrucţiunile de decizie au formă de romb , în care p este o expresie logică. Se evaluează p după care, dacă valoarea rezultată este adevărat, se continuă calculele pe ramura din dreapta, iar dacă valoarea rezultată este fals se continuă calculele pe ramura din stânga.

Pentru exemplificare, vom scrie schema logică pentru rezolvarea ecuaţiei de gradul I.

NU DA NU DA DA

Figura 7.2.2 . Rezolvarea ecuaţiei de gradul I.

7.3. Limbajul algoritmic (pseudocod)

Acesta este un alt mod de reprezentare a algoritmilor şi beneficiază atât de rigurozitatea limbajelor

de programare cât şi de flexibilitatea limbajului uman. Denumirea de pseudocod sugerează faptul că, deşi

START

CITEŞTE a,b

a<>0

b<>0

SCRIE 'x oarecare'

SCRIE 'Nu are sol' SCRIE

x

STOP

x = -b/a

Page 34: Aplicatii Ale Informaticii in Geografie

33

instrucţiunile limbajului algoritmic seamănă cu cele ale unui limbaj de programare, ele nu formează un cod interpretabil de către calculator, ci un pseudo-cod.

Un program în limbaj algoritmic este o succesiune de instrucţiuni ale limbajului ce se execută succesiv, în ordinea în care au fost scrise. Iată spre exemplificare programul pseudocod pentru rezolvarea aceleiaşi ecuaţii de gradul I:

start citeşte a , b dacă a<>0 atunci scrie 'Soluţia este: ', -b/a altfel dacă b=0 atunci scrie 'Soluţia este spaţiul real' altfel scrie 'Ecuaţia nu are soluţii' sfârşit dacă sfârşit dacă stop.

După cum se poate observa, operaţiile aflate sub incidenţa instrucţiunii de ramificare sunt grupate spre dreapta, pentru a evidenţia apartenenţa lor la una din ramificaţii. Această operaţie se numeşte indentare şi este utilizată şi în cazul codului scris într-un limbaj de programare cu scopul de a-i mări lizibilitatea.

7.4. Programarea structurată

Schemele logice permit o libertate foarte mare a înlănţuirii instrucţiunilor, ceea ce poate conduce le

crearea de structuri greu de urmărit. Pentru a simplifica structura programelor şi a mări în schimb lizibilitatea şi adaptabilitatea lor, s-a creat conceptul de programare structurată. Acesta impune anumite restricţii asupra modului de utilizare a instrucţiunii de decizie. S-au definit astfel trei variante de executare a fluxului de instrucţiuni:

a. secvenţa (instrucţiunile se execută succesiv, o singură dată). b. ramificarea (permite execuţia unui singur grup din două grupuri de instrucţiuni, funcţie de

valoarea unei condiţii logice). Aceasta corespunde instrucţiunii dacă. c. iteraţia (permite repetarea unui grup de instrucţiuni până când se îndeplineşte o anumită

condiţie). Aceasta este realizată de instrucţiunile repetă, cât timp şi pentru.

7.5. Tablouri O variabilă de tip tablou (unii autori le numesc şiruri sau vectori) poate să conţină un număr finit de

valori de acelaşi tip. Valorile pe care tabloul le conţine se numesc elementele tabloului. Elementele tabloului sunt numerotate secvenţial de la 1 până la n, unde n este numărul de elemente ale tabloului (deşi în unele situaţii se preferă începerea numerotării de la 0). Referirea la un element al tabloului se face printr-un indice care desemnează numărul său de ordine în cadrul vectorului; astfel, x(i) desemnează elementul aflat în poziţia i în x, unde x este numele tabloului.

Algoritmul citeşte numărul de elemente ale tabloului a în variabila n, după care citeşte succesiv cele n componente ale tabloului a, utilizând un ciclu de tip pentru. În acest caz, citirea datelor este separată de prelucrarea lor.

CAPITOLUL 8. LIMBAJ - LIMBAJE DE PROGRAMARE Noţiunea de limbaj este primară, adică nu poate fi definită cu ajutorul altor noţiuni. De fapt,

limbajul constă dintr-o mulţime de cuvinte (dicţionarul limbajului), cu ajutorul cărora se pot

Page 35: Aplicatii Ale Informaticii in Geografie

34

construi şiruri de cuvinte, în conformitate cu alte reguli (gramatica limbajului). Un asemenea şir de cuvinte constituie un mesaj. În alcătuirea şi scrierea programelor este important să existe mesaje care pot avea semnificaţie de ordine.

8.1. Limbajul non - verbal

Vorbirea şi scrierea sunt, într-adevăr, facultăţi şi activităţi fundamentale atunci când ne referim la ele în termeni de limbaj. Acestea sunt, oricum, domenii ale comportamentului uman pentru care termenul de limbaj este folosit în sens periferic şi derivat.

Atunci când oamenii vorbesc, ei nu se mărginesc doar la simpla emitere de sunete. Deoarece vorbirea presupune de obicei cel puţin două persoane care se văd reciproc, o mare parte a înţelesului este dat de expresia feţei, tonul vocii şi atitudinile şi mişcările corpului, dar mai ales ale mâinilor. Contribuţia gesturilor la semnificaţia mesajului este, în parte, determinate de contextul cultural şi diferă de la o regiune la alta. Cât de importante sunt aceste simboluri vizuale reiese dacă am compara cât de puţin eficientă este o convorbire telefonică faţă de conversaţia directă dintre două persoane; toţi avem experienţa zâmbetului involuntar la telefon şi a faptului că acesta nu va semnifica nimic pentru persoana de la celălalt capăt al firului.

Pe de altă parte, rolul jucat de contactul emoţional şi în exprimarea sentimentelor cu ajutorul mimicii, indiferent de cuvintele folosite, a fost demonstrat cu ajutorul testelor. Subiecţilor li s-a cerut să reacţioneze la propoziţii care apar cât mai prietenoase cu putinţă atunci când sunt citite dar care au fost pronunţate cu furie sau, din contra, deşi propoziţiile sunt pline de ostilitate, au fost pronunţate într-o manieră foarte prietenoasă. S-a stabilit astfel că mimica şi tonul vocii au fost cele care au cauzat răspunsul emoţional al subiecţilor.

Asemănătoare cu aceste activităţi paralingvistice sunt şi zgomotele produse de voce şi care nu pot fi privite ca părţi ale nici unui limbaj, deşi ele ţin de comunicare şi de exprimarea sentimentelor: râsul, ţipetele de durere sau de bucurie, expresiile de dezgust, triumf, etc. Aceste exprimări non - lexicale diferă fundamental de limbaj.

Un limbaj este un sistem de simboluri, cu productivitate şi flexibilitate infinite. Există însă şi alte sisteme de simboluri recunoscute şi instituţionalizate de către diverse culturi umane. Ca exemple pot fi amintite simbolurile existente pe harţi, notaţiile muzicale sau în alte reprezentări convenţionale. În orice caz, nici unul dintre acestea nu se poate compara cu limbajul în privinţa potenţialului infinit de productivitate, a extensiei sau a preciziei.

Limbajele sunt folosite de către oameni pentru a vorbi sau a scrie altor fiinţe umane. Ca urmare, porţiuni de limbaj pot fi folosite de către oameni pentru a controla maşinile, ca atunci când diferite butoane sunt marcate cu cuvinte sau propoziţii care desemnează funcţiile lor. O dezvoltare recentă şi specializată a limbajului om - maşină o reprezintă limbajele de programare (Cobol, Algol, Fortran etc.), care furnizează mijloacele prin care seturile de instrucţiuni şi date de cele mai diferite tipurisunt transpuse în formate acceptate de către aceste maşini.

Limbajele care au capacitatea de a se dezvolta, forma lor la un anumit moment dat fiind rezultatul acestei evoluţii, sunt considerate limbaje naturale. Prin opoziţie, limbajele create într-un interval scurt de timp şi care nu evoluează sunt considerate limbaje artificiale. Cu toate acestea, limbajele, fie ele naturale sau artificiale, au o trăsătură comună: mobilitatea. Aceasta la permite rezolvarea unor situaţii dificile prin extrapolări ce contravin gramaticii specifice fiecăruia dintre ele.

Să considerăm următorul mesaj: X+Y=Z. Acest masaj are următoarea semnificaţie: "adună valorile variabilelor X şi Y şi atribuie rezultatul variabilei Z". Lista instrucţiunilor de acest fel pe care trebuie să le execute un calculator pentru a efectua calculele necesare pentru rezolvarea problemei şi furnizarea rezultatelor dorite reprezintă un program. Programele sunt deci înlănţuiri detaliate ale planului sau procedeului folosit pentru a rezolva o anumită problemă cu ajutorul unui

Page 36: Aplicatii Ale Informaticii in Geografie

35

calculator. Acestea trebuie deci să conţină o succesiune detaliată de instrucţiuni de calcul, fără ambiguităţi, astfel încât calculatorul să le poată sesiza, înţelege şi executa. Deosebirea dintre programele şi echipamentele folosite în informatică se face denumindu-le generic "software" şi respectiv "hardware".

Conform scopurilor specifice urmărite, au fost create numeroase limbaje de programare, câteva dintre acestea fiind prezentate succint în cele ce urmează. Deşi calculatoarele tind a avea aceleaşi limbaje maşină, există încă mari diferenţe de la un producător la altul. În consecinţă, există mai multe tipuri de asamblori şi limbaje de asamblare.

FORTRAN ( Formula Translation), dezvoltat de către IBM (1957) şi destinat iniţial analizei numerice, a fost completat ulterior cu facilităţi de manipulare a datelor structurate, alocări dinamice de date, calcule recursive, etc. şi relansat în 1990 (FORTRAN 90).

COBOL (Common Business-Oriented Language) este cel mai răspândit printre utilizatorii din anumite medii de afaceri, bancare şi de asigurări. COBOL a fost creat pentru a răspunde la două cerinţe majore: portabilitatea (capacitatea de a fi rulat fără modificări majore pe computere de fabricaţii diverse) şi lizibilitatea (uşurinţa de a fi citit cât mai uşor, ca orice propoziţie simplă din limba engleză). Datorită acestor calităţi, COBOL a fost îmbunătăţit de mai multe ori de la lansarea sa în 1959, fiind folosit, printre alţii, şi de Departamentul de Stat pentru Apărare al S.U.A.

PL/I este un limbaj complex care a fost realizat la sugestia SHARE (un grup de utilizatori ai computerelor IBM) şi IBM în 1963. Deşi numit iniţial NPL (New Programming Language) şi lansat de IBM în 1965, a fost ulterior revăzut de Institutul Naţional American pentru Standarde (ANSI) şi de alte organizaţii. PL/I a fost creat pentru aplicaţii ştiinţifice şi inginereşti, putând prelucra o mare varietate de date, dar în ultimii ani folosirea sa este mai puţin frecventă.

BASIC (Beginner's All-Purpose Symbolic Instruction Code) este un limbaj de programare destinat unor scopuri cu caracter foarte general, fiind destul de uşor de învăţat chiar şi de către cei care nu au noţiuni de programare. Dezvoltat la mijlocul anilor 1960 (John G. Kemeny şi Thomas E. Kurtz de la Dartmouth College, Hanover, N.H.), acest limbaj a devenit extrem de popular în anii 1980.

APL (A Programming Language) este un limbaj care are la bază cartea lui Kenneth E. Iverson de la IBM (A Programming Language, 1962). În 1968 IBM a lansat prima versiune (APL/360), destinată domeniilor ştiinţifice şi inginereşti, iar în 1973 a apărut versiunea APLSV (APL Shared Variable), care poate lucra cu mai multe tipuri de fişiere, expresiile fiind reduse la simple notaţii, iar funcţiile operaţionale fiind mai puternice.

PASCAL este un limbaj dezvoltat de Niklaus Wirth (Institutul Federal de Tehnologie, Zürich, Elveţia), la sfârşitul anilor 1960. A fost gândit ca un bun instrument educaţional pentru învăţarea programării, având un compilator precis şi rapid. Începând cu 1974, limbajul PASCAL a devenit accesibil publicului larg, fiind mult folosit de către universităţi şi influenţând dezvoltarea limbajelor create ulterior. Caracteristicile de bază ale acestui limbaj sunt: specificaţie au formă concisă, este uşor de învăţat, algoritmii şi structurile de date fiind uşor de citit iar eventualele erori uşor de corectat.

ADA este un limbaj de nivel ridicat, dezvoltat la iniţiativa Departamentului de stat pentru Apărare al S.U.A., cu scopul de a fi un limbaj comun pentru toate calculatoarele acestuia, provenite de la o varietate de producători. Patru ani mai târziu (1975), a fost lansată prima versiune care, deşi similară cu PASCAL, conţine numeroase specificaţii destinate pentru scrierea unor programe foarte mari, care îl fac greu de utilizat în afara departamentului respectiv. Denumirea limbajului a fost aleasă în onoarea Augustei Ada King, contesă de Lovelace, fiică a lordului Byron, asistentă a lui Charles Babbage, considerată a fi creatoarea primului program de calculator din lume.

C. Deşi C este considerat a fi un limbaj de nivel ridicat, are multe trăsături proprii programelor de nivel coborât, ca de exemplu capacitatea de a manipula adresele şi biţii în mod

Page 37: Aplicatii Ale Informaticii in Geografie

36

direct. A fost dezvoltat de către Dennis M. Ritchie de la AT&Bell Laboratories, în 1972. Sistemul de operare UNIX este scris aproape în întregime în C, spre deosebire de cele anterioare, care fuseseră scrise în limbaje de asamblare sau în limbaje cod maşină. Limbajul s-a impus, fiind folosit pe scară largă pentru calculatoarele personale.

LISP (List Processor) este un limbaj puternic în manipularea listelor de date sau simboluri şi mai puţin dotat pentru procesarea datelor numerice. Acest limbaj este unic în felul său: necesită memorii de mare capacitate şi, fiind procesat de un interpretor, este foarte lent în executarea programelor. Creat de un grup condus de John McCarthy, pe atunci (1960) profesor la Massachusetts Institute of Technology, acest program este total diferit de celelalte, ulterior fiind avansate câteva versiuni îmbunătăţite.

Limbajele de generaţia 4 (4GLs) sunt mult mai apropiate de limbajele naturale, folosite de noi. Ele au fost create pentru a uşura comunicarea cu calculatorul, fiind mult mai uşor de folosit decât limbajele maşină (din prima generaţie ), limbajele de asamblare (a doua generaţie), sau limbajele de nivel înalt (a treia generaţie). Utilizarea acestor limbaje este legată în primul rând de bazele de date şi prelucrarea acestora. FOCUS, dezvoltat de Information Builders, Inc., este un astfel de limbaj, similar cu COBOL. SQL (Structured Query Language) şi QBE (Query By Example), ambele produse de IBM, sunt alte exemple de 4GLs.

Limbajele de programare orientate-obiect sunt o tehnică prin care un program este scris cu obiecte separate, care conţin structuri de date şi proceduri de calcul suficiente prin ele însele. Programele noi pot fi scrise prin asamblarea într-un timp mult mai scurt a unui set de astfel de obiecte predefinite. Ca exemple pot fi date: Simula sau Smalltalk (primele apărute), sau mai recent apărutul şi extrem de răspânditul C++ creat de Bjarue Stroustrup de la AT&Bell Laboratories la începutul anilor 1980.

8.2. Programele

Programul (software) este format dintr-un set de instrucţiuni care îi spun computerului cum să opereze. Softul cuprinde de fapt un întreg set de programe, proceduri şi rutine asociate operării întregului sistem. Termenul de software a fost inventat în scopul diferenţierii acestor instrucţiuni de hardware (care se referă la componentele fizice ale unui computer). Un set de instrucţiuni care arată componentelor fizice ale computerului cum să îndeplinească o anumită sarcină poartă numele de program (engl. software). Există două mari tipuri de programe: programele de sistem şi programele pentru aplicaţii (fig. 8.2.1) Programele de sistem controlează funcţionarea internă a computerului, în principal prin intermediul unui sistem de operare, ca şi unele periferice, cum ar fi monitorul, imprimanta şi dispozitivele de stocare a datelor. Programele pentru aplicaţii, spre deosebire de precedentele, conduc computerul pe calea executării unor comenzi venite de la utilizator, deci se poate spune că includ orice program care procesează date pentru utilizator. Astfel, programele pentru aplicaţii includ procesoarele de cuvinte, foile de calcul, managementul bazelor de date, fişe de inventar şi de salarizare, ca şi multe alte "aplicaţii". Există şi o a treia categorie de programe, mai puţin răspândite şi deci necunoscute utilizatorilor

Figura 8.2.1. Rolul sistemului de operare

Page 38: Aplicatii Ale Informaticii in Geografie

37

obişnuiţi de la noi, respectiv programele pentru reţele, care coordonează comunicarea între computerele legate în reţea.

Programele sunt depozitate pe suporturi externe de memorie de lungă durată, cum sunt discurile fixe şi dischetele. Atunci când un program este folosit, computerul îl citeşte de pe suportul de stocare şi plasează instrucţiunile, temporar, în memoria cu acces aleator (RAM).

Procesul de depunere şi apoi executare a acestor instrucţiuni se numeşte rulare sau executare a unui program. Prin contrast, programele şi procedurile care sunt stocate permanent în memoria computerelor folosind tehnologie memoriei cu acces numai la citire (ROM) se numesc programe durabile (firmware sau "hard software").

Programele care sunt înscrise în memoria unui calculator îi permit acestuia să execute o varietate de sarcini în mod succesiv sau chiar intermitent. Ideea unui program rezident în memoria calculatoarelor a apărut la sfârşitul anilor 1940, fiind introdusă de matematicianul John von Neumann. Primul calculator digital dotat cu programe interne a fost EDVACD (Electronic Discrete Variable Automatic Computer), construit în 1949. Chiar de la început a apărut o problemă: care este limbajul cel mai potrivit pentru scrierea programelor ? Primele limbaje folosite se numeau limbaje maşină sau limbaje cod maşină. Acestea permiteau scrierea programelor sub forma unor mulţimi de comenzi pentru executarea operaţiilor elementare. Datorită dificultăţilor de redactare s-au imaginat limbaje în care forma de redactare se apropie de aceea din limbajele naturale. Textul scris într-un limbaj de programare este transformat în comenzi în cod maşină de către un program numit program de compilare, care este rezident (înscris) în memoria calculatorului.

Computerele sunt prevăzute cu numeroase programe destinate în primul rând să asiste utilizatorii să ruleze anumite aplicaţii sau să optimizeze performanţele sistemului. Această colecţie de programe, numită sistem de operare, este extrem de importantă pentru funcţionarea calculatoarelor. Tehnologiile actuale fac posibilă înscrierea în unitatea centrală de procesare, încă din timpul fabricaţiei, o unor părţi din sistemul de operare, ca programe fixe, introduse la cererea cumpărătorului. Anumite sisteme de operare sunt însă folosite în mod independent, pentru a facilita procesul de programare. Acestea includ traductori (asamblori sau compilatori), care transpun un întreg program dintr-un limbaj în altul, interpretori (care execută programele secvenţă cu secvenţă, pe măsură ce sunt traduse) şi deparazitori (care supraveghează toate circumstanţele rulării unei aplicaţii şi depistează eventualele erori de calcul sau de execuţie).

Un computer digital nu poate lucra fără un program care să controleze diferitele sale componente fizice în ordinea specificată de către utilizator. Prin simpla schimbare a programului, computerul este determinat să lucreze altfel. Cu alte cuvinte, programul furnizează computerelor digitale capacitatea generală de a efectua calcule.

Să considerăm o simplă operaţie de calcul: adunarea X+Y = Z. Numărul X este stocat în memorie la adresa 8, Y este stocat la adresa 10, iar Y la adresa 5. Totul poate fi scris ca un program în numai 3 rânduri:

LOAD 8 ADD 10 STORE 5

Prima instrucţiune - LOAD 8 - citeşte numărul X din adresa de memorie 8 şi îl plasează în

Unitatea Aritmetică - Logică, ştergând orice număr anterior existent în aceasta. A doua instrucţiune - ADD 10 - adaugă numărul Y din adresa de memorie 10 la numărul X existent în Unitatea Aritmetică - Logică. A treia instrucţiune plasează rezultatul obţinut din Unitatea Aritmetică - Logică în memorie, la adresa 5.

Numerele X şi Y nu trebuie menţionate explicit în acest program deoarece se presupune că au fost deja plasate la adresele respective de către alte instrucţiuni, care nu sunt prezentate în această secvenţă.

Page 39: Aplicatii Ale Informaticii in Geografie

38

Prima parte a fiecărei instrucţiuni (LOAD) se numeşte operaţie cod (engl. opcode), iar a doua parte (8), se numeşte operant. Unele calculatoare au instrucţiuni ce cuprind doi sau trei operanzi fiecare. De exemplu: ADD 8 10 , ceea ce înseamnă adunarea a două numere stocate în memorie la adresele 8, respectiv 10. Instrucţiunile dintr-un program sunt numite, împreună, cod.

Fiecare program este pregătit conform unei anumite reguli (limbaje de programare), deoarece computerele înţeleg doar limbajele maşină, scrise în format binar, adică sub forma unor şiruri de 0 şi 1 (de ex. 01011101). Astfel, instrucţiunea LOAD 8 poate fi scrisă ca 010100001000 (în cod maşină), în care 0101 de la început semnifică operaţia LOAD iar restul de 00001000 reprezintă numărul 8 transpus din sistemul zecimal în cel binar. Deşi computerele operează uşor în limbaj maşină, pentru oameni este dificil să scrie şi să citească în acest limbaj. Ca urmare, programatorii folosesc limbaje care pot fi interpretate de ei dar nu şi de maşini. De exemplu, mnemotehnicul opcod LOAD din limbajul înţeles de om este mult mai uşor de înţeles decât 0101 din limbajul maşină. Astfel de limbaje care pot fi înţelese de oameni trebuie traduse în limbaje maşină de către programe cu scop general numite procesoare de limbaj.

Limbajele de programare se clasifică după lizibilitate. Cele a căror lizibilitate este mai aproape de limbajele maşină sunt numite limbaje de nivel jos (de exemplu limbajele de asamblare). Cele a căror lizibilitate este mai aproape de limbajul uman sunt considerate de nivel ridicat (de exemplu COBOL şi BASIC). Programele scrise în limbaje de nivel coborât sunt executate mai rapid şi solicită mai puţin spaţiu în memoria computerelor decât cele scrise în limbaje de nivel ridicat.

COBOL, un limbaj de nivel ridicat folosit pe scară largă pentru aplicaţiile din lumea afacerilor, are o structură şi un vocabular asemănătoare limbii engleze. Iată un exemplu de program în COBOL:

IF ITEM--COUNT = 0 THEN NEXT SENTENCE ELSE COMPUTE AVERAGE--PRICE = AVERAGE--PRICE / ITEM--COUNT. MOVE AVERAGE--PRICE TO PRINT--AVERAGE--PRICE. PERFORM 300--PRINT--DETAIL--LINE.

COMPUTE, de exemplu, este uşor de înţeles şi de către utilizatorii fără pregătite tehnică. Pe

măsură ce se obişnuiesc cu acest program, utilizatorii vor fi nemulţumiţi de faptul că instrucţiunile nu pot fi prescurtate pentru a solicita mai puţin spaţiu în memorie.

Limbajele de programare se mai clasifică şi după alte criterii, ca de exemplu aplicaţia lor principală sau modul de soluţionare a problemelor. FORTRAN sau ALGOL sunt limbaje pentru aplicaţii ştiinţifice sau inginereşti, în timp ce COBOL şi PRG sunt potrivite pentru aplicaţiile din mediile de afaceri. Unele limbaje, ca PL/I, BASIC, C sau PASCAL sunt limbaje pentru scopuri cu caracter general. De exemplu, aplicaţiile ştiinţifice sau inginereşti şi procesoarele de limbaj pot fi scrise în C.

Instrucţiunile, aşa cum au fost descrise anterior, sunt de fapt paşi din programe scrise în limbaje de asamblare sau limbaje maşină. Fiecare instrucţiune specifică o operaţie a Unităţii Aritmetice şi Logice, memoriei sau altei componente fizice. Fiecare declaraţie specifică, oricum, o sarcină operaţională, care poate să nu fie legată în mod direct de componentele fizice dar care, în

Page 40: Aplicatii Ale Informaticii in Geografie

39

general, corespunde mai multor instrucţiuni atunci când este tradusă în limbaje de asamblare sau limbaje maşină.

Procesoarele de limbaj se clasifică în traductoare şi interpretoare. Un traductor este un program ce converteşte un alt program (scris într-un anumit limbaj) într-un alt program astfel încât ambele să aibă acelaşi rezultat. În acest caz, programul iniţial, codul şi limbajul său sunt numite program-sursă, cod-sursă şi respectiv limbaj-sursă.

Entităţile corespondente şi limbajul tradus sunt numita program-obiect (sau ţinte), coduri-obiect sau limbaj-obiect.

Translatorii, la rândul lor, sunt clasificaţi în asamblori, compilatrori şi preprocesori (deşi unii autori consideră preprocesorii ca fiind traductori). Un interpretor converteşte fiecare propoziţie a unui anumit program în limbaj cod maşină şi execută imediat secvenţa respectivă, înainte de a trece le următoarea.

Compilatorul este un traductor cu o structură complexă care converteşte un program scris într-un limbaj natural sau de tip pseudocod într-un limbaj cod maşină sau, în unele cazuri, într-un program în limbaj de asamblare.

Preprocesoarele de limbaj care îndeplinesc traducerea preliminară conform unui cod - ca de exemplu înlocuirea expresiilor alfanumerice cu forme binare - rezultatul fiind un cod modificat care va fi folosit ulterior de către un traductor. De asemenea, când se foloseşte un nou limbaj, ca extensie sau formă îmbunătăţită a altuia mai vechi, preprocesorul va prelua această sarcină (de exemplu, un program în C++ poate fi tradus în echivalentul său în C de către preprocesor).

Interpretoarele execută fiecare instrucţiune conform convertirii în limbaj cod maşină fără a produce un program final, în timp ce compilatoarele şi limbajele de asamblare produc programe fără a le executa. Interpretoarele sunt folosite pentru a găsi rapid erorile din programe, dar nu sunt adecvate pentru programe mari, din cauza timpului îndelungat pe care îl consumă pentru interpretarea acestora.

8.3. Sisteme de operare

Sistemul de operare este un program care controlează diferitele operaţii efectuate de un computer, direcţionează şi coordonează derularea secvenţelor de program. Sistemele de operare sunt seturi foarte complexe de instrucţiuni care planifică succesiunea sarcinilor (aplicaţiile cerute de utilizator) ce urmează a fi efectuate şi alocă resursele de sistem necesare realizării fiecăreia dintre acestea: resurse de procesor, de memorie sau anumite periferice. Sistemul de operare coordonează încărcarea, stocarea şi executarea în procesor a programelor, dar şi în cazul unor sarcini speciale, cum ar fi accesarea fişierelor, rularea unor aplicaţii, controlul monitorului şi al mediilor de stocare, interpretarea comenzilor introduse de la tastatură etc. Atunci când un computer execută mai multe sarcini simultan, sistemul de operare va aloca resursele şi timpul în maniera cea mai eficientă, acordând prioritate anumitor sarcini în defavoarea altora, proces numit partajarea timpului (în engleză, time-sharing). În cazul calculatoarelor legate în reţea, sistemul de operare este cel care guvernează interacţiunile dintre computerele respective.

Primul set de instrucţiuni pentru un computer digital au fost concepute de către matematicianul englez Charles Babbage, pentru a sa "maşină analitică", care nu a fost de fapt construită niciodată. Primul sistem de operare stocat în computer a fost pus la punct în 1949 la Universitatea Cambridge. Între 1950-1980 sistemele de operare au căpătat o largă răspândire; acestea au fost dezvoltate cu precădere de către companii private. Cele mai populare dintre acestea, menite a fi rulate pe computerele produse de IBM sunt: MVS, DOS/VSE şi VM.

In afara acestor sisteme de operare, protejate de legile de proprietate, au fost dezvoltate şi sisteme de operare deschise sau portabile, care sunt rulate pe platformele realizate de alţi producători. Sistemele de operare deschise au apărut în anii 1980 şi sunt extrem de răspândite pentru calculatoarele personale (PC) şi staţiile de lucru. Cele mai populare sunt DOS şi Windows (dezvoltate de Microsoft Corporation), Linux şi Be 2/OS.

Pe lângă acestea, au fost dezvoltate şi sisteme de operare pentru reţele, care fac posibilă comunicarea tuturor entităţilor aflate în reţea. Acestea acţionează de fapt ca un sistem suplimentar, pe lângă cel specific fiecărei componente a reţelei. Dominante sunt, în această categorie, UNIX şi Netware, produse de Novell Inc.

Page 41: Aplicatii Ale Informaticii in Geografie

40

8.3.1. Dezvoltarea sistemelor de operare

Pentru primele calculatoare, utilizatorii scriau programele pe cartele perforate, de pe care

erau apoi citite de către calculator. Acesta asambla (compila) programul şi apoi îl executa, iar în final trimitea rezultatele spre imprimantă. Curând s-a evidenţiat faptul că se pierdea mult timp pentru citirea programelor ce urmau a fi executate de către computer şi pentru imprimarea rezultatelor obţinute. Primele sisteme de operare constau în programe rezidente în computere şi care foloseau "pachete" desemnate de către utilizatori (secvenţe de programe înscrise pe benzi magnetice care erau citite în memoria computerului şi executate una câte una, fără ca utilizatorul să poată interveni). Fiecărui pachet îi erau ataşate instrucţiuni detaliate pentru sistemul de operare, astfel ca acesta să poată gestiona resursele necesare îndeplinirii sarcinii de lucru: timpul de lucru al unităţii centrale de procesare, fişierele şi dispozitivele de stocare pe care acestea se găsesc, dispozitivele de ieşire, dacă sarcina era formată din programe care trebuiau compilate înainte de executare şi aşa mai departe. De la aceste începuturi datează conceptul fundamental de sistem de operare ca alocator de resurse. Rolul acestuia a devenit mai important odată cu apariţia programării multiple, în care mai multe sarcini de lucru sunt rezidente simultan în computer şi folosesc împreună resursele acestuia - de exemplu alocarea, pe rând, de intervale de timp pentru lucrul în unitatea centrală de procesare.

Primul sistem de operare folosit pe scară largă a fost OS/360 introdus de IBM în 1964, deşi mai existau şi alte sisteme de operare la momentul respectiv. OS/360 furniza un singur sistem de operare, care putea rula orice program pe toate computerele din familia IBM/360. Acest fapt a avut un impact deosebit asupra industriei computerelor, deoarece utilizatorii puteau să-şi actualizeze computerele cu cele din noile familii, mai puternice, fără să mai fie nevoiţi să-şi rescrie programele sau aplicaţiile acestora.

Pe măsură ce rularea simultană a mai multor programe a devenit populară, s-au dezvoltat şi sisteme de operare dedicate acestui scop. IBM a introdus două astfel de sisteme, OS/MFT (Multiprogramming with a Fixed number of Tasks), un sistem de operare cu multiprogramare pentru un număr fix de sarcini, în 1967, şi OS/MVT (Multiprogramming with a Variable number of Tasks), un sistem de operare cu număr variabil de sarcini, în 1973.

Apoi, pe măsură ce memoria virtuală a devenit populară, IBM a introdus, în 1970, familia de computere cu arhitectura 370, care includea hardware pentru operarea cu memoria virtuală, dar şi sistemul de operare corespunzător, OS/MVS (Multiple Virtual Storage system), sistem cu stocare virtuală multiplă, care putea gestiona doar o singură memorie virtuală. In 1974, mărimea memoriei virtuale maxime a fost mărită la 16 Mb. În 1981, IBM a lansat pe piaţă sistemul 370/XA (Extended Architecture), iar în 1983 MVS/XA SP versiunea 2, care avea o memorie de 2 000 Mb.

UNIX este un sistem de operare în time-sharing pe care l-a dezvoltat Ken Thompson de la AT&T Bell Laboratories, începând cu 1969; mai târziu i s-a alăturat şi Dennis Ritchie. Iniţial, UNIX era dedicat unui singur utilizator. Ulterior, a fost creat limbajul de programare C, special pentru UNIX, care a fost rescris în întregime în acest limbaj; în plus i s-au adăugat capacitatea de programare multiplă în mod time-sharing şi o portabilitate mărită. Începând cu 1975, codul sursă pentru UNIX a fost distribuit universităţilor, la preţ redus; această practică a încetat în 1981, când AT&T a adoptat UNIX-ul ca pe un produs comercial, numit UNIX III. Devenit însă extrem de popular în universităţi, unde ere folosit în principal pentru staţiile de lucru şi aplicaţii cu caracter ingineresc, UNIX a permis, datorită preciziei şi clarităţii sale, adăugarea de noi caracteristici. Se remarcă, în acest sens, Universitatea Berkeley, California, care a adăugat editarea de text pe monitor şi facilităţi de comunicare în reţea; această versiune de UNIX, numită BSD (Berkeley Software Distribution), a avut o mare popularitate. În 1983, AT&T a lansat UNIX V, pentru

Page 42: Aplicatii Ale Informaticii in Geografie

41

promovarea acestuia separând partea comercială a companiei sub numele de UNIX System Laboratories, Inc., achiziţionată în 1993 de Novell, Inc.

Organizarea sistemelor de operare a fost mult îmbunătăţită de Richard F. Rashid, de la Carnegie-Mellon University, Pittsburgh, Statele Unite, pe la mijlocul anilor '80, prin introducerea conceptului de microkernel. Acesta este miezul fundamental al diverselor funcţii ale sistemului de operare; este mai mic decât un kernel şi nu este portabil. Kernel-ul este miezul unui sistem de operare convenţional şi efectuează funcţiile cele mai elementare ale acestuia. Oricum, un kernel nu separă controlul componentelor hard de alte operaţii, cum ar fi sistemul de fişiere, managementul memoriei virtuale sau al reţelei. Conceptul de microkernel a îmbunătăţit modularizarea sistemelor de operare, făcând posibilă aducerea la zi a acestor module ca răspuns la evoluţia componentelor hardware; în plus, acest concept a permis dezvoltarea de sisteme de operare cu trăsături diferite.

În 1974, corporaţia Intel a lansat procesorul 8080, care în scurt timp a devenit primul microprocesor cu succes comercial; era folosit de sistemul de operare CP/M (Control Program for Microprocessors), dezvoltat de Digital Research, Inc. şi care era standardul utilizat la sfârşitul anilor 1970.

În 1981, IBM a lansat familia de calculatoare personale denumită generic PC; pentru acestea erau folosire procesoarele 8080 de la Intel, care utilizau intern cuvinte scrise pe 16 biţi fiecare şi MS-DOS (Microsoft Disk Operating System), sau mai simplu DOS, un sistem de operare dezvoltat de Microsoft.

În 1987, IBM a introdus familia PS/2, folosind procesorul 80386, tot de la Intel, care folosea cuvinte scrise pe 32 de biţi şi avea ca sistem de operare OS/2. Faţă de caracteristicile lui MS-DOS, acesta includea managementul memoriei, lucrul în multitasking, folosirea ferestrelor, managementul bazelor de date şi al reţelei LAN, ca şi capacitatea de a comunica cu calculatoarele de mari dimensiuni.

Apple Computer, Inc. a introdus, în 1984, familia de calculatoare personale Macintosh; acestea aveau posibilitatea de lucru cu ferestrele şi mouse-ul (care fusese creat la Xerox Palo Alto Research Park). Computerele Macintosh sunt deosebit de bune pentru procesările de grafică, desen şi imagine; System, care este propriul lor sistem de operare, a fost perfecţionat necontenit, System 7 fiind versiunea majoră folosită începând cu 1991.

Configuraţiile hardware existente în prezent, mult mai sofisticate, permit rularea simultană a mult mai multor sarcini: citirea de date pentru o sarcină, imprimarea rezultatelor alteia şi calculele necesare pentru cele care sunt în lucru. O evoluţie şi mai spectaculoasă a sistemelor de operare s-a produs odată cu apariţia programelor interactive, pentru care utilizatorul introduce comenzile direct de la un terminal şi aşteaptă răspunsul sistemului. Sistemului de operare i-au fost adăugate funcţii noi, ca de exemplu utilizatorii de terminale, mecanisme de întrerupere (pentru a atrage atenţia sistemului de operare asupra sarcinilor urgente), buffer-ele (pentru stocarea temporară a datelor în timpul intrării /ieşirii cu scopul rulării mai uşoare a transferurilor de date). În prezent, computerele puternice pot răspunde simultan la mii de utilizatori, dându-i fiecăruia senzaţia că este singurul care îl apelează.

PC-urile moderne folosesc un sistem de operare relativ simplu, de obicei o variantă de DOS (Disk Operating System) care are ca sarcini principale managementul fişierelor utilizatorului, furnizarea accesului către alte programe (de exemplu procesoarele de text) şi care sunt accesate de la tastatură şi afişează datele pe monitoare. Probabil că cea mai importantă trăsătură a sistemelor de operare contemporane este aceea că devin din ce în ce mai independente de sistemele în care sunt rezidente. Astfel, utilizatorul popularului sistem de operare UNIX (marcă înregistrată), nu trebuie să se îngrijoreze de platforma (hardware) pe care acesta rulează. Beneficiul este acela că utilizatorul nu trebuie să înveţe un nou sistem de operare ori de câte ori cumpără un computer nou.

Page 43: Aplicatii Ale Informaticii in Geografie

42

8.3.2. Principalele funcţii ale sistemului de operare Orice sistem de operare cuprinde o multitudine de funcţii diverse: • Managementul procesării. Utilizatorii solicită computerelor (indiferent de tipul acestora)

procesarea de programe sau secvenţe de programe, solicitând astfel diferite procesoare sau unităţi periferice; sistemul de operare realizează ordonarea corectă şi eficientă a acestor operaţii şi a componentelor fizice implicate în realizarea acestor sarcini. Dacă unui computer i s-ar cere rularea completă a unui singur program, celelalte programe ar trebui să aştepte până la terminarea acestuia. Pentru rularea tuturor programelor într-un interval rezonabil de timp, sistemul de operare rulează porţiuni ale acestora, pe rând, realizând astfel ocuparea completă şi eficientă a timpului de lucru al procesorului. Acest tip de procesare se numeşte procesare time-sharing (prin partajarea timpului), prin contrast cu procesarea de tip batch (rularea, pe secvenţe, a unui singur program). Dacă apare o disfuncţie - o defecţiune a componentelor hard, o supraîncărcare a calculelor sau o disfuncţie a unităţilor de intrare/ieşire - sistemul de operare va întrerupe procesarea.

• Managementul memoriei. Aşa după cum s-a arat într-un capitol anterior, un computer are un

amestec de tipuri de memorie (memoria principală, cache, discuri dure şi flexibile), fiecare cu mărimi diferite şi timpi de acces proprii. Adesea, programele nu pot fi stocate în totalitate în memoria principală; ele sunt scrise pe discurile fixe, care au capacităţi mari dar sunt lente ca timp de acces. Segmentele necesare pentru rularea lor sunt transferate în memoria principală şi unele părţi din aceste segmente în memoria cache. Pentru procesarea rapidă şi corectă a unui număr mare de programe, sistemul de operare trebuie să "răsfoiască" în permanenţă aceste secvenţe de programe şi rezultatele intermediare ale procesării, prin toate aceste tipuri de memorie.

În cele mai multe cazuri, utilizatorii accesează discurile fixe ca pe extensii ale memoriei principale, fără a fi conştienţi de diferenţa dintre cele două nivele de stocare. Astfel, utilizatorii pot folosi în mod liber un spaţiu de memorie mult mai mare decât cel disponibil în memoria principală. Acest lucru se realizează prin interpretarea adreselor de memorie de pe discul fix ca pe extensii consecutive ale adreselor din memoria principală. Această tehnică a fost numită memorie virtuală şi este gestionată tot de sistemul de operare. Două dintre cele mai obişnuite metode de realizare a memoriei virtuale sunt paginarea şi segmentarea. Blocuri de mărime fixă (pagini) sau variabilă (segmente) pot fi mutate, conform necesităţilor, de pe discul fix în memoria principală. Pe măsură ce blocurile sunt deplasate, adresele virtuale sunt considerate ca adrese reale (fizice) ale memoriei principale.

• Managementul intrărilor şi ieşirilor. Sistemul de operare controlează în mod eficient şi sigur

dispozitivele diverse de intrare şi ieşire: tastatura, imprimanta, monitorul, discurile magnetice etc. Aceste periferice au specificaţii foarte diferite sub aspectul vitezei, mecanismelor de control, memoriei proprii şi alte variabile. Sistemul de operare este responsabil de urmărirea şi gestionarea corectă şi eficientă a acestor caracteristici, descrise în directori şi fişiere existente pe discul fix.

• Managementul comunicării. Sistemul de operare este responsabil şi de comunicarea dintre

computerele conectate într-o reţea. Deoarece datele transferate prin reţea pot fi recepţionate intermitent şi nu în mod continuu, ele trebuie să fie combinate de către sistemul de operare. Datele odată recepţionate, sunt apoi convertite într-o formă pe care computerele o pot procesa.

Page 44: Aplicatii Ale Informaticii in Geografie

43

Sistemul de operare urmăreşte, de asemenea, starea reţelei, porţiunile deconectate sau defecte, raportând conturile de folosire a calculatoarelor sau alte date necesare administratorului de reţea.

Deoarece reţelele locale - LAN (engl. Local-Area Networks) - sunt din ce în ce mai mult folosite, managementul proceselor distribuite în aceasta (executarea sarcinilor de calcul, folosirea în comun a programelor şi a fişierelor cu date, a imprimantelor, transmiterea informaţiei de la şi către servere sau computerul central etc.), realizat tot de către sistemul de operare, devine din ce în ce mai complicat. Dacă o reţea este formată din mai multe LAN-uri, urmărirea proceselor şi gestionarea lor devine o adevărată provocare pentru administrator, din cauza naturii în continuă schimbare a respectivei reţele.

• Securitatea. Sistemul de operare trebuie să protejeze computerele de accesul unor utilizatori

nelegitimi sau de modificarea datelor, introdusă prin erori neintenţionate ale utilizatorilor legitimi. Securitatea datelor este extrem de importantă în cazul computerelor legate în reţele de comunicaţii, deoarece mulţi utilizatori pot accesa în mod liber datele respective. De obicei, utilizatorii legitimi sunt identificaţi printr-o parolă de acces, iar costul utilizării computerelor sau datelor din reţea este trecut în mod automat în contul personal al fiecăruia dintre ei.

• Interfaţa cu utilizatorul. Sistemul de operare furnizează o interfaţă convenabilă între utilizator şi computer. Dacă aceasta nu este importantă pentru utilizatorii care rulează programe mari pe supercomputere, pentru utilizatorii de PC-uri acestea sunt importante, prin aspect, convivialitate şi sugestivitate. La ora actuală, aceste interfeţe au, cel mai adesea, forma unor ferestre sau pictograme.

8.4. Sistemul de operare MS-DOS

8.4.1. Scurtă istorie a MS-DOS Dezvoltarea MS-DOS a început in octombrie 1980 când IBM a început sa caute pe piaţă un sistem

de operare pentru IBM-PC- noul calculator care urma sa fie lansat. Microsoft nu avea un adevărat sistem de operare de vânzare dar, după mai multe căutări, a cumpărat licenţa lui 86-DOS dezvoltat de Seattle Computer Products. Sistemul de operare 86-DOS fusese scris de un anume Tim Patterson pentru a putea fi utilizat pe microcalculatoarele S100 echipate cu microprocesorul 18086. Acest sistem a finisat rapid şi prezentat lui IBM pentru evaluare. Iniţial, IBM intenţiona să folosească sistemul de operare CP-M al lui Digital Reasearch care constituia standardul industrial la vremea aceea. Până la urmă IBM s-a văzut în situaţia de a opta pentru oferta Microsoft – “Microsoft Disk Operating System 1.0”. S-a ajuns la o înţelegere între cele două firme şi sistemul de operare “IBM PC-DOS 1.0 “ a fost gata pentru lansarea calculatorului IBM PC, eveniment care a avut loc în octombrie 1981. IBM a supus sistemul de operare la un program riguros de asigurare a calităţii, a găsit peste 300 de erori şi a decis să rescrie programele. Din acest motiv drepturile de autor pentru PC-DOS sunt atât a le lui IBM cât şi ale lui Microsoft. Ca orice produs software, DOS a evoluat. Pentru a ţine evidenţa evoluţiei lui s-a folosit o codificare numerică de tipul: Major. Minor. Minor (de exemplu MS-DOS 7.4.0). Primul număr indică o schimbare majoră de versiune, al doilea număr indică modificarea pentru o anume aplicaţie iar cel de-al treilea număr nu pare a avea o semnificaţie deosebită.

8.4.2. Arhitectura MS-DOS MS-DOS este un sistem de operare organizat pe niveluri (fig.8.4.2) şi este proiectat ca un

mediu monouser (sistemul de calcul poate fi utilizat de un singur utilizator la un moment dat) şi monotasking (la un moment dat, nu se poate executa decât un singur proces). Dispozitivele

Page 45: Aplicatii Ale Informaticii in Geografie

44

standard de intrare-ieşire de DOS sunt tastatura, monitorul, imprimanta şi o unitate de memorie externă (disk).

Comenzile acceptate de MS-DOS sunt cuvinte din limba engleză, dar sintaxa lor trebuie cunoscută de utilizatorul care le foloseşte. Aceste comenzi sunt interpretate de procesorul de comenzi care este, în general, singura componentă cu care utilizatorul interacţionează.

Utilizator Procesor de comenzi Nucleu (kernel) DOS

BIOS Sistemul de lucru

(hardware)

Fig. 8.4.2. Structura pe nivele a sistemului MS-DOS Sistemul DOS a fost structurat pe nivele pentru a proteja utilizatorul de interacţiunea cu biţi

şi octeţi care formează nivelul cel mai de jos al structurii (componenta hardware, care include circuite electrice, regiştri, etc. ).

Nivelul de jos al sistemului DOS este numit BIOS (Basic Imput/Output System = Sistemul de Bază de Intrare/Ieşire). Acest nivel realizează interfaţa cu diversele dispozitive de intrare/ieşire, cum ar fi tastatura, monitorul, imprimanta. BIOS dirijează fluxul de date de la fiecare dintre aceste dispozitive, mai puţin discurile; primeşte informaţii referitoare la succesul/eşecul fiecărei operaţii de intrare/ieşire şi le trimite procesorului. De fapt, BIOS este format din două componente distincte: ROM-BIOS, livrată de către firma producătoare a calculatorului şi DISK-BIOS, care face parte din sistemul de operare şi extinde funcţiile primei.

Componenta ROM-BIOS uniformizează toate diferenţele sistemului de calcul pentru a le aduce la un numitor comun cu convenţiile DOS. Deoarece IBM a făcut publice aceste convenţii, toţi producătorii de hardware sunt obligaţi să se alinieze acestora pentru ca sistemele produse de ei să fie compatibile IBM-PC. De exemplu, rutina de citite a unui caracter de la tastatură trebuie să înceapă în orice BIOS la o adresă fixă, dar fiecare BIOS realizează operaţia de citire în modul său specific.

Componenta DISK-BIOS este practic independentă de hard, deoarece se bazează pe ROM-BIOS, care este standard. Această componentă se materializează într-un fişier cu numele YO.SYS care poate fi găsit în directorul rădăcină.

Nivelul de mijloc este nucleul DOS; conţine rutinele necesare pentru a gestiona discurile şi se materializează într-un fişier cu numele MSDOS.SYS. Nucleul DOS oferă o serie de servicii independente de hardware, cum ar fi gestionarea memoriei, a proceselor, stocarea fişierelor. Acesta este nivelul cel mai de jos în care se lucrează cu conceptul de fişier DOS.

Cea de-a treia componentă, procesorul de comenzi, este numită DOS-shell, adică interfaţa DOS. Aceasta este responsabilă de preluarea comenzilor de la utilizator, execuţia acestora şi furnizarea de răspunsuri satisfăcătoare. Procesorul de comenzi se găseşte în fişierul COMMAND.COM.

Page 46: Aplicatii Ale Informaticii in Geografie

45

8.4.3. Organizarea datelor Sistemul DOS acceptă ca suportul extern de memorie standard discurile; datele sunt stocate

tot pe aceste suporturi externe de memorie. Informaţiile nu sunt depuse haotic, ci ca o structură arborescentă, precis organizată, după modelul oferit de sistemul UNIX. Un concept foarte important al unui sistem de calcul este fişierul; toate informaţiile sistemului de calcul sunt stocate în fişiere. Un fişier se defineşte ca o colecţie de date (programe, texte, imagini, etc.) considerate ca fiind un întreg.

Pentru a înţelege mai bine ce înseamnă structura arborescentă a datelor pe discuri, de obicei se face o analogie cu modul de organizare a cărţilor într-o bibliotecă: există mai multe săli, în fiecare sală mai multe corpuri de bibliotecă, fiecare corp are mai multe rafturi şi pe fiecare raft se află mai multe cărţi (în cazul nostru, fişiere). Pentru a localiza o carte (fişier), se menţionează sala, corpul de bibliotecă, raftul şi autorul şi titlul. Fişierele au nume şi extensie.

MS-DOS gestionează discul în mod asemănător, dar poate utiliza mai multe unităţi de disc, care trebuie să aibă, la rândul lor, nume: a: sau b: (pentru discuri mobile) şi c:, d:, … (pentru discurile fixe). Un disc are mai muţi directori, fiecare putând avea subdirectori. La rândul său, un subdirector poate avea mai mulţi subdirectori proprii ş. a. m. d.

Există şi o serie de reguli cele mai importante dintre acestea fiind următoarele: • un director poate avea oricât de mulţi subdirectori; • un director poate conţine atât subdirectori cât şi fişiere; • ramificarea în adâncime este nelimitată, în sensul că orice director poate avea

subdirectori, care la rândul lor pot avea sub-subdirectori, care pot avea sub-sub-subdirectori, etc.

• orice disc are un director rădăcină, care este punctul de plecare al arborescenţei; • directorul din care porneşte un alt director se numeşte director părinte al acestuia.

Un director sau un fişier se specifică printr-un nume şi o extensie care sugerează tipul de date

conţinute. Numele este format din maximum opt caractere, iar extensia din maximum trei; numele este separat de extensie prin caracterul ‘.’ (punct). Iată câteva extensii mai uzuale:

EXTENSIE SEMNIFICAŢIE .EXE, .COM Program executabil .TXT Fişier conţinând text .BAT Fişiere de comenzi .PAS, .C, .CPP Programe Pascal, C, C+ .DBF Fişier FoxPro .BMP, .GIF, .JPG, .TIF Fişiere conţinând imagini grafice Exemple de fişiere: COMMAND.COM, README.TXT, ECLIPSE.JPG. Dacă extensia are zero caractere, prezenţa punctului nu mai este necesară; majoritatea directorilor au extensie vidă: DOS; NC; WINDOWS, etc.

Specificatorul complet al unui fişier este format din: numele discului pe care se află, numele directorilor prin care se ajunge la fişier, separaţi de caracterul ‘\’ (back slash), numele fişierului şi extensia sa: C:\ADOBE\PHOTOSHOP\TUTORIAL\ECLIPSE.TIF.

Page 47: Aplicatii Ale Informaticii in Geografie

46

8.4.4. Comenzi DOS

Comunicarea către sistemul DOS a operaţiilor pe care vrem să le executăm se face de la tastatură, prin specificarea unei comenzi urmate eventual de anumiţi parametri, conform unei sintaxe bine stabilite. Comenzile DOS sunt de două tipuri:

1. Comenzi interne, care sunt înglobate în componente COMMAND.COM şi care se află permanent încărcate în memorie. De regulă, aceste comenzi realizează operaţii simple şi de primă utilitate (copiere, ştergere, redenumire, afişare etc.). În cele ce urmează vom prezenta câteva dintre cele mai uzuale comenzi interne, recomandând consultarea manualelor de specialitate pentru o informare completă asupra semnificaţiei şi sintaxei acestora.

Dir (prescurtare de la directory) este una dintre comenzilor care permite vizualizarea conţinutului unui director. Sintaxă: dir [d:] [cale] [nume_fişier] [/p] [/w] unde /p şi /w sunt opţiuni. Chdir (cd) permite afişarea sau schimbarea directorului de pe discul specificat sau de pe cel implicit. Sintaxă: chdir [d:] [cale] sau chdir [..] sau şi mai simplu cd [..]. Mkdir (md) permite crearea unui subdirector pe discul specificat. Sintaxă: mkdir [d:] [cale] sau md [d:] [cale]. Pentru a reveni în directorul părinte (directorul de nivel superior celui creat), se tastează comanda cd .. RmDir (rd) permite ştergerea unui director specificat. Nu pot fi şterse decât directoarele care nu conţin nici un fişier. Nu pot fi şterse , de asemenea, directorul rădăcină şi nici directorul curent. Sintaxă: rmdir [d:] [cale] sau rd [d:] [cale]. Copy permite următoarele operaţii:

- copierea unui fişier sau a unui grup de fişiere; - combinarea (concatenarea) a două sau mai multe fişiere; - copierea unui fişier la un dispozitiv;

Sintaxă generală: copy [sursa] [destinaţie] Rename (ren) permite modificarea numelui fişierului sau fişierelor specificate. Sintaxă: rename sau ren [d:] [cale] nume_fişier1 nume_fişier2 Directoarele nu pot fi redenumite cu ajutorul acestei comenzi, ci prin comanda move. Del (erase) şterge fişierul sau fişierele specificate în linia de comandă. Sintaxă: del [d:] [cale] nume_fişier Ştergerea unui director şi a conţinutului său (subdirectoare sau fişiere) se face cu comanda Deltree. Cls realizează ştergerea ecranului. Această comandă poate fi utilizată şi în fişiere de comenzi (.BAT). Date permite vizualizarea şi modificarea datei curente a sistemului, care este folosită de către sistemul de operare pentru a înregistra crearea sau modificarea fişierelor. Comanda poate fi utilizată şi în fişiere de comenzi (.BAT). Echo (cu opţiunile on/off) permite inhibarea afişări pe ecran a comenzilor MS-DOS incluse într-un fişiere de comenzi în timpul execuţiei lor. Directiva poate fi utilizată şi pentru afişarea unui mesaj. Exit realizează părăsirea interpretorului de comenzi (COMMAND.COM) şi revenirea la programul care a lansat interpretorul de comenzi (dacă există). Path permite specificarea căilor prin care sistemul de operare va căuta în mod implicit fişierele executabile la lansarea acestora, dacă ele nu sunt găsite pe calea specifică sau în directorul curent. În general, comanda este utilizată în cadrul fişierului AUTOEXEC.BAT, însă poate fi lansată şi de la prompt-ul MS-DOS. Sintaxă: path [[d:] cale(;…)]. Set permite afişarea, configurarea şi ştergerea variabilelor de mediu. Acestea vor fi reţinute de către sistem într-o zonă a interpretorului de comenzi şi utilizate ulterior ca variabile în cadrul programelor şi în special a fişierelor de comenzi. Comanda set este utilizată în general în fişierele

Page 48: Aplicatii Ale Informaticii in Geografie

47

CONFIG.SYS şi AUTOEXEC.BAT pentru a realiza iniţializarea variabilelor la fiecare lansare a sistemului. Sintaxă: set [[nume_variabilă=[şir]]. Type afişează conţinutul fişierului specificat la dispozitivul standard de ieşire. Sintaxă: type [d:] [cale]nume_fişier. Ver afişează pe dispozitivul standard de ieşire numărul versiunii sistemului de operare MS-DOS curent. Sintaxă: ver.

2. Comenzi externe, care se află pe disc sub forma unor programe executabile (care au extensia .EXE sau .COM). dintre comenzile externe mai uzuale, amintim:

DiskCopy copiază conţinutul unui disc flexibil sursă pe un disc flexibil destinaţie. Sintaxă: diskcopy [d1: [d2:]]. Discul destinaţie poate fi neformatat la începerea operaţiei, comanda formatându-l la aceeaşi densitate ca discul sursă. Prin formatare se distruge informaţia existentă anterior pe discul sursă, copierea realizându-se pistă cu pistă. Această comandă determină numărul de feţe copiat în funcţie de unitatea de disc şi discheta sursă pe care o conţine. Edit lansează editorul de texte MS-DOS care permite crearea, editarea, salvarea şi tipărirea fişierelor în format ASCII. Organizarea editorului este pe bază de ferestre de dialog şi meniuri derulante. Editorul prezintă şi un sistem "online help" (ajutor interactiv). Sintaxă: edit [(d:)] [cale]nume_fişier] Fdisk lansează programul cu acelaşi nume, care permite configurarea unui disc fix pentru utilizarea lui sub sistemul de operare MS-DOS. Sintaxă: fdisk Format realizează următoarele operaţiuni de pregătire ale discurilor în vederea utilizării lor sub MS-DOS:

• formatează discul din unitatea specificată sau pe cel implicit; • analizează întregul disc pentru găsirea pistelor defecte; • creează şi iniţializează directorul rădăcină, tabela de alocare a fişierelor (FAT); • copiază fişierele sistem la locaţia necesară pe discul respectiv.

Sintaxă: format [d:] Help lansează programul MS-DOS Help care oferă informaţii despre comenzile acestui sistem de operare. Sintaxă: help Mem afişează un raport al memoriei utilizate şi libere a sistemului, dar şi informaţii despre modul de alocare a zonelor de memorie convenţională şi înaltă. Sintaxă: mem Print permite tipărirea fişierelor de tip text la imprimantă în timp ce se execută alte comenzi pe calculator. Sintaxă: print [/d:disp] [d:] [cale]nume_fişier. Tree afişează grafic structura directoarelor de pe discul specificat şi, opţional, numele fişierelor din fiecare subdirector. Sintaxă: tree [d:] [cale]. Undelete lansează programul omonim care permite refacerea fişierelor şterse anterior cu comanda del. Sintaxă: undelete [[d:] [cale]nume_fişier]. Unformat reface un disc şters prin comanda format sau restructurat prin comanda recover. Această comandă poate fi aplicată numai unităţilor de disc accesate în mod direct, nu şi celor accesate prin intermediul unei reţele. Sintaxă: unformat d:. Xcopy permite copierea de directoare împreună cu conţinutul lor (subdirectoare sau fişiere). Sintaxă: xcopy [d1:] [cale1] [nume_fişier1] [d2:] [cale2] [nume_fişier2]. Pe lângă aceste comenzi, DOS acceptă şi comenzi de configurare care trebuie scrise în fişierul cu numele CONFIG.SYS din directorul rădăcină şi care stabilesc anumiţi parametri ai sistemului

Page 49: Aplicatii Ale Informaticii in Geografie

48

(modul de afişare pe ecran, tipul de tastatură etc.), ca de exemplu: Break, Country, Device, Dos, Files, Lastdrive etc.

8.4.5. Sistemul de operare Windows

La început, Windows nu a fost un sistem de operare propriu-zis, ci doar o aplicaţie care avea drept scop lărgirea posibilităţilor sistemului DOS. Prima versiune de Windows a fost anunţată de către Microsoft în 1985, dar în pofida reclamei care a precedat lansarea, nu a avut un succes prea mare. Nici versiunile ulterioare nu au fost mai bine primite, dat au permis apariţia unor aplicaţii scrise special pentru Windows: CorelDraw, Adobe Page Maker, Excel etc.

Versiunea 3.0 a avut însă un mare succes pe piaţă datorită unei interfeţe grafice mult îmbunătăţite, a unui design atrăgător şi a vitezei de lucru acceptabile. În plus, această versiune conţine şi o serie de programe utilitare (Write, PaintBrush, Notepad, Calculator, Calendar etc.), care acopereau necesităţile utilizatorului mediu. În urma acestui succes, mulţi producători de softuri au decis să scrie aplicaţiile pentru a putea fi rulate sub Windows.

În 1992 a apărut versiunea 3.1, care oferea un set mai bogat de programe utilitare, utiliza caractere vectoriale, memorie virtuală şi introducea conceptele de OLE (Object Linking and Embedding) şi DDE (Dynamic Data Exchange). În acelaşi an a fost lansată versiunea 3.11, numită şi Windows for WorkGroups, care oferea în plus posibilităţi de lucru în reţea.

În 1993 Microsoft a lansat un nou produs, Windows NT (New Technology), la care lucrase 5 ani, în care investise 150 milioane de dolari şi care avea 6 milioane de linii de cod! Deşi era un sistem fiabil, sofisticat şi cu multe îmbunătăţiri (lucrează pe 32 biţi, portabilitate, asigură protecţia fişierelor), necesita resurse mari de hardware, era incompatibil cu aplicaţiile mai vechi (scrise pe 16 biţi) şi avea un cost destul de ridicat.

Pentru a face trecerea spre Windows NT mai uşoară, compania a lansat Windows '95 (în 1995), care poate rula aplicaţii pe 16 şi pe 32 biţi, nu necesita resurse mari de hardware şi avea o interfaţă grafică mult îmbunătăţită. Fiind un sistem de sine stătător, prezenţa DOS nu mai era necesară, dar având în vedere numărul mare de aplicaţii DOS existente la momentul lansării sale, Windows '95 a fost proiectat pentru a rămâne compatibil cu DOS. Versiunile Windows s-au succedat an de an, iar începând cu Windows 2000 se vor unifica sistemele Windows '95 şi Windows NT.

Principalele avantaje pe care le oferă sistemul de operare Windows sunt: Execuţia în paralel a mai multe programe (multitasking). Deşi calculatorul are un singur

procesor, acesta este exploatat alternativ de mai multe programe, lăsând utilizatorului impresia că execuţia lor decurge simultan.

Există o interfaţă grafică standard, bazată pe ferestre, care poate fi utilizată de oricare dintre aplicaţii. Aceasta (numită şi GUI, de la Graphic User Interface) a permis înlocuirea comenzilor DOS introduse în linia de comandă cu selectarea de meniuri şi imagini grafice sugestive; uşor de intuit de către utilizatorul neexperimentat.

Elementul esenţial cu care se lucrează este fereastra, destinată comunicării între aplicaţie şi utilizator.

Principalele elemente ale unei ferestre sunt:

Bara de titlu, aflată la partea superioară a ferestrei, conţine numele ferestrei şi butoanele pentru minimizare, maximizare/revenire şi închidere.

Bara de meniuri, aflată sub bara de titlu, conţine grupuri de comenzi care oferă utilizatorului posibilitatea comunicării cu aplicaţia care gestionează fereastra respectivă.

Page 50: Aplicatii Ale Informaticii in Geografie

49

Bara de stare (opţional), aflată în partea de jos a ferestrei, în care apar de obicei informaţii referitoare la starea aplicaţiei (poziţia cursorului etc).

Zona de lucru, componenta în care se află conţinutul efectiv al ferestrei. Pot exista pe ecran mai multe ferestre la un moment dat, suprapuse total sau parţial dar numai una singură este activă. De obicei, fiecare fereastră corespunde unei aplicaţii dar pot fi şi aplicaţii care lucrează cu mai multe ferestre aflate în cadrul ferestrei principale.