Arhiva pentru tagul “Programare”

O introducere în Java, orientată spre aplicaţii pentru Android

Am tot cochetat în ultima vreme cu ideea de a învăţa Java pentru a putea scrie aplicaţii native pentru Android. Pentru moment am scris doar câteva mici-mici aplicaţii (două publicate în Google Play), dar nu în Java, fiind vorba de webaplicaţii (set de pagini HTML+CSS+JS) “împachetate” ca aplicaţii pentru mobile (pentru cei care nu îşi amintesc, epopeea am descris-o în unu, doi, trei părţi, acum un an de zile). Desigur, o aplicaţie nativă e mai rapidă şi are multe avantaje (şi dezavantaje, dar nu discutăm acum), aşa că m-am gândit să văd puţin cât de greu e…

imagine

Ei bine, răspunsul depinde de pretenţii. Ca unul care a trecut prin programare în liceu şi facultate (chiar …


Small Basic: implementarea jocului spânzurătoarea

Aţi văzut că săptămâna aceasta am avut mai mult scheme logice şi programe în Small Basic. M-am şi explicat de ce (un curs pregătit pentru copii, de iniţiere în Small Basic). Ca “examen final” m-am gândit la implementarea unui joc clasic, şi pe lângă X şi 0, deja prezentat, am făcut rapid şi unul pentru “spânzurătoarea”. Evident, vorbind de copii, nu am apelat chiar la spânzurătoare ci am optat pentru un număr de şase vieţi, din care se tot pierde câte una când greşeşti. Puteţi vedea jocul online aici.

imagine

Din nou, programarea nu este cea mai bună, nu e perfectă, nici optimă. Am căutat să rămân cumva pe mintea “cursanţilor”. Ce a ieşit vedeţi mai jos.


Small Basic: implementarea jocului X şi 0

Aţi văzut că săptămâna aceasta am avut mai mult scheme logice şi programe în Small Basic. M-am şi explicat de ce (un curs pregătit pentru copii, de iniţiere în Small Basic). Ca “examen final” m-am gândit la implementarea unui joc clasic, iar X şi 0 e suficient de clasic, nu? Se putea face mult mai bine (ca programare) şi mult mai arătos (interfaţa), dar am vrut să rămân la un nivel jos, pentru nişte copii care au doar o săptămână de experienţă de programare. Aşa a ieşit codul de mai jos, care poate fi văzut în execuţie online aici.

imagine …


Small Basic: Câteva programe cu texte

[Explicaţie: pregătirea unui scurt curs de Small Basic pentru copii a făcut să nu mă pot concentra să scriu pentru CNet.ro. Pentru a recupera, voi publica din programele pregătite pentru respectivul curs, cu speranţa că vor folosi cuiva – chiar dacă Small Basic nu e atât de popular.] Când am vorbit anul trecut mai detaliat despre Small Basic nu am ajuns să spun nimic despre clasa Text. Evident, este o clasă importantă şi cu aplicaţii foarte multe. Vom vedea câteva programe mai mult cu scop didactic decât utile în sine.

1. Un start uşor: se dă un text şi se cere să se spună dacă conţine litera “a” sau secvenţa “er”. Desigur, în ambele cazuri folosim Text.GetIndexOf. Online aici.

TextWindow.Write("Scrieţi ceva: ")
ceva=TextWindow.Read()
ceva=Text.ConvertToLowerCase(ceva)

If (Text.GetIndexOf(ceva,"a")<>0) Then
  TextWindow.WriteLine("Apare litera 'a'.")
Else
  TextWindow.WriteLine("Nu apare litera 'a'.")
EndIf
If (Text.GetIndexOf(ceva,"er")<>0) Then
  TextWindow.WriteLine("Apare secvenţa 'er'.")
Else
  TextWindow.WriteLine("Nu apare secvenţa 'er'.")
EndIf


Small Basic: Câteva programe cu broscuţa

[Explicaţie: pregătirea unui scurt curs de Small Basic pentru copii a făcut să nu mă pot concentra să scriu pentru CNet.ro. Pentru a recupera, voi publica din programele pregătite pentru respectivul curs, cu speranţa că vor folosi cuiva – chiar dacă Small Basic nu e atât de popular.] Despre desenarea cu broasca ţestoasă am scris aici anul trecut. Acum doresc să revin cu alte câteva programe, simpluţe şi în acelaşi timp simpatice, adică bune pentru copiii care vor să înveţe cum să o conducă.

imagine

1. Să se scrie 82 în stilul indicatoarelor electronice (ca în captura de mai sus). Online aici.

GraphicsWindow.Width=300
GraphicsWindow.Height=270
GraphicsWindow.PenWidth=5
Turtle.Speed=9

' Acum scriu 8
Turtle.X=20
Turtle.Y=10
Turtle.TurnRight()
Turtle.Move(100)
Turtle.X=130
Turtle.Y=20
Turtle.TurnRight()
Turtle.Move(100)
Turtle.X=130
Turtle.Y=140
Turtle.Move(100)
Turtle.X=120
Turtle.Y=250
Turtle.TurnRight()
Turtle.Move(100)
Turtle.X=10
Turtle.Y=240
Turtle.TurnRight()
Turtle.Move(100)
Turtle.Y=120
Turtle.Move(100)
Turtle.X=20
Turtle.Y=130
Turtle.TurnRight()
Turtle.Move(100)

' Acum scriu 2
Turtle.X=170
Turtle.Y=10
Turtle.Move(100)
Turtle.X=280
Turtle.Y=20
Turtle.TurnRight()
Turtle.Move(100)
Turtle.X=270
Turtle.Y=130
Turtle.TurnRight()
Turtle.Move(100)
Turtle.X=160
Turtle.Y=140
Turtle.TurnLeft()
Turtle.Move(100)
Turtle.X=170
Turtle.Y=250
Turtle.TurnLeft()
Turtle.Move(100)

2. Să se deseneze o serie de …


Small Basic: Câteva programe cu şiruri

[Explicaţie: pregătirea unui scurt curs de Small Basic pentru copii a făcut să nu mă pot concentra să scriu pentru CNet.ro. Pentru a recupera, voi publica din programele pregătite pentru respectivul curs, cu speranţa că vor folosi cuiva – chiar dacă Small Basic nu e atât de popular.] Acum vedem programe cu şiruri. Vă amintesc că anul trecut am scris mai multe articole introductive pentru Small Basic, aici vorbind despre şiruri, iar aici am văzut câteva exemple (şirul lui Fibonacci, maximul dintr-un şir şi sortarea unui şir). Să vedem acum alte programe-exemple.

1. Să se creeze un şir nou inversând un alt şir de numere aleatoare. Online aici.

n=20
For i=1 To n
sir[i]=Math.GetRandomNumber(100)
EndFor

For i=1 To n
sirnou[i]=sir[n-i+1]
EndFor

k=1
For i=n To 1 Step -1
sirnou[k]=sir[i]
k=k+1
EndFor

TextWindow.WriteLine("Primul sir:")
For i=1 To n
TextWindow.Write(sir[i]+" ")
EndFor
TextWindow.WriteLine("")
TextWindow.WriteLine("Al doilea sir:")
For i=1 To n
TextWindow.Write(sirnou[i]+" …


Small Basic: Câteva programe medii

[Explicaţie: pregătirea unui scurt curs de Small Basic pentru copii a făcut să nu mă pot concentra să scriu pentru CNet.ro. Pentru a recupera, voi publica din programele pregătite pentru respectivul curs, cu speranţa că vor folosi cuiva – chiar dacă Small Basic nu e atât de popular.] Mergem mai departe cu nişte programe simple spre medii. Desigur, totul e relativ la nivelul Dvs de cunoştinţe despre Small Basic. E un limbaj pentru copii şi începători: dacă nu ştiţi programare urmaţi tagul Small Basic şi poate veţi învăţa!

1. Se dă un număr. Să se inverseze verificându-se dacă e palindrom (numerele palindrome sunt egale cu “inversul” lor – exemple: 121, 4554, 9834389…). De asemenea să se afle cifra maximă. Online aici.

TextWindow.Write("Scrieţi un număr: ")
n=TextWindow.ReadNumber()
nrest=n
ninvers=0
max=0
While (nrest>0)
cifra=Math.Remainder(nrest,10)
If cifra>max Then
max=cifra
EndIf
nrest=Math.Floor(nrest/10)
ninvers=ninvers*10+cifra
EndWhile
TextWindow.WriteLine("Numărul inversul este: …


Small Basic: Câteva programe simple

[Explicaţie: pregătirea unui scurt curs de Small Basic pentru copii a făcut să nu mă pot concentra să scriu pentru CNet.ro. Pentru a recupera, voi publica din programele pregătite pentru respectivul curs, cu speranţa că vor folosi cuiva – chiar dacă Small Basic nu e atât de popular.] Vom vedea în continuare câteva programe banale, bune pentru începători, adică pentru cei care acum “buchisesc” Small Basic. Vă amintesc că Small Basic e un limbaj de programare gândit special pentru copii şi începători.

1. În funcţie de ora din zi să se salute cu "Bună dimineaţa!", "Bună ziua!" sau "Bună seara!" Online aici.

ora=Clock.Hour
If (ora<10) Then
  TextWindow.WriteLine("Bună dimineaţa!")
Else
  If (ora<18) Then
    TextWindow.WriteLine("Bună ziua!")
  Else
    TextWindow.WriteLine("Bună seara!")
  EndIf
EndIf

2. Se introduc mai multe numere, încheierea introducerii fiind semnalată cu zero. Calculaţi media lor aritmetică. Online …


Scheme logice: Două exemple

OK. Să zicem că în ultimele 1, 2, 3 articole am explicat elementele de bază legate de schemele logice. Acum vă propun să vedem două scheme ceva mai complicate (nu, nu sunt din cele cu adevărat complicate), ca test că am înţeles partea de introducere. Şi începem cu schema logică de mai jos (sau aici): oare ce face? Desigur, cei cu experienţă aruncă o privire şi înţeleg. Pentru ceilalţi cel mai sigur e să ia o foaie şi un creion şi să urmărească evoluţia variabilelor din schema logică. Spre reamintire: cu % aflăm restul împărţirii (adică 11%3 este 2).

imagine

Dacă v-aţi dat seama e foarte bine! Schema logică de mai sus citeşte două …


Scheme logice: Introducere (III)

În prima şi a doua parte am văzut scheme logice atât de simple încât totul decurgea de sus în jos, liniar. Chiar dacă am avut blocuri decizionale, ramurile lor o luau tot în jos, deci lectura se făcea într-o singură direcţie. Dar nu este acesta cazul întotdeauna. Să luăm ceva foarte simplu: afişarea numerelor de la 1 la 10 (aici schema logică sau mai jos, în stânga). Am putea să punem 10 blocuri de scriere, dar nu e eficient: dacă avem de scris 100 de numere, nu 10? Să vedem cum facem…

imagine

Ne vom folosi de o variabilă i care va parcurge pe rând valorile de la 1 la 10. Pentru aceasta o iniţializăm cu …