Напишем программу, которая будет вводить с клавиатуры слово в одном регистре (строчными буквами) и выводить на экран это же слово в другом регистре (прописными буквами).
Программа, которая вводит слово в одном регистре и выводит в другом.
В строке №3 записываем процедуру. Процедуры в Паскаль могут иметь формальные параметры, а могут не иметь их. В нашем примере процедура с названием «upstring» (название мы придумываем сами) имеет формальные параметры. Формальные параметры для процедуры указываются в круглых скобках сразу же за именем процедуры. В нашем примере формальный параметр «s1: string» называется параметр-значение, а «s2: string» - параметр-переменная. Параметр-значение используется для определения входных данных. Например, в нашей программе мы будем вводить с клавиатуры какое-то слово. Это слово и будет входными данными. Параметр-переменная используется для определения выходных данных. В нашей программе после введения какого-то слова должно получится то же самое слово, только в другом регистре. Это слово является выходными данными. Параметры отделяются друг от друга точкой с запятой. Перед параметром - переменной, который определяет выходные данные, ставится слово «var». Таким образом, получается, что «s1» является переменной для хранения исходного слова (которое мы будем вводить с клавиатуры), а «s2» будет являться переменной для хранения преобразованного слова.
В строке №4 объявляется переменная «i», которая будет являться счетчиком для цикла. В нашей программе мы будем использовать цикл, поэтому обязательно необходимо указывать переменную, которая будет являться счетчиком для этого цикла.
В строке №5 объявляется переменная для хранения преобразованной буквы.
Строка №6. Здесь начинается тело процедуры, т.е. далее будут расположены все операторы процедуры.
Строка №7. Первый оператор в процедуре – это присвоение переменной s2 значение пустой строки. Переменная s2, используется для хранения выходной строки, т.е. той строки, которая получится после преобразования. Пока в этой переменной ничего не должно быть, поэтому мы присваиваем ей пустое значение.
Стока №8. Здесь записываем цикл. Для каждого элемента, начиная с первого, и заканчивая последним, должны выполняться действия, которые следуют за словом «do». Функция length определяет количество символов во входной строке s1. Например, если мы введем слово «pascal», то length(s1) будет равно 6. Таким образом, получается, что в цикле будет участвовать 6 элементов. 1-ому элементу – соответствует значение «p», 2-ому элементу – «a», 3-му – «s», 4-ому – «c», 5-ому – «a», 6-ому – «l». Для всех этих элементов должны выполняться операции, которые следуют за словом «do». Так как этих операций несколько они заключаются в операторные скобки begin…end. (строка №9 и №13).
Строка №10. Здесь записывается первая операция, которая производится с каждым элементом. Переменной «с» присваивается значение элемента s1[i]. Первый элемент «i» равен 1, а значение первого элемента s1[i] равно «p» (если мы вводим с клавиатуры слово «pascal»).
В строке №11 переменной «с», которая содержит значение первого элемента «p» присваивается новое значение. Теперь разберемся, что это за значение.
Если мы посмотрим Кодовую таблицу ASCII, то увидим, что прописные буквы латинского алфавита имеют числовой код, который отстает от числового кода соответствующих строчных букв на 32. Например, код буквы «A» равен 65, код буквы «a» равен 97. Разница равна – 32. То же самое получается со всеми другими буквами латинского алфавита.
Теперь разберем формулу chr(ord(‘A’)– ord(‘a’) + ord (c)) .
1-ая операция - ord(‘A’) = 65
2-ая операция - ord(‘a’) = 97
3-я операция - ord(с) = 112 (если первое значение переменной – буква «p»)
Теперь 65-97+112 = 80. Смотрим Кодовую таблицу ASCII и видим, что коду числовому 80 соответствует латинская буква «P»
3-я операция – chr = P.
Таким образом, получается, что строка №10 присваивает переменной «с» туже самую букву, только в другом регистре. Можно было сделать проще: просто отнять от числового кода буквы число 32: chr(ord (c) - 32).
Строка №11. Записываем в переменную «s2» значение, которое получается при сложении первоначального s2 (оно имеет пустое значение) и переменной «с», которая теперь имеет значение «P».
Все операции, которые записаны в строках №10-№12 будут производиться над всеми 6-ю элементами, благодаря циклу в строке №8.
В строке №14 заканчивается тело процедуры.
В строке №15 записываются переменные, которые относятся уже к основной программе. Переменная «isxstroka» будет использоваться для хранения исходного слова.
Переменная «preobrstroka» будет использоваться для хранения преобразованного слова.
Строка №19. Вводим с клавиатуры исходное слово, например, «pascal».
В строке №20 записываем имя нашей процедуры и в скобках указываем фактические параметры. Фактический параметр «isxstroka» соответствует формальному параметру «s1», а фактический параметр «preobrstroka» соответствует формальному параметру «s2».
Строка №21. После того как процедура будет выполнена на экран выведется сообщение.
Та же самая задача, но с использованием русский букв, будет выглядеть так:
В строке №12 используются русские буквы "А" и "а".
В строке №14 используются русские буквы "Р" и "р"
Предыдущая статья : Процедуры в Паскаль.
Оглавление : Уроки Паскаль. Процедуры и функции.
Следующая статья : Функция KeyPressed.
Комментарии
uses crt;
type dan=record
fam:string[15];
god_rog:integer ;
end;
var
vvod:array[1..3 0] of dan;
baza:file of dan;
i:integer;
begin {1}
clrscr;
for i:=1 to 30 do begin
Writeln('Введите фамилию');
readln(vvod.fam);
Writeln('Введите год рождения');
readln(vvod.god_rog);
end;
assign(baza,'D:/base_of_data.dat');
rewrite(baza);
for i:=1 to 30 do
write(baza, vvod);
close (baza);
end.
Следующая программа производит поиск в этом файле. Вы вводите фамилию (большими или маленькими буквами), на экран выводится фамилия и год рождения. При этом, следует учитывать, что в первой программе (когда вы создаете 30 записей) фамилии необходимо вводить в нижнем регистре.
uses crt;
type dan=record
fam:string[15];
god_rog:integer ;
end;
var
vvod:dan;
baza:file of dan;
i:integer;
kolsimfam:byte;
fampoisk1:strin g[15];
fampoisk2:string[15];
begin
clrscr;
assign(baza,'D:/base_of_data.dat');
reset(baza);
Writeln ('Введите фамилию. Достаточно ввести лишь несколько символов');
readln(fampoisk1);
kolsimfam:=length (fampoisk1);
while not eof(baza) do
begin
read(baza,vvod);
fampoisk2:=copy(vvod.fam,1,kolsimfam);
if (fampoisk1=famp oisk2) or (fampoisk1=upca se(fampoisk2)) then
begin
writeln ('ФИО -',vvod.fam);
write ('Год рож.-',vvod.god_rog);
end;
end;
close(baza);
readln;
end.
Program odnogruppniki;
Uses crt;
type opisanie= record
imya: string;
familiya: integer;
adress: string;
telefon: string;
end;
var fer: opisanie;
a: file of opisanie;
b: integer;
begin
clrscr;
writeln ('Для ввода информации нажмите 1’);
writeln ('Для вывода нажмите 2');
writeln ('Для выхода 3');
readln (b);
case b of
1: begin
clrscr;
writeln ('Введите данные');
writeln;
writeln ('?Имя ');
readln (fer.imya);
writeln (‘Фамилия: ');
readln (fer.familiya);
writeln ('адрес: ');
readln (fer.adress);
writeln ('Телефон: ');
readln (fer.telefon);
assign (a, 'C.group.txt');
reset (a);
seek (a, filesize (a));
write (a, fer);
close (a);
readln;
end;
2: begin
assign (a, 'C:\group.txt') ;
reset (a);
while not eof (a) do
with heros do
begin
read (a, fer);
writeln (imya:16,' ', familiya:4,' ', adress:18,' ', telefon:7);
end;
readln;
close (a);
end;
end;
end.
вам виднее что у вас за игра в голове)
думаю подобная программа полезна для каких то программ, веб-сайтов где учитывается регистр букв или нужно выводить в таблицах какой то расчетной программы слова с определенным регистром, например пользователю дается возможность вводить данные в любом виде а в таблице будет выводиться данные в таком каком прикажите вы программе. как это может относится к играм я даже придумать не могу)
главное что это есть в вашем любимом Паскале
begin
var s := ReadAllLines('1 .txt');
s[8] := 'hello people';
WriteAllLines(' 1.txt', s);
end.