====== Lecția 1: Caracter. Șiruri de caractere. ======
===== Tutorial =====
==== 1. Ce sunt caracterele? ====
Un caracter poate fi reprezentat de:
* o cifră: **0**,**1**,**2**,**3**,**4**,**5**,**6**,**7**,**8**,**9**
* o literă: **A**,**B**,**C**,**D**,...,**X**,**Y**,**Z**,**a**,**b**,**c**,**d**,...,**x**,**y**,**z**
* un semn de punctuaţie **?** , **.** , **,** , **!** , **"** , **'** , **-**
* acoladă,paranteză dreaptă/rotundă: **{**,**}**,**[**,**]**,**(**,**)**
* alte semne speciale folosite cel mai adesea pe calculator: **&**,**$**,**@**,**#**,**_**
Made using: Khan Academy Computer Science.
==== 2. Declararea unei variabile caracter. ====
Definiţia din dicționar pentru o variabilă este următoarea:
** VARIÁBILĂ ~e f. mat. Mărime care poate căpăta diferite valori **
Cu alte cuvinte, variabila poate lua valori pe care mai târziu le poate schimba. În Khan, variabila se declară folosind următoarea sintaxă: ''var x = 4;''
Made using: Khan Academy Computer Science.
==== 3. Caractere speciale ====
Caracterele speciale sunt acele caractere care pot fi incluse în şir-uri, dar făra a le tasta direct.
^ Caracter ^ Cod ^
|Linie nouă | \n |
|Ghilimele simple| \' |
|Ghilimele duble | \" |
|Backslash | \ \ |
Urmăriţi cu atenţie următoarele programe:
Made using: Khan Academy Computer Science.
Adauga informatiile tale la sfarsitul celor prezentate in Khan (Nume, prenume, clasa), pe randuri diferite.
Made using: Khan Academy Computer Science.
Cauta pe Google si adauga un alt citat celebru.
==== 4. Şirul ca vector de caractere. ====
Aţi învăţat că vectorii sunt utili la organizarea informaţiilor. Haide să facem legătura cu viaţa reală.
Gândiţi-vă la cartea de telefoane!
Ce s-ar fi întâmplat dacă în loc de carte, numerele de telefon veneau scrise pe bileţele separate.
În loc să am o carte, aş fi avut bileţele. Care ar fi fost rezultatul, dacă aţi fi pierdut unul din bileţele pe care aparea numărul de telefon a lui Chuck Norris şi nu aţi fi stiut că l-aţi pierdut? Când v-aţi fi uitat printre bileţele şi aţi fi căutat Chuck Norris aţi fi observat că nu l-aţi găsit. Concluzia ar fi fost că Chuck Norris nu are telefon.
Dar dacă s-ar fi schimbat ordinea între bileţele, cum le-aţi mai fi găsit într-un timp mai scurt de 2 ore?
Pentru asta sunt utili vectorii. În loc să avem 100 de **variabile**/bileţele, mai bine le păstrăm într-un **vector**/cartea de telefoane.
Ca să ne reamintim, în Khan, vectorii se declară folosind următoarea sintaxă:
**var** vector = [elem_1, elem_2, …., elem_n];
**var** myfriends = ["John","Charles","Ariel"];
for (i = 0; i < n; i++) {
doSomething();
}
Atenţie: i şi n trebuie să fie declarate înainte de a le folosi!
Acum hai să urmărim următorul exemplu:
Made using: Khan Academy Computer Science.
Super! Acum ştim să aflăm o persoană dintr-un vector, dar mi-a mai venit o idee. Dacă String-ul meu conţine un nume, cum aflu cu ce literă începe numele?
Hai să vedem:
Made using: Khan Academy Computer Science.
==== 5. Concatenare şiruri ====
**Concatenarea** a două şiruri reprezintă **alăturarea** lor. Pentru a concatena două şiruri putem folosi operatorul ''+''.
Exemplu pentru sintaxă:
var sira = "Exemplu";
var sirb = "Concatenare";
var sir = sira + sirb;
Adică **sir** va conţine "ExempluConcatenare".
Acum, hai să testăm:
Made using: Khan Academy Computer Science.
==== 6. Alt exemplu ====
Made using: Khan Academy Computer Science.
===== Task-uri =====
==== Task A ====
* Creaţi un vector care să se numească **ls** şi care să conţină următoarele cuvinte în ordinea dată: **Kids**,**la**,**.**,**este**,**Daca**,**Digital**,**mergem**,**sambata**,**,**
* Creaţi variabila **proposition** şi folosind vectorul **ls**, iniţializaţi-o cu "Daca este samabata, mergem la Digital Kids."
* Atenţie, **NU** aveţi voie sa scrieţi **proposition = "Daca este samabata, mergem la Digital Kids."**. Trebuie să vă folosiţi de vectorul **ls**
* Afişaţi textul la poziţia **y=30** şi **x=20**
* Setaţi culoarea textului pe **albastru**
* Setaţi dimensiunea textului la **19**
==== Task B ====
* Urmăriţi cu atenţie și rezolvați comentariile din următorul program:
Made using: Khan Academy Computer Science.
==== Task C ====
* Creaţi un vector şi iniţializaţi-l cu numele a **5** oraşe din România.
* Folosiţi un **for** pentru a afişa numele oraşelor.
* După ce aţi terminat de afişat oraşele, pe o linie nouă afişaţi iniţialele oraşelor.
* Exemplu: iniţiala pentru oraşul **D**robeta Turnu-Severin este **D**
var vector = ["Bibliotecă", "Carte", "Stilou"];
text(vector[2],10,10); --va afişa __Stilou__
text(vector[1],30,30); --va afişa __Carte__
text(vector[2][0],50,50); --va afişa __S__
**Ştim că __vector[2]__ înseamnă __Stilou__, iar __vector[2][0]__ înseamna __prima literă__ a lui __vector[2]__ care este __S__**
==== Task D ====
Aveţi la dispoziţie un vector care conţine toate litere alfabetului. Creaţi o propoziţie.
Intraţi pe adresa următoare: [[http://www.khanacademy.org/cs/m9_l1_ex10/5147940042571776|Exerciţiu Khan]]
===== Bonus =====
**ASCII** reprezintă o codificare a literelor/cifrelor/alte caractere. Astfel, putem transmite mesaje secrete prietenilor noştri pe care doar noi să le înţelegem, după anumite reguli.
De exemplu:
caracterul A este codificat ca 65
caracterul B este codificat ca 66
caracterul C este codificat ca 67
caracterul D este codificat ca 68
.................................
caracterul Z este codificat ca 90
---------------------------------
caracterul a este codificat ca 97
caracterul b este codificat ca 98
caracterul c este codificat ca 99
caracterul d este codificat ca 100
..................................
caracterul z este codificat ca 122
Cum putem afla codificarea unui caracter în Khan?
Cum putem afla codificarea unui caracter în Khan?
**var** codificare = 'A'.charCodeAt(0);
**var** codificare = 'Z'.charCodeAt(0);
Cum putem decodifica?
**var** decodificare = **String**.fromCharCode(65);
**var** decodificare = **String**.fromCharCode(66);
Priviţi cu atenţie următorul tabel. Observaţi coloana **Chr** şi coloana **Dec**. După cum am spus mai sus, caracterului A îi corespune valoarea 65.
{{:module:09-siruri-de-caractere:asciifull.gif|}}
Acum urmăriţi cu atenţie:
Made using: Khan Academy Computer Science.
Urmatorul exerciţiu este să decodificaţi voi.
Made using: Khan Academy Computer Science.
===== Temă =====
Urmăriţi și rezolvați cu atenţie comentariile:
Made using: Khan Academy Computer Science.
===== Recapitulare =====
Declaraţi-vă şirul "Nicolae Grigorescu a pictat tabloul Car cu boi"
Folosiţi-vă de un for şi afişaţi pe un rând nou fiecare literă din şir şi poziţia ei în index. Exemplu:
N 0
i 1
c 2
o 3
l 4
a 5
e 6
7
G 8
r 9
i 10