Pascal: Nizovi (Arrays)

Nizovi su, kako im samo ime govori, elementi u programiranju koji sadrze sredjeni niz podataka. To mogu biti brojevi, stringovi, bajtovi itd. Nizovi se definisu u var bloku a zatim inicijalizuju pre koriscenja, tako sto se ispunjavaju nekim standardnim podacima. Elementima niza se pristupa pomocu rednog broja. Ovo vazi i za citanje i za pisanje. Pogledajmo sada sve ovo u praksi.

program Nizovi;
uses
crt;

var
n:integer;
//definisanje niza
a:array[1..10] of Integer;

begin
//inicijalizacija
for n := 1 to 10 do
//punimo niz brojevima
a[n] := n*n;
//citamo redne brojeve 2 i 7
writeln('Na broju 2 je ',a[2]);
writeln('Na broju 7 je ',a[7]);
readln;
clrscr;
//upisujemo 30 na mesto broj 5
a[5] := 30;
//citamo sve brojeve
for n in a do
writeln('Na broju ',round(sqrt(n)), ' je vrednost: ',n);
readln;
end.

Napomena: Ovaj program nece raditi u Dev-Pascalu zato sto on koristi verziju FPC kompajlera u kojoj ne postoji podrska za For/In strukturu. Mozete ga probati u Lazarusu, jer je podrska za ovo dodata od FPC v2.4.2. Ako insistirate na Dev-Pascal IDEu isti efekat cete dobiti ako poslednjih pet redova napisete ovako:

//citamo sve brojeve
for n := 1 to 10 do
writeln('Na broju ',n, ' je vrednost: ',a[n]);
readln;
end.

Da podsetimo, u Lazarusu ovakve programe mozete kreirati sa Project > New Project > Simple Program ili Program. Za nase potrebe preporucljiva je prva opcija.

Pogledajmo sta nas program radi. Najpre definisemo sam niz u var bloku. Zatim ga punimo brojevima tako sto na svako mesto u nizu stavljamo kvadrat rednog broja elementa. Nakon toga ocitavamo vrednost na dva mesta, da bi se uverili sta se tu nalazi. Zatim upisujemo drugaciju vrednost na mestu broj 5 (gde se nalazi 25 kao kvadrat rednog broja). I na kraju iscitavamo sve vrednosti po redu, kao demonstraciju For/In strukture. Da bi simulirali redne brojeve koristimo zaokruzivanje korena vrednosti na tom mestu. Drugi nacin da se uradi ista stvar objasnjen je u delu napomene.

Vise o nizovima mozete pogledati ovde.

Napad na Linux Mint

Proslog vikenda (Subota, 20.2) napadnut je sajt popularne distribucije Linux Mint. Tokom napada zamenjen je link za ISO v17.3 Cinnamon, sa linkom koji skida ISO koji u sebi ima backdoor. Ovaj backdoor omogucava napadacima da dolaze do licnih podataka o korisniku, kao i da koriste njegov internet kao deo botnet mreze. Ovo ne pogadja one koji koriste neku drugu verziju Minta ili su koristili torrent za download. Ovo takodje ne pogadja repozitorije i sistemske upgrade-e na ovaj nacin. U koliko se ovo odnosi na vas, preporuka je da reinstalirate sistem i promenite sifre.

Vise informacija i pitanja korisnika mozete naci na zvanicnom blogu Minta.

Pascal: Loo(m)povanje plus

Drugi text o lupovima odvajamo zbog preglednosti. Ovde cemo obraditi jos nekoliko korisnih stvari vezano za Pascal petlje. To su brojanje unazad, brojanje na preskoke i petlja u petlji. Ovde necemo obraditi korisnu For/in strukturu, jer su nam za to potrebni nizovi. Primeri ce kao i ranije biti vrlo jednostavni da bi se video princip. A nakon toga vam mogu posluziti kao modeli za sopstvene programe.

1) Brojanje unazad

program ForUnazad;
var
a:integer;

begin
for a := 10 downto 1 do
begin
writeln('Vrednost a je ',a);
end;
readln;
end.

2) Preskoci Do/While

program Neparni;
var
a:integer;

begin
a := 1;
while a <= 10 do
begin
writeln('Vrednost a je ',a);
a := a+2; //preskacemo za 2
end;
readln;
end.

3) Preskoci Repeat/Until

program Parni;
var
a:integer;

begin
a := 2;
repeat
writeln('Vrednost a je ',a);
a := a+2;
until a > 10;
readln;
end.

4) Petlja u petlji

program PuP;
var
a,n:integer;

begin
for n := 1 to 3 do
begin
for a := 1 to 5 do
writeln('Za krug: ',n,' - Vrednost a je: ',a);
end;
readln;
end.

Ovde su data 4 jednostavna primera koriscenja petlji. Najpre smo demonstrirali kako se broji unazad pomocu for-a. Nakon toga smo dali dva primera preskakanja pomocu DoWhile i RepeatUntil i na kraju smo demonstrirali petlju u petlji pomocu dva for lupa. Za unutrasnji for nismo otvarali begin/end blok jer smo koristili samo jednu komandu, te u tom slucaju nije neophodno. U Pascalu ne postoji For/Step struktura, tipicna za neke druge programske jezike, i zato se preskoci rade pomocu drugih metoda. Naravno, sve ove petlje je moguce kombinovati u zavisnosti od situacije, potreba ili kako vama odgovara.

Pascal: Loo(m)povanje

Petlje ili lupovi su strukture u programiranju koje nam omogucavaju da delove koda ponavljamo vise puta na kontrolisan nacin. U Pascalu, slicno kao i u drugim programskim jezicima, postoji tri tipa petlji. To su Reapeat/Until, Do/While i For petlja. U koliko se unutar petlje nalazi vise komandi, one se nalaze u begin/end bloku, slicno kao kod If/then. Pogledajmo sada svaku od njih:

1) Do/While:

program DoWhile;
var
a:integer;

begin
a := 1;
while a <= 10 do
begin
writeln('Vrednost a je ',a);
a := a+1
end;
readln;
end.

2) Reapeat/Until:

program RepeatUntil;
var
a:integer;

begin
a := 1;
repeat
writeln('Vrednost a je ',a);
a := a+1;
until a = 11;
readln;
end.

3) For petlja:

program ForPetlja;
var
a:integer;

begin
for a := 1 to 10 do
begin
writeln('Vrednost a je ',a);
end;
readln;
end.

Ovde su data tri vrlo jednostavna primera, tako da mozete lako videti razliku u pristupima. Takodje ih mozete koristiti kao modele za svoje petlje. Sva tri programa jednostavno broje od 1 do 10 i ispisuju vrednost na ekranu. Obratite paznju na 2) primer u kome smo brojac postavili do 11. Ovo je zato sto kod Reapeat/Until, brojanje pocinje nakon izvrsenja prvog ciklusa. Samim tim, morali smo dodati jos jedan ciklus da bi bio ispisan i broj 10. Inace bi samo izasli iz petlje na broju 9, pa se 10ti krug ne bi ni izvrsio.

Vise o petljama u Pascalu mozete videti ovde.

Sat-Alarm v2.0

Ovo je unapredjena verzija programa Sat-Alarm v1.1 koga sam predstavio ovde: https://kompjuteri2011.wordpress.com/

U ovoj verziji sam dodao opciju da se menjaju teme i da se pamte izmene vremena alarma i tema. Za sada postoje samo dve teme, osnovna, ciji autor Dile i tema Tron koju sam ja napravio.
Teme i vreme alarma se pamte u fajlu sat-alarm.ini.
Izmene u sat-alarm.ini se automatski upisuju prilikom izlaska iz programa, klikom na x.
Program se razvija u Lazarusu.

Izvorni kod i iskompajliran program za Linux mozete preuzeti iz Download sekcije.

Sat-Alarm v2.0
Namena programa: Sat sa alarmom
Autori: Dile i SkYNeT
Licenca: GNU GPL v3

Izvorni kod:
https://dl.dropboxusercontent.com/u/26020865/Sat-Alarm v2.0 Source.tar.bz2
Iskompajliran program za Linux 32Bit:
https://dl.dropboxusercontent.com/u/26020865/Sat-Alarm v2.0 Linux 32Bit.tar.bz2

SHA256 checksum:
Sat-Alarm v2.0 Linux 32Bit.tar.bz2
ee0474893068b4cd39275a98be8c42870d96119d3b4c211ef850e9e10ee8703c
Sat-Alarm v2.0 Source.tar.bz2
6ed2cafe75906270d2f32b959ca9a8706b5029002b688fafc7ceeb4bb21eef91

Osnovna tema
osmovna tema

tema Tron
tema tron

Podesavanje alarma
Screenshot Sat-Alarm podesavanja

Da bi prikaz brojeva na satu bio korektan, morate instalirati oba fonta iz direktorijuma Fontovi.

To mozete uraditi uz pomoc prilozene skripte fontinstaler.sh.
Skripta kopira fontove u ~/.fonts, tako da ce fontovi biti dostupni samo lokalno, trenutno logovanom korisniku.
Kada skripta iskopira fontove tamo gde treba, probajte program, ako kojim slucajem opet imate problem sa prikazom, onda rucno instalirajte fontove iz direktorijuma Fontovi.

Kako instalirati fontove u Linuxu?

Kopirajte fajlove BPdotsVertical.otf i Digital Dismay.otf
u /usr/share/fonts da bi bili dostupni svim korisnickim nalozima (trebace Vam sudo sifra).

ili

Kopirajte fajlove BPdotsVertical.otf i Digital Dismay.otf
u ~/.fonts da bi bili dostupni lokalno, samo pojedinacnom korisnickom nalogu.

ili dvoklikom na fajlove BPdotsVertical.otf i Digital Dismay.otf pa install.
Ako ne otvara fajlove, desni klik na fajlove BPdotsVertical.otf i Digital Dismay.otf pa potrazite u listi Font Viwer.

Izvrsni program je kompajliran za 32 bitni Linux, takodje moze da radi i u 64 bitnom Linux okruzenju.

Sat-Alarm v1.1

Ovaj put cu da Vam predstavim program Sat-Alarm.
Program je pod GNU GPL v3 licencom. Razvija se u Lazarusu. Autori programa smo Dile i ja. Da, u programu sam se drugacije potpisao. :)
Mozete preuzeti iskompajlirani fajl za Linux 32Bit. Takodje, mozete preuzeti i izvorni kod, pa ga, tada mozete sami menjati i kompajlirati za Vas operativni sistem, ako na primer koristite Windows ili Mac. Kada ga preuzmete, potrebno je da ga raspakujete negde na hard disk. Pre nego sto pocnete da ga koristite, treba da instalirate prilozene fontove. To mozete uraditi uz pomoc skripte fontinstaler.sh ili rucno u slucaju da na Vasoj Linux distribuciji kojim slucajem skripta ne radi kako treba. Za ostale operativne sisteme morate rucno instalirati fontove. Zatim pokrenite program, dvoklikom na Sat-Alarm.

Ovo je glavni prozor programa koji prikazuje trenutno vreme, datum i vreme alarma.
Screenshot Sat-Alarm
Klikom na dugme Podesi alarm otvarate prozor za podesavanje alarma.
Klikom na kvadratic Aktiviraj alarm, aktivirate ili deaktivirate alarm, Ako je kvadratic cekiran, onda je alarm aktivan i obrnuto. Kao dodatna indikacija, sluzi i prikaz vremena alarma, ako je crven, alarm je aktivan, ako je siv, alarm nije aktivan.
Klikom na dugme O programu, otvorice se prozor sa informacijama o verziji i autorima.

Ovo je prozor za podesavanje alarma:
Screenshot Sat-Alarm podesavanja
Podesite zeljeno vreme alarma, zatim kliknite na Potvrdi i aktiviraj vreme alarma.
Ako ne zelite da menjate nista, samo kliknite na Odustani od izmena.

Sat-Alarm v1.1
Namena programa: Sat sa alarmom
Autori: Dile i SkYNeT
Licenca: GNU GPL v3

Izvorni kod:
https://dl.dropboxusercontent.com/u/26020865/Sat-Alarm Source.tar.bz2
Iskompajliran program za Linux 32Bit:
https://dl.dropboxusercontent.com/u/26020865/Sat Alarm Linux 32Bit.tar.bz2

SHA256 checksum:
Sat Alarm Linux 32Bit.tar.bz2
f4dafd6bc245e34ebacf28969c82561aff6ae2d2a3822af2233ea12a451fda15
Sat-Alarm Source.tar.bz2
6455205203e9eec17719eaea08ec5404e774a5d5af162ac9ed30f955f4cf8e1f

Lazarus tutorijal 10 – Tok programa i CheckBox

U ovoj epizodi pricam o kontroli toka programa uz pomoc If, Then, Else i prikazujem primer kosriscenja CheckBox-a.

Blender tutorijal 08 – Odgovor na pitanje gledaoca

U ovoj epizodi odgovaram na pitanje gledaoca.

Lazarus tutorijal 09 – dve forme i dva unita

U ovoj epizodi govorim o tome kako otvoriti novu formu i kako prosledjivati vrednosti varijabli iz jedne forme u drugu.

Pascal: Tok programa

Slicno kao i u drugim jezicima, tok programa se u Pascalu najcesce kontrolise pomocu if / then strukture. U koliko se nakon then nalazi vise komandi, otvara se novi begin / end blok. Takodje, kada imamo dve opcije, moguce je koristiti if-then-else strukturu. U praksi to izgleda ovako..

program BojaTok;
uses crt;
var ime:string; bla:char;
label strt; //label za goto

begin
write('Unesite ime: ');
readln(ime);
strt:
clrscr;
write('Izaberite boju: ');
writeln('1 za Crvenu, 2 za Plavu');
bla := readkey; //taster u bla
if bla = '1' then begin
clrscr;
TextColor(Red);
writeln('Zdravo ',ime);
end else
if bla = '2' then begin
clrscr;
TextColor(Blue);
writeln('Zdravo ',ime);
end else begin
clrscr;
writeln('Ne znam tu boju');
delay(2000); //ceka 2 sekunde
goto strt; //ide na strt ako nije ni 1 ni 2
end;
readln;
end.

Ovde smo najpre definisali varijable, unit i label. Zatim smo pitali za ime a onda i za izbor boje pozdravne poruke. U zavisnosti od izbora korisnika, pozdravna poruke ce biti ispisana u crvenoj ili plavoj boji. U koliko korisnik pritisne neki nepredvidjeni taster, bice ponovo vracen na izbor.

Takodje smo koristili novi element tzv. label. On sluzi da se obelezi mesto u programu na koje se kasnije mozemo vracati pomocu goto komande. Obzirom da nova generacija programera smatra goto losom praxom, ova komanda je po defaultu iskljucena kod nekih kompajlera. U koliko vam kompajler prijavi gresku, jednostavno dodajte ispod imena progama (drugi red) instrukciju {$GOTO ON}.

Vise o if/then strukturi procitajte ovde.

Follow

Get every new post delivered to your Inbox.

Join 27 other followers