2.4 Klaviaturadan so’z kiritish
Xuddi shu masalani satrni klaviaturadan kiritish variantini ham yasash mumkin. Bu uchun dasturga quyidagi o’zgartirishlarni kiritamiz:
implement main
open core, string, console, stdio
class predicates
tokenize:(string, string_List) procedure (i,o).
clauses
tokenize(S, [T|Ts]) :-
frontToken(S, T, R), !, tokenize(R, Ts).
tokenize(_, []).
run():- console::init(),
Text=stdio::readLine(),
tokenize( Text, List),
stdio::write(List), stdio::nl,
S= concatList(List),
stdio::write(S), stdio::nl,
UCase= toUpperCase(S),
RR= string::concat("Katta harflar bilan: ", Ucase),
stdio::write(RR ), stdio::nl.
end implement main
goal
mainExe::run(main::run).
Yuqoridagi dasturni o’zgartirishlar natijasida biz klaviaturadan so’z kiritib shu so’zni katta harf bilan yozishga va sozlarni qo’shib yozishga erishdik.
2.5 Satrni oldiga bo’sh qolgan joyga yulduzcha(*) belgisini qo’yish dasturi
Quyidagi dastur ham satrlar bilan bog’liq . bu yerda satrni 60 ta sanab shunga qarab satrni oldiga bo’sh qolgan joyga yulduzcha(*) belgisini qo’yadi.
implement main
clauses
classInfo("main", "adjust_example").
run():- console::init(),
FstLn= "Rage ––"
" Goddess, sing the rage of Peleus' son Achilles,",
Str= string::adjust(FstLn, 60, "*", string::right),
stdio::write(Str), stdio::nl.
end implement main
goal mainExe::run(main::run).
Bu dasturda Right satrni o’ngga suradi. Left esa satrni chapga suradi. Quyidagi dasturda esa so’zlarni orasiga vergul qo’yib chiqaradi
implement main
clauses
classInfo("main", "stringops").
run():-
console::init(),
SndLn= [ "murderous", "doomed",
"that cost the Achaeans countless losses"],
Str= string::concatWithDelimiter(SndLn, ", "),
Rule= string::create(20, "-"),
stdio::write(Str), stdio::nl,
stdio::write(Rule), stdio::nl.
end implement main
goal mainExe::run(main::run).
Yuqoridagi dasturdan quyidagi qatorda orasiga vergul(,) belgisini qo’yadi.
Str= string::concatWithDelimiter(SndLn, ", "),
Quyidagi qatorda satrni 15ta plus(+) ishorasiga ko’paytiriladi.
Rule= string::create(15, "+"),
Dasturining to’liq ko’rinishi quyidagicha:
implement main
clauses
% classInfo("main", "stringops").
run():-
console::init(),
SndLn= [ "murderous", "doomed",
"that cost the Achaeans countless losses"],
%yuqorida satrni o'zi chiqadi
Str= string::concatWithDelimiter(SndLn, ", "),
% quyida pluslar soni 15ta chiqadi
Rule= string::create(15, "+"),
stdio::write(Str), stdio::nl,
stdio::write(Rule), stdio::nl.
end implement main
goal mainExe::run(main::run).
Bu dasturni kiritib ishlatsak quyidagicha rasm hosil bo’ladi.
(2.1-rasm) 15 ta plus chiqaruvchi dasturni ko’rinishi
Dasturda shu so’zlarni yozdi va 15ta (+) plus ishorasini ekranimizga chiqardi.
Ro’yxat deb tartiblashtirilgan bir xil tipdagi elementlar to’plamiga aytiladi. Ro’yxatning 1-o’lchovli massivdan farqi shundaki, ro’yxatdagi elementlar soni ixtiyoriy bo’lishi mumkin va uning ustida bajariladigan odatdagi operatsiyalar- ro’yxatdan olish va ro’yxatga qo’shish. Prologda ro’yxat elementlari “,” orqali ajratilib, ro’yxatming o’zi kvadrat qavs (“[”, “]”) ichida joylashtiriladi. Ro’yxatda birinchi element(head) va dum qismi (tail) ga ajratiladi
Ro’yxat uchun shablon yasash mumkin. Shablon ham xuddi ro’yxatga o’xshash tuziladi, faqat elementlar o’rniga o’zgaruvchilar qo’yiladi va bu o’zgaruvchilar o’zaro “,” bilan emas, balki “|” simvoli bilan ajratiladi. Har bir o’zgaruvchi ro’yxatdan mos elementni, agar shunday element ro’yxatda mavjud bo’lsa, qiymat qilib oladi, agar bo’lmasa o’zgaruvchining qiymati aniqlanmagan hisoblanadi. Agar shablondagi oxirgi o’zgaruvchi uchun element qolsa, u ro’yxatning qolgan dumini qiymat sifatida oladi. Masalan, yuqorida ko’rsatilgan ro’yxatlar uchun [X|Xs] shablon asosidagi X va Xs o’zgaruvchilarning qiymatlari quyidagicha aniqlanadi:
Ro’yxat
|
Tipi
|
X
|
Xs
|
[12,4,25,27,10]
|
Integer
|
12
|
[4,25,27,10]
|
[“salom”,”ss1”]
|
String
|
“salom”
|
[,”ss1”]
|
[4]
|
Integer
|
4
|
[]
|
[12.24, 4.0, 123.23]
|
Real
|
12.24
|
[4.0, 123.23]
|
(2.2-jadval)
[X|Y|Z] shablon asosidagi X, Y va Z o’zgaruvchilarning qiymatlari quyidagicha aniqlanadi:
Ro’yxat
|
Tipi
|
X
|
Y
|
Z
|
[12,4,25,27,10]
|
integer
|
12
|
4
|
[25,27,10]
|
[“salom”,”ss1”]
|
string
|
“salom”
|
“ss1”
|
[]
|
[4]
|
integer
|
4
|
?
|
?
|
[12.24, 4.0, 123.23]
|
Real
|
12.24
|
4.0
|
[123.23]
|
(2.3-jadval)
Do'stlaringiz bilan baham: |