Символьные переменные и строки языка Pascal

Содержание

Слайд 2

В Pascal существует стандартный тип данных, который называется символьным CHAR. Этот

В Pascal существует стандартный тип данных, который называется символьным CHAR. Этот

тип является порядковым и значение таких переменных могут сравниваться между собой .
К символьным переменным относятся
все заглавные латинские буквы ‘A’ ‘B’ ‘C’ . . . ‘Z’ ,
строчные ‘а ‘b’ ‘с . . . ‘z’, цифры ‘0’ ‘1’ ‘2’. . . ‘9’,
знаки препинания,
всевозможные скобки , русские буквы и т.д.
Внутри каждого такого ряда коды символов упорядочены:
‘A’ < ‘B’< ‘C’ <. . .< ‘Z’
‘а < ‘b’ < ‘с < . . . < ‘z’
‘0’< ‘1’ < ‘2’ < . . . < ‘9’
‘А’ < ‘Б’ < ‘В’ < . . . <‘Я’
‘а’ < ‘б’ < ‘в’< . . . < ‘я’
Коды всех строчных букв меньше
Слайд 3

const d=’7’; var a,b,c,x,y: char; begin writeln(’ввести символьные переменные: a, b,

const d=’7’;
var
a,b,c,x,y: char;
begin
writeln(’ввести символьные переменные:
a, b, c’);
read

(a, b, c);
writeln (a, b, c);
x:=’Р’;
y:=’Ф’;
writeln ( x, y, d);
end.
Слайд 4

Для работы с этим типом данным часто используются функции, аргументы которых

Для работы с этим типом данным часто используются функции, аргументы которых

могут быть только символьные переменные:
ORD(X) — определяет порядковый номер символа X, например ORD('R')=82. ORD(‘7’)-ORD(‘0’)=7.
CHR(X) — определяет символ, стоящий по порядковому номеру Х, например: CHR(68)='D';
PRED(X — определяет предыдущий символ по отношению к Х, например:
PRED('N')='M'; PRED( ‘В’)=‘А’;
SUCC(X) — определяет последующий символ по отношению к Х, например: SUCC('R')='S'. SUCC( ‘а)=‘b’;
Upcase(x) - преобразует строчные символы в прописные (только латинские буквы)
Символьные переменные могут использоваться как переменные цикла, например :
FOR I:= 'Z‘ DOWNTO 'A' DO или FOR I:='A' TO 'Z' DO.
Слайд 5

Пример программы вывода на экран символов (букв) от A до Z:

Пример программы вывода на экран символов (букв) от A до Z:
program

Simbol; {Данные символьного типа}
uses crt;
var i:Char;
begin
clrscr;
writeln('Вывод на экран букв от A до Z:');
for i:='A' to 'Z' do
write(' ',i);
writeln;
writeln('Выход-любая клавиша.');
readkey;
end.
Слайд 6

ВЫВЕСТИ В ОДНУ СТРОКУ A B B C C C .

ВЫВЕСТИ В ОДНУ СТРОКУ A B B C C C .

. . Z Z ...Z.

PROGRAM PRG4_1;
VAR I: CHAR;
K,J: INTEGER;
BEGIN
K:=1;
FOR I:='A' TO 'Z' DO
BEGIN
FOR J:=1 TO K DO
WRITE(I);
K:=K+1
END;
WRITELN
END.

Слайд 7

PROGRAM PRG4_2; VAR I: CHAR; K,J: INTEGER; BEGIN K:=1; FOR I:=

PROGRAM PRG4_2;
VAR I: CHAR;
K,J: INTEGER;
BEGIN
K:=1;
FOR I:= 'Z‘ DOWNTO

'A' DO
BEGIN
FOR J:=1 TO K DO
WRITE(I);
K:=K+1
END;
WRITELN
END.

ВЫВЕСТИ В ОДНУ СТРОКУ ZYY.. . A A ...A .

Слайд 8

ВЫВЕСТИ ТРЕУГОЛЬНИК A B C . . . Z B C

ВЫВЕСТИ ТРЕУГОЛЬНИК
A B C . . . Z
B

C . . . Z
Z

PROGRAM PRG4_3;
VAR I,L: CHAR;
J: INTEGER;
BEGIN
L:='A';
FOR J:=1 TO 26 DO
BEGIN
FOR I:='A' TO L DO
WRITE(' ');
FOR I:=L TO 'Z' DO
WRITE(I);
WRITELN;
L:=SUCC(L);
END;
END.

Слайд 9

Найти в массиве символьных переменных, введенном с клавиатуры, количество вхождений символа

Найти в массиве символьных переменных, введенном с клавиатуры, количество вхождений символа

‘f’.
var
a: array[1..100] of char;
i,k,n: integer;
begin
write(‘ввести размер массива-k’);
readln(k);
for i:=1 to k do
begin
write(‘ввести элемент массива a[‘,i,’]=’);
readln(a[i]);
if a[i] =’f‘ then n:=n+1;
end;
writeln(‘n=’,n);
end.
Слайд 10

Последовательность символов, заключенная в апострофы, называется строкой и описывается типом STRING:

Последовательность символов, заключенная в апострофы, называется строкой и описывается типом STRING:

‘ASEWQ’ , ‘zxczxczxc’, ‘ хи-хи‘ и т.д.
Строки, состоящие всего из одного символа, называются символьными константами.
У типа-строки может быть указан размер ( от 1 до 255 ).
Описание строковой переменной.
string (строка) – тип строковой переменной;
Пример :
Var A : string ; { по умолчанию длина строки максимальна -255 символов}
B : string [ 40 ] ; {длина строки 40 символов}
По сути, строка длины К представляет собой массив из К+1 символьных переменных,
где нулевой элемент хранит значение длины строки:
STRING[K]=ARRAY[0..K] OF CHAR.
Для строк часто используется функция длины LENGTH(STR) .
Слайд 11

Операции со строковыми переменными 1) присваивание пример: z:= text; 2) конкатенации,

Операции со строковыми переменными
1) присваивание
пример: z:= text;
2) конкатенации, объединение

(+) : ‘мото’ + ’цикл’=‘мотоцикл’.
Слайд 12

var text,z: string; a,b,c: string [30]; begin a:=’ студенты ’ ;

var text,z: string;
a,b,c: string [30];
begin
a:=’ студенты

’ ;
b: = ’ 1 курса ’ ; writeln (a, b);
c: =a+b+ ' ТГУ ’; {объединение строковых переменных }
writeln (c);
Writeln('ввести любой текст-text');
Readln(text);
z:=c+ text;
writeln (z);
end.
Слайд 13

Для строк выполняются операции сравнения, например ‘viv’ Пример: IF a=b THEN

Для строк выполняются операции сравнения, например ‘viv’<‘viva’ ,

Пример:
IF a=b THEN Writeln

(‘ равны‘ ) else Writeln (‘ нет ‘) ;
Слайд 14

Слайд 15

Слайд 16

ДАНА СТРОКА СИМВОЛОВ. УДАЛИТЬ ИЗ НЕЕ ПЕРВЫЙ ЗНАК ПРЕПИНАНИЯ. Program prg4_4;

ДАНА СТРОКА СИМВОЛОВ. УДАЛИТЬ ИЗ НЕЕ ПЕРВЫЙ ЗНАК ПРЕПИНАНИЯ.

Program prg4_4;
var str:

string;
l,i,j: integer;
m: set of char;
begin
m:=['.',',','!',':',';','?','-'];
writeln('введите текст');
readln(str);
l:=length(str);
for i:=1 to l do
if not(str[i] in m) then write (str[i])
else break;
for j:=i+1 to l do
write(str[j]);
writeln
end.
Слайд 17

ДАНА СТРОКА СИМВОЛОВ. ЗАМЕНИТЬ В НЕЙ ВСЕ ВОСКЛИЦАТЕЛЬНЫЕ ЗНАКИ НА ЗАПЯТЫЕ.

ДАНА СТРОКА СИМВОЛОВ. ЗАМЕНИТЬ В НЕЙ ВСЕ ВОСКЛИЦАТЕЛЬНЫЕ ЗНАКИ НА ЗАПЯТЫЕ.

program

prg4_6;
var str1: string;
L,i: integer;
begin
writeln('введите текст');
readln(str1);
L:=length(str1);
writeln('преобразованный текст');
for i:=1 to L do
if (str1[i] ='!') then str1[i]:=‘,’
Writeln (str1)
end.
Слайд 18

Ввести с клавиатуры строку, содержащую не более 20 символов. Подсчитать сколько

Ввести с клавиатуры строку, содержащую не более 20 символов. Подсчитать сколько

раз символ f встречается в данной строке.

var
text: string[20]; i, k, n: integer; begin writeln(’ввести строку’); read(text);
k:=0; n:=length(text);
for i:=1 to n do
if text[i] = ‘f’ then k:=k+1;
writeln(‘буква f встречается’, k, ‘ раз’);
end.

Слайд 19

Ввести с клавиатуры строку, содержащую не более 20 символов. Подсчитать сколько

Ввести с клавиатуры строку, содержащую не более 20 символов. Подсчитать сколько

раз символ f встречается в данной строке, но с использованием стандартной функции pos(...)
Слайд 20

var text1,text:string; i,k,r,n:integer; begin writeln('str'); read(text); i:=1; text1:=text; r:=0; repeat k:=pos('f',text1);

var text1,text:string; i,k,r,n:integer;
begin
writeln('str'); read(text);
i:=1; text1:=text; r:=0;
repeat
k:=pos('f',text1);

{ищет номер позиции символа-f}
if k<>0 then {изменяется строка}
begin
r:=k+r; {запоминается позиция символа-f }
delete(text1,1,k); {удаляется часть строки до символа-f }
i:=i+1;
end;
until k=0;
n:=i-1; {количество символов-f }
writeln('колич. символов n=',n);
end.
Слайд 21

В тексте, введенном с клавиатуры, все гласные заменить на согласную ‘p’.

В тексте, введенном с клавиатуры, все гласные заменить на согласную ‘p’.

var

text,G: string; i,j: integer;
begin
writeln (‘введите текст’);
readln(text); {ввод текста с клавиатуры}
G:=’аеиоиуэюя’; {строка гласных}
for i: =1 to length(text) do
for j:=1 to length(G) do
begin
if copy( text, i,1) = copy (G,j,1) then
begin
delete(text,i,1);
insert(‘p’, text, i);
end;
end;
writeln(text);
end.
Слайд 22

В тексте, введенном с клавиатуры, подсчитать количество фрагментов -y var text:

В тексте, введенном с клавиатуры, подсчитать количество фрагментов -y

var

text: string[60];
y: string[20];
i, k: integer;
begin
writeln(’ввести текст’);
readln(text); {ввод текста с клавиатуры}
writeln(’ввести фрагмент -y’); readln(y); {ввод фрагмента с клавиатуры }
for i: =1 to length(text)-length(y)+1 Do
if copy(text, i, length(y))=y then k: =k+1;
writeln(‘k = ‘, k);
end.
Слайд 23

Из текста, введенного с клавиатуры, удалить фрагмент-y. Вставить фрагмент-z вместо удаленного

Из текста, введенного с клавиатуры, удалить фрагмент-y. Вставить фрагмент-z вместо удаленного

фрагмента-y.

var
text,y,z: string;
n,k : integer;
begin
writeln(‘ввести текст – text’)
readln(text); {ввод текста с клавиатуры}
writeln(‘ввести фрагменты – y,z’);
readln(y,z); {ввод фрагментов}
k:=length(y); {количество символов в фрагменте-y}
n:=pos(y,text); {номер позиции вхождения фрагмента-y в тексте}
delete(text,n,k); {Удаляет фрагмент-y из текста}
insert(z,text,n); {Вставляет в текст фрагмент-z}
writeln (text);
end.

Слайд 24

Создать строковую переменную из цифр и удалить из нее три символа

Создать строковую переменную из цифр и удалить из нее три символа

со второй позиции. Преобразовать полученную строковую переменную в числовую и произвести с ней арифметические операции.
var s: string [60];
x, z :integer;
y : byte;
begin
s:=''; {пустая строка }
s:=s+ ’123’; writeln (s);
s:=s+ ’765’; writeln (s);
delete (s, 2, 3); writeln (s);
val(s, x, y); writeln (’x=’; x);
z:=x-25; writeln (’z=’; z);
end.
Слайд 25

var w: string; x:longint; r,k,z: integer; y: byte; begin writeln(’ввести число-x’);

var
w: string; x:longint; r,k,z: integer; y: byte;
begin
writeln(’ввести

число-x’); readln(x); {ввод числа с клавиатуры}
str(x,w); {Преобразует числовое-x в строковое значение:w }
k:=length(w),
if copy(w,1,l)=’5’ then
if copy (w,k,l)=’5’ then
begin
delete(w,1,1); insert('3',w,1); delete(w, k,1); insert('3',w,k); end;
val(w,r,y); {Преобразует строковое значение:w в число-r}
z:=r*2;
writeln(’x=’,x); writeln(’w=’,w);
writeln(’r=’,r); writeln(’z=’,z);
end.

Для произвольного целого числа X определить равна ли 5 первая и последняя цифры числа. Если да, заменить их цифрой 3. Полученное число увеличить вдвое.

Слайд 26

Ввести с клавиатуры несколько предложений. Найти предложения, которые начинаются и заканчиваются

Ввести с клавиатуры несколько предложений.
Найти предложения, которые начинаются и заканчиваются

на одну и ту же букву.
Сформировать новый текст, состоящий из таких предложений.
Слайд 27

Var a:array[1..15] of string; b:array[1..15] of string; text:string; p,i,k,n:integer; begin writeln('k');

Var a:array[1..15] of string; b:array[1..15] of string;
text:string; p,i,k,n:integer;
begin
writeln('k'); readln(k);

{ввод колич. предложений}
p:=0;
for i:=1 to k do
begin
writeln('ввести ’,’i,’ предложение'); readln(a[i]);
text:=a[i]; n:=length(text);
if text[1]=text[n] then
begin
p:=p+1
b[p]:=text;;
end;
end;
writeln('вывод новой строки');
for i:=1 to p do
writeln('b=',;b[i]);
end.
Слайд 28

Удалить из строки все "лишние" (парные) пробелы. begin writeln ('Удаление парных

Удалить из строки все "лишние" (парные) пробелы.

begin
writeln ('Удаление парных пробелов.');

writeln ('Введите строку:' );
readln (s);
I:=pos (' ', s);
if l=0 then writeln ('Удаления не было')
else
begin
while l >0 do {пока в строке есть парные пробелы}
begin
delete (s,pos (' ',s), 1);
I:=pos (' ',s)
end;
writeln ('Получена строка:');
writeln (s);
end;
end.
Слайд 29

В данном массиве из слов подсчитать количество слов, начинающихся и заканчивающихся

В данном массиве из слов подсчитать количество слов, начинающихся и заканчивающихся

гласной буквой.

const maxn = 100;
var s: array [1..maxn] of string; l,n,i,k,m:integer;
begin
writeln ('n='); readln (n);
writeln ('вводите элементы массива s');
for i:=1 to n do
readln (s[i]);
k:=0;
for i:=1 to n do
begin
m:= length (s[i]);
if (pos(s[i][1],'аоиуеыэюя АОИУЕЫЭЮЯ') > 0)
and (pos(s[i][m],'аоиуеыэюя АОИУЕЫЭЮЯ') > 0)
then k:=k+1
end;
writeln ('k=',k)
end.

Слайд 30

Var S1, S2:string; Begin Write(‘Введите строку’); Readln(S1); S2:= ‘ ‘; For

Var S1, S2:string;
Begin
Write(‘Введите строку’);
Readln(S1);
S2:=

‘ ‘;
For i:=1 to length(S1) do
If (S1[i]>=’0’) and (S1[i]<=’9’) Then S2:=S2+S1[i];
Writeln(‘Результат’, S2)
End.  

Из данной символьной строки выбрать все цифры и сформировать другую строку из этих цифр, сохранив их последовательность.

Слайд 31

Составить программу, определяющую количество слов в произвольном тексте, введенном с клавиатуры

Составить программу, определяющую количество слов в произвольном тексте, введенном с клавиатуры

.
Составить программу, заменяющую в произвольном тексте, введенном с клавиатуры, все согласные буквы на одну заданную гласную.
В тексте, введенном с клавиатуры, :заменить слово «Фортран» на слово «Бейсик».
В произвольном тексте, введенном с клавиатуры, удалить фрагмент, заключенный в круглые скобки.
Составить программу, позволяющую в тексте, введенном с клавиатуры, между словами - Бейсик и Фортран вставить слово «Паскаль».
Слайд 32

Определить длины всех слов, входящих в произвольный текст, введенный с клавиатуры.

Определить длины всех слов, входящих в произвольный текст, введенный с клавиатуры.

Составить программу, позволяющую печатать самое длинное слово из произвольного текста, введенного с клавиатуры.
Составить программу, позволяющую печатать самое короткое слово из произвольного текста, введенного с клавиатуры.
Составить программу, позволяющую в тексте, введенном с клавиатуры, расставить запятые между словами – Бейсик Фортран Паскаль Си.
Составить программу, позволяющую разделить произвольный текст, введенный с клавиатуры, на строки так, чтобы в строке было 15 символов. (в качестве разделителя строк использовать *).
Составить программу, позволяющую из текста, введенного с клавиатуры, удалить слово - Фортран.
Слайд 33

Для произвольного числа X определить, совпадают ли между собой вторая слева

Для произвольного числа X определить, совпадают ли между собой вторая

слева и последняя цифры. Если да, заменить каждую из них цифрой 7, полученное число умножить на 3.
Для произвольного числа X определить, равна ли 15 сумма всех цифр числа. Если да, заменить первую цифру цифрой 3, полученное число возвести в квадрат.
Для произвольного числа X определить равна ли 7 сумма первой и последней цифр числа. Если да, поменять эти цифры на 1. Полученное число увеличить вдвое.
Для произвольного числа X определить, есть ли в числе две подряд идущие цифры 3 Если да, каждую цифру числа, расположенную на четном месте, заменить цифрой 7, полученное число разделить на 5.
Для произвольного числа X определить, совпадают ли между собой первая и последняя цифры. Если да, заменить каждую из них цифрой 1, полученное число возвести в квадрат.