Sąlygos

Šiame forume galima rasti pamokas, patarimus, skriptus ir kitą naudingą informciją.
User avatar
aaarnas
Vyr. diskusijų administratorius
Posts: 3891
Joined: 2010 Aug 31 13:21
Skype: fiarno
Contact:

Sąlygos

Post by aaarnas »

Taigi sąlygos yra naudojamos atlikti kažkokį loginį sprendimą, kuriuo paremtas visas programavimas. Mes pateikiame kažkokią sąlygą ir kompiuteris nusprendęs ar sąlyga teisinga ar ne, parenka nurodytą algoritmo dalį kuris bus vykdomas toliau.

Yra 3 tipų sąlygos:

If sąlyga

Dažniausiai sutinkama ir naudojama sąlyga. Jos aprašymas toks:

Code: Select all

if(a>b) {// Jei sąlyga teisinga, šis kodas bus vykdomas. Jei ne, jis bus praleistas.}
Šiai sąlygai priklauso ir žodelis else. Jis naudojamas jei sąlyga neteisinga, vykdyti kitą kodo dalį.

Code: Select all

if(a>b) {// Jei teisinga vykdomas šis}else {// Jei sąlyga (a>b) neteisinga, vykdoma šis}
else taip pat gali turėti savo sąlygą ir jų gali būti aprašoma daug. Sąlyga tikrins else reikšmes tol, kol jas ras.

Code: Select all

 if(a>b) {// Jei sąlyga teisinga, šis kodas bus vykdomas. Jei ne, jis bus praleistas.}else if(a*b==5) {// Jei (a*b==5) sąlyga teisinga, tai bus įvykdytas šis kodas. Jei neteisingas, tada pereinama prie kito else}else {// Jei visos prieš tai buvusios sąlygos neteisingos, įvykdoma ši.}
Else skaičius nėra ribojamas, bet jei turime patikrinti labai daug reikšmių, pvz kam lygus kintamasis a, tai tada naudosime switch

Switch sąlyga

Ši sąlyga naudojama, kai reikia rasti kažkurią vieną reikšmę ir paleisti jos algoritmą.

Aprašymas:

Code: Select all

switch(a) {case 1: {// Jei a=1, tai iškviečiamas šis atvejis.}case 3: {// Jei a=3 iškviečiamas šis atvejis.}default: {// Jei nė vienas atvejis nėra a reikšmė, tada iškviečiamas šis atvėjis}}
Sąlyga tikrina a kintamąjį ir lygina jo reikšmę su kiekvienu atveju. Jei reikšmė atitinka, paleidžiamas to atvejo algoritmas. Jei naudojamas default atvėjis, jis visada paleis savo algoritmą, bet tik tuo atveju, jei visi kiti atvejai (case (reikšmės) ) bus neteisingi.

Case gali būti ne tik lygus kažkokiam skaičiui, bet gali ir turėti apibrėžimą.

Code: Select all

switch(a) {case 1, 6, 20, 55: {// Jei a lygus 1, 6, 20 arba 50, tada šis algoritmas bus iškviečiamas}case 2, 9, 14, 99: {// Jei a lygus 2, 9, 14 arba 99, tada šis algoritmas bus iškviečiamas}}
Kitaip sakant. Jei atvejyje randama reikšmė, tada naudojamas to atvejo algoritmas.

Code: Select all

switch(a) {case 1..55: {// Jei a lygus nuo 1 iki 55, tada šis algoritmas bus iškviečiamas}case 80..100: {// Jei a lygus nuo 80 iki 100, tada šis algoritmas bus iškviečiamas}}
Tai apibrėžimo srities tikrinimas. Jei kintamajame a skaičius yra tarp atvejo apibrėžimo srities, tada jis bus iškviečiamas.
Tarkim a yra 5. case 1..55 yra visi skaičiai nuo 1 iki 55, tad 5 patenka į šią sritį ir šis atvejis bus iškviečiamas.

Paprastoji sąlyga

Tai yra pati paprasčiausia ir mažiausiai funkcijų turinti sąlyga, bet labai naudinga. Ji aprašoma taip:

Code: Select all

(a>1) ? /*True*/ : /*False*/
Aprašymas gali būti kiek keistokas, bet paaiškinsiu.
(a>1) tai elementari sąlyga. Klausiama ar kintamajame esantis skaičius a didesnis už vienetą. Jei sąlyga teisinga, ir ji gražina tiesą, tada įvykdomas kodas, esantis prieš dvitaškį (:), jei netiesa, kodas esantis po dvitaškio. Ši sąlyga ypatinga tuo, kad ji naudojama ne atskirai nuo kodo, bet jame. Pvz:

Code: Select all

funkcija() {new a, ba = random_num(1, 5)b = random_num(6, 9) return (a*b+20>100) ? (a+2) : (b+1)}
Čia matome elementarią funkciją. Apie return dar nesimokėte, tai bus vėlesnėse pamokose, bet return, gražina kažkokią reikšmę, toje vietoje, kur funkcija iškviečiama. Bet apie tai vėliau.
Čia (a*b+20>100) yra sąlyga. Kompiuteris tikrina ar tai tiesa ar netiesa. Jei tiesa, tada į return perduodama (a+2), jei netiesa, tada perduodama (b+1).

Dar ši sąlyga yra nepamainomas pagalbininkas formatuojant tekstą.

Code: Select all

new hold[100],formatex(hold, charsmax(hold), "Jusu %s adresas yra xxx.xxx.xxx", (is_user_steam[id]) ? "Steam ID" : "IP")
Čia formatuojame tekstą hold kintamajame. Tekstai "Steam ID" arba "IP" bus įdėti pagal sąlygą. Tarkim is_user_steam[id] yra kintamasis, kur parašyta ar žaidėjas yra steamed ar non-steam. Jei is_user_steam[id] yra tiesa, tada įvykdoma tai, kas yra prieš dvitaškį (:), jei netiesa, po dvitaškio ("IP"). Tad pagal is_user_steam[id] bus parodomas reikiamas tekstas.

Šis gidas priklauso Amxmodx.lt forumui.
Bet koks šios informacijos platinimas be autoriaus sutikimo yra griežtai draudžiamas.

User avatar
ShoX
Gana aktyvus vartotojas
Posts: 217
Joined: 2010 Nov 15 19:45
Location: Lithuania

Re: Sąlygos

Post by ShoX »

Gera pamoka manau teko pasedeti nemazai ko surasei tiek daug . saunuolis
reiks pabandyti padaryti su steam id :)

User avatar
aaarnas
Vyr. diskusijų administratorius
Posts: 3891
Joined: 2010 Aug 31 13:21
Skype: fiarno
Contact:

Re: Sąlygos

Post by aaarnas »

Nereikėjo. Tiesiog rašiau viską iš galvos.
Palikau CS pasaulį ;/ . Nebepasiekiamas.

User avatar
zirualas
Gana aktyvus vartotojas
Posts: 216
Joined: 2010 Oct 16 21:33
Skype: zirual
Location: Vilnius
Contact:

Re: Sąlygos

Post by zirualas »

Noriu paklausti del tos switch komandos.
As padarau, kad kiekviena round kintamasis "roundas" padydetu +1. Ir dabar noriu kad man parasytu si sakini "Labas, dabar pradesime zaisti". (zinau kaip teksta isprintinti). Man vienintelis dalykas neiskus. Kaip man padaryti kad si sakyni ismestu 1, 3, 4 rounda?

Code: Select all

switch(a){    case 1, 3, 5:    {        client_print(id, print_chat, "Labas, dabar pradesime zaisti")    }} 
Cia mano variantas, dabar tik klausiu kaip padaryti, kad tuos pirmus trecius penktus roundus ismestu ta teksta?

newb
Pluginų patvirtintojas
Posts: 1047
Joined: 2010 Sep 23 21:43
Location: Wonderland
Contact:

Re: Sąlygos

Post by newb »

Paprasciausias ^^

Code: Select all

if(a == 1 || a == 3 || a == 5)    client_print(id, print_chat, "Labas, dabar pradesime zaisti"
Nu bet manau gerai kaip ir tu padarei.

-- 2011 Sau 22 19:36 --

Bet dar galma paprikolint ir taip :D

Code: Select all

if(a < 6 && a % 2)
Last edited by newb on 2011 Jan 22 23:06, edited 2 times in total.

User avatar
zirualas
Gana aktyvus vartotojas
Posts: 216
Joined: 2010 Oct 16 21:33
Skype: zirual
Location: Vilnius
Contact:

Re: Sąlygos

Post by zirualas »

Arnai, galetum padaryti pamoka su for funkcijomis tomis.

User avatar
aaarnas
Vyr. diskusijų administratorius
Posts: 3891
Joined: 2010 Aug 31 13:21
Skype: fiarno
Contact:

Re: Sąlygos

Post by aaarnas »

Bus ir funkcijos ir kita su laiku. Užima kiek laiko parašyti pamokas.
Palikau CS pasaulį ;/ . Nebepasiekiamas.

User avatar
evukas001
Ar galit patikėti? Jis jau parašė 20 žinučių
Posts: 22
Joined: 2011 Mar 16 20:41
Skype: evaldas2611
Location: Skuodas

Re: Sąlygos

Post by evukas001 »

fsio, reiks pradet mokytis inforamtika :D kaip tik mokomes algoritmus visokias komandas,sviezios naujos knygos. bandom rasyt programeles su else, if, writeLn..... ir zaidziam su funkcijomis (grafikais) funkcijos matematiskai lengva isprest, tiesiog saldainiukai man ;D bet cia, kazkas idomaus. Ziauriai susidomejau Scriptingu. :shok:
Tik mes naudojam kitoke programa ,, paskalio programa" (FPS) o kuo si programa skiriasi pvz nuo Pawn?
Image

Image

User avatar
aaarnas
Vyr. diskusijų administratorius
Posts: 3891
Joined: 2010 Aug 31 13:21
Skype: fiarno
Contact:

Re: Sąlygos

Post by aaarnas »

Paskalis yra programavimo kalba, kaip ir bet kuri kita. Informatikos egzaminą gali laikyti su pawn arba C++ kalba. Jei nori, gali mokytis dar ir C++ savarankiškai, bet ten daug sudėtingiau.
Palikau CS pasaulį ;/ . Nebepasiekiamas.

User avatar
evukas001
Ar galit patikėti? Jis jau parašė 20 žinučių
Posts: 22
Joined: 2011 Mar 16 20:41
Skype: evaldas2611
Location: Skuodas

Re: Sąlygos

Post by evukas001 »

Esu nusiteikes mokytis, tikrai suzavetas skriptingu :) as siaip turiu siek tiek ziniu, tik reik taikyt prie cs ir nelabai sekas, bet per laika perprasiu. Megstu galvosukius :D
Image

Image

Post Reply

Who is online

Users browsing this forum: No registered users and 4 guests