Pagina documente » Informatica, Matematica » Prezentarea limbajului Logo

Cuprins

lucrare-licenta-prezentarea-limbajului-logo
Aceasta lucrare poate fi descarcata doar daca ai statut PREMIUM si are scop consultativ. Pentru a descarca aceasta lucrare trebuie sa fii utilizator inregistrat.
lucrare-licenta-prezentarea-limbajului-logo


Extras din document

CUPRINS
Cap. 1. Introducere in LOGO
2
1.1. LOGO - un LIMBAJ serios ?
2
1.2. Scurt istoric
2
Cap. 2. Utilizarea limbajului
4
2.1. Proceduri
4
2.2. Variabile
6
2.3. Structuri de date
8
2.4. Operatii numerice
20
2.5. Instructiuni repetitive
22
2.6. Grafica testoasei
24
2.7. Comenzi pentru crearea ferestrelor
29
2.8. Comenzi pentru lucru cu obiecte de tip Bitmap
31
2.9. Comenzi multimedia
33
Cap. 3. Mediul de lucru MSWLogo
36
3.1. Generalitati
36
3.2. Interfata grafica
36
Cap. 4. Jocul Reversi
42
4.1. Tema jocului
42
4.2. Implementarea jocului
42
4.3. Realizarea interfetei
43
4.4. Strategia de joc
48
4.5. Determinarea cistigatorului
56
Cap. 5. Concluzii
59
Bibliografie
60

Alte date

?

- {p} -{p}

?Cap. 1. Introducere in LOGO

1.1. LOGO – un limbaj serios ?

Raspunsul la aceasta intrebare constituie prima surpriza furnizata de LOGO si, totodata, un prim element care particularizeaza acest limbaj printre toate celelalte: LOGO nu a fost conceput ca un instrument pentru profesionistii calculatoarelor, ci pentru copii. Altfel spus, LOGO provine dintr-un demers pedagogic, iar Harold Abelson o spune intr-un mod foarte concis: “Logo este un nume pentru o filosofie a educatiei si pentru o familie in continua evolutie de limbaje de programare care ajuta la realizarea acesteia”.

Chiar daca a fost conceput pentru copii, LOGO este extrem de elegant, puternic si … simpatic. Este insa obligatoriu sa amintim (pe scurt, desigur) cateva repere din istoria sa de peste 30 de ani.

1.2. Scurt istoric

Totul a pornit de la studiile unui psiholog elvetian, pe nume Jean Piaget, privind mecanismele invatarii la copii. Rezultatele sale s-au constituit intr-o noua teorie a educatiei, numita constructivism, care a revolutionat stiinta pedagogica. Pe scurt, constructivismul considera cunoasterea ca fiind produsul creatiei intelectuale a celui care invata, rezultand din interactiunea acestuia cu oamenii si mediul inconjurator. Pare foarte natural, dar adesea practica pedagogica neglijeaza inca acest adevar simplu: invatarea este un act de creatie, nu de memorare. Transpunerea in practica a teoriei lui Piaget avea deci nevoie de instrumente specifice.

Pe la mijlocul anilor ’60, un matematician care lucrase cu Piaget ajunge in Statele Unite. Si nu oriunde, ci tocmai la MIT (Massachusetts Institute of Technology), o adevarata Mecca a informaticii. Numele sau: Seymour Papert. La MIT, Papert infiinteaza, impreuna cu Marvin Minsky, Laboratorul de Inteligenta Artificiala, care devine curand incubatorul unor realizari exceptionale. Aici, impreuna cu o echipa de specialisti, Papert realizeaza in 1967 prima versiune de LOGO, un limbaj de programare care isi propune sa fie un instrument didactic in sensul teoriei lui Piaget, un instrument care sa stimuleze tocmai acea creatie intelectuala care sta la baza invatarii.

LOGO se bazeaza pe un limbaj de programare – folosit intens in Inteligenta Artificiala – numit LISP (programatorii profesionisti inca il mai considera un dialect al acestuia). De la LISP a mostenit LOGO flexibilitatea si puterea calculului simbolic, care l-au recomandat pentru numeroase proiecte avansate in matematica, lingvistica, robotica, muzica si alte domenii. Spre deosebire insa de LISP, LOGO a fost gandit ca un “instrument pentru invatare”, deci trebuia sa fie in primul rand accesibil nespecialistilor (chiar si copiilor), sa fie expresiv si, mai ales, simplu.

La sfarsitul anilor ’70 apar calculatoare personale si primele implementari pentru LOGO pentru acestea (mai intai Apple II si Texas Instruments TI 99/4). Raspandirea PC-urilor in deceniul urmator va aduce cu sine utilizarea limbajului pe scara larga in multe scoli din intreaga lume.

Sigur, se pune intrebarea privitoare la motivul care a stat la baza crearii unui nou limbaj de programare in momentul in care exista, deja, la dispozitia utilizatorilor o multitudine de limbaje de programare. Raspunsul este legat de faptul ca fiecare limbaj de programare, prin facilitatile si lipsurile sale, favorizeaza formarea si utilizarea unui stil propriu de a realiza programe, dar nici unul nu reprezinta o baza optima - care sa stimuleze la maxim calitatile care salasluiesc in stare latenta la copii, cum sunt: capacitatea de modelare si rezolvare de probleme si spiritul de explorare.

În plus, unele din limbajele de programare alese pentru initiere in informatica (datorita comoditatii lor in utilizare) conduc catre un stil in disonanta cu stilurile moderne de programare, clare si eficiente. Limbajul LOGO, in schimb, are incorporate toate conceptele moderne care s-au impus in ultimii ani in informatica. Astfel, LOGO permite, pe langa uzualele calcule aritmetice, si manipularea cu usurinta si naturalete a cuvintelor si frazelor, fiind astfel adaptat explorarii limbajelor naturale si artificiale. În plus, o mare parte a succesului limbajului LOGO rezida in facilitatile sale grafice. Aceste facilitati cunoscute sub numele de “TURTLE GRAPHICS” sunt implementate in toate limbajele moderne si permit atat realizarea de catre incepatori (chiar copii mici) a unor desene, cat explorarea unor concepte de matematica avansata (analiza, topologie, algebra, geometrie diferentiala, mecanica clasica si chiar relativista etc.).

Cap. 2. Utilizarea limbajului

2.1. Proceduri

Ca si in alte limbaje de programare si in Logo, programele pot fi structurate cu ajutorul procedurilor. Practic un program realizat in Logo este de fapt compus din una sau mai multe proceduri. Un exemplu foarte simplu de procedura ar fi :

(1) to salut

(2) print [hello world!]

(3) end

Astfel am definit o procedura (in acest caz este o comanda) care, atunci cand este invocata, afiseaza mesajul “hello world!”. Înainte de a ne ocupa mai indeaproape de semnificatia liniilor de mai sus, trebuie mentionat faptul ca definirea procedurilor nu se face in mod conversational. Este vorba de o editare de text similara cu cea a surselor pentru alte limbaje de programare. Editorul se poate lansa prin comanda edit urmata de numele procedurii pe care vrem sa o editam sau din meniul File optiunea Edit.

Sa revenim la exemplul dat. Linia (1) reprezinta antetul definitiei, constand din comanda to, urmata de numele pe care il dam procedurii (in cazul nostru salut) si, daca e cazul, de parametrii formali ai procedurii.

Ultima linie a definitiei contine, obligatoriu, doar cuvantul end. Între prima si ultima linie se desfasoara o succesiune de instructiuni, care constituie corpul definitiei. În cazul nostru, corpul definitiei este format dintr-o singura linie (2), cuprinzand o singura comanda.

De indata ce definitia a fost incheiata, ea poate fi utilizata fie in regim conversational, fie pentru a defini alte proceduri. Procedurile, impreuna cu alte elemente pe care le-am definit (de pilda variabilele), formeaza contextul sesiunii, sau spatiul de lucru (workspace). Acesta poate fi salvat (prin comanda save) si restaurat apoi intr-o alta sesiune de lucru (prin comanda load).

Desigur, procedurile nu prea sunt utile fara argumente. Sa definim deci o procedura cu un argument:

(1) to inc :in

(2) output :in + 1

(3) end

Argumentul este o variabila locala procedurii (adica: vizibila doar pentru instructiuni din corpul acesteia) care se declara in cadrul comenzii to, imediat dupa numele procedurii. Numele pe care i-l atribuim este la alegerea noastra (in acest caz este in – remarcam conventia prin care numele trebuie precedat de caracterul “:”) iar valoarea cu care este initializata este cea pe care o primeste la apel:

print inc 23

24

Procedura output are ca efect incheierea executiei procedurii in care apare si returnarea catre interpretor a valorii argumentului sau – in cazul de mai sus 23+1, deci 24. Este interesant faptul ca output este o comanda (deci nu poate sa apara ca argument al unei proceduri), dar procedura in care apare este o functie. O comanda inrudita cu output este stop, care incheie executia procedurii in care apare, dar nu determina returnarea unei valori.

Asa cum am definit o procedura cu un argument se pot defini proceduri cu mai multe argumente, ele avand forma urmatoare:

to nume_procedura :arg1 :arg2 :arg3 …

; corpul procedurii

end

Argumentele se scriu dupa numele procedurii avand ca delimitator caracterul spatiu. Se observa in corpul procedurii aparitia caracterului “;”. El semnifica aparitia unui comentariu scris de catre utilizator.