
- •Символьний тип даних
- •1 Мета роботи
- •2 Основні теоретичні відомості
- •2.1. Описування та присвоєння значень даним символьного типу
- •У цьому фрагменті програми змінна k містить кількість фактично введених символів. Значення k визначається за допомогою властивості GetTextLen компонента edit.
- •2.2 Стандартні функції над даними типу Char
- •1) Функція
- •2) Функція
- •2.3 Операції над символами
- •3 Приклади програм
- •3.1 Приклад 1
- •3.2 Приклад 2
- •3.3 Приклад 3
- •4 Контрольні запитання
- •5 Лабораторне завдання
- •Варіанти завдань до роботи на комп’ютері
3 Приклади програм
3.1 Приклад 1
Завдання. Скласти проект програми, яка виводить в компонент Label всі літери кирилиці (починаючи з коду 192).
Форму та результати роботи проекту наведено на рис.7.1.
Текст підпрограми-відгуку на кнопку “Пуск”:
procedure TForm1.Button1Click(Sender: TObject);
Var ki:byte; {змінна з кодом символу}
i,k:integer; s:string;
begin
for i:=0 to 15 do {цикл виведення результатів у 16 рядків}
begin
ki:=i+192;
for k:=1 to 4 do {цикл виведення результатів у 4 стовпчика}
begin
s:=s+chr(ki)+' - '+inttostr(ki)+' ';
ki:=ki+16;
end;
s:=s+#13; {перехід до наступного рядка результату}
end;
label2.caption:=s;
end;
3.2 Приклад 2
Завдання. Скласти проект програми, котра вводить символьний масив з 10-ти чи меншої кількості елементів і замінює в ньому всі знаки ‘.’ (крапка) та ‘,’ (кома) на знак ‘+’. Для введення масиву та виведення результатів використовувати компонент Edit.
Форму проекту та результати роботи програми наведено на рис.7.2.
Рисунок 7.2 – Форма проекту прикладу 2
Текст програми:
Unit unit1;
………..
implementation
{$R *.DFM}
type tchararr=array[1..10] of char;
// текст підпрограми заміни символів
procedure zamina (k:integer; s1: tchararr; var s2: tchararr);
var i:integer;
begin
for i:=1 to k do
if (s1[i]=',') or (s1[i]='.') then s2[i]:='+' else s2[i]:=s1[i];
end;
// текст підпрограми-відгуку на кнопку “Розв’язок”
procedure TForm1.Button1Click(Sender: TObject);
var str1,str2:tchararr; i,k:integer;
begin
{ введення масиву символів}
k:=Edit1.GetTextLen;
if k=0 then begin ShowMessage( 'Мaсив порожній!'); exit; end;
if k>10 then n:=10;
for i:= 1 to k do
str1[i]:=edit1.text[i];
{ виклик підпрограми заміни символів}
zamina(k,str1,str2);
{ виведення символьного масиву в Edit}
Edit2.Text:=’’;
for i:=1 to k do
edit2.text:= edit2.text+str2[i];
end;
………
end.
3.3 Приклад 3
Завдання. Написати проект програми, котра вводить символьну матри-цю розміром 3х3 і визначає, чи є в ній символи W або w. Для введення даних використовувати компонент Memo, для виведення результату – компонент Edit.
Форму та результати роботи проекту програми наведено на рис 7.3.
У
Рисунок 7.3 – Форма проекту прикладу 3
Текст програми:
…………………
implementation
{$R *.DFM}
type matr=array[1..3,1..3] of char;
// текст підпрограми визначення наявності символів W або w в матриці
procedure Wwsimv(n,m:integer;mas:matr;var vidp:boolean);
var i,j:integer;
begin
vidp:=false;
for i:=1 to n do
for j:=1 to m do
if (mas[i,j]='W') or (mas[i,j]='w') then
begin
vidp:=true; exit
end;
end;
// текст підпрограми-відгуку на кнопку “СТАРТ”
procedure TForm1.Button1Click(Sender: TObject);
var a:matr;i,j:integer;
vidpov:boolean;
s:string;
begin
{ введення матриці з компоненту Memo}
for i:=1 to 3 do
for j:=1 to 3 do
a[i,j]:= memo1.lines[i-1] [j];
{виклик підпрограми Wwsimv}
Wwsimv(3,3,a,vidpov);
{ виведення результату в компонент Edit}
if vidpov=true then edit1.text:='входить'
else edit1.text:='не входить';
end;