
- •6. Алгоритмы и программы
- •6.1. Алгоритм и алгоритмический процесс
- •6.1.1. Основные свойства алгоритмов:
- •6.1.2. Способы записи алгоритма
- •6.1.3. Схемы алгоритмов и программ
- •6.2. Переменная и постоянная величина Выражения
- •6.3. Присваивание
- •6.4. Основные этапы решения задач на эвм
- •6. 5. Алгоритмизация. Базовые алгоритмические структуры
- •6.5.1. Реализация базовых структур в языке Pascal
- •6.5.2. Реализация базовых структур в языке qBasic
- •Операторы тела цикла
- •6.6. Ввод - вывод
- •6.6.1.Ввод-вывод данных на языке Pascal
- •Var X, y: integer; {Описание переменных X, y целочисленного типа}
- •6.6.2. Ввод-вывод данных на языке qBasic
- •6.7. Алгоритмы линейной и разветвляющейся структуры
- •Решение задачи 6.3. На языке Turbo Pascal:
- •6.8. Циклические алгоритмы
- •Input "Введите натуральное м : " , m
- •Print : print "о т в е т : Сумма этих чисел равна "; s
- •6.9. Итерационные циклы
- •6.10. Массивы
- •6.11. Вложенные циклы
- •6.12. Подпрограммы
- •6.12.1. Параметры подпрограмм
- •6.12.2. Подпрограммы в языке Pascal
- •Операторы функции, один из которых
- •6.12.3. Подпрограммы в языке Basic
- •6.13. Рекурсия
- •6.14. Логические операции с числами
- •6.15. Работа с символьной информацией
- •6.15.1. Работа с символьной информацией в языке Basic
- •6.15.2. Работа с символьной информацией в языке Pascal
6.15.2. Работа с символьной информацией в языке Pascal
В языке Pascal символьный тип данных – это одиночный символ в апострофах, например, символ вопросительный знак ‘?’, а также строка – это заключенная в апострофы группа символов, например текст, ‘Сообщите код’. Символьный тип данных обозначается служебным словом char, а строковый (литерный) - string.
Пример определения символьных и строковых переменных на языке Pascal:
Var
s, c, t :Char;
str, tx : String;
text, rez: String[80];
Выполним следующие операторы:
s := ‘K’; c := ‘A’; t:=’I’;
str := s + c + t; { конкатенация строк }
writeln(str);
{ конкатенация строк и вывод результирующей строки:}
writeln(Concat (‘Казань - ’,‘K’,’Г’,’Т’,’У’));
tx:= ‘12345678’;
rez:= Copy (tx,2,3); {получение подстроки}
writeln(Length(tx)); {получение и вывод длины строки}
writeln(rez);
Функция concat() выполняет операцию конкатенации строк, указанных в качестве параметров. В результате будет напечатано:
Казань - KAI
КГТУ
8
234
Упражнения.
1. Чему равно значение переменной Е, вычисляемое в следующей программе на языке Basic:
DEFINT I, N, E
A$ = ”DFEADEFA” : N = LEN(A$) ‘определяется длина строки A$
B$ = ””
FOR I = 1 TO N - 1
C$ = MID$(A$, I + 1) ‘выделяется подстрока C$
E = LEN(C$) MOD 3
IF E = 1 THEN
B$ = B$ + C$
END IF
NEXT I
E = LEN(B$)
PRINT E
Решение.
Составим трассировочную таблицу выполнения программы:
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
I |
|
|
|
1 |
|
|
|
|
|
2 |
N |
|
8 |
|
|
|
|
|
|
|
|
E |
|
|
|
|
|
|
7 mod 3= 1 |
|
|
|
A$ |
“dfeadefa” |
|
|
|
|
|
|
|
|
|
B$ |
|
|
“” |
|
|
|
|
|
“feadefa” |
|
C$ |
|
|
|
|
|
“feadefa” |
|
|
|
|
I<= N-1 |
|
|
|
|
1<=7 да |
|
|
|
|
|
E=1 |
|
|
|
|
|
|
|
да |
|
|
|
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
I |
|
|
|
|
3 |
|
|
|
|
N |
|
|
|
|
|
|
|
|
|
E |
|
|
6 mod 3 = 0 |
|
|
|
|
5 mod 3 = 2 |
|
A$ |
|
|
|
|
|
|
|
|
|
B$ |
|
|
|
|
|
|
|
|
|
C$ |
|
“eadefa” |
|
|
|
|
“adefa” |
|
|
I<= N-1 |
2<=7 да |
|
|
|
|
3<=7 да |
|
|
|
E=1 |
|
|
|
нет |
|
|
|
|
нет |
|
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
I |
4 |
|
|
|
|
|
5 |
|
|
N |
|
|
|
|
|
|
|
|
|
E |
|
|
|
4 mod 3= 1 |
|
|
|
|
|
A$ |
|
|
|
|
|
|
|
|
|
B$ |
|
|
|
|
|
“feadefa” + “defa”= “feadefadefa” |
|
|
|
C$ |
|
|
“defa” |
|
|
|
|
|
“efa” |
I<= N-1 |
|
4<=7 да |
|
|
|
|
|
5<=7 да |
|
E=1 |
|
|
|
|
да |
|
|
|
|
|
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
37 |
I |
|
|
6 |
|
|
|
|
7 |
|
|
N |
|
|
|
|
|
|
|
|
|
|
E |
3 mod 3 = 0 |
|
|
|
|
2 mod 3 = 2 |
|
|
|
|
A$ |
|
|
|
|
|
|
|
|
|
|
B$ |
|
|
|
|
|
|
|
|
|
|
C$ |
|
|
|
|
“fa” |
|
|
|
|
“a” |
I<= N-1 |
|
|
|
6<=7 да |
|
|
|
|
7<=7 да |
|
E=1 |
|
нет |
|
|
|
|
нет |
|
|
|
|
38 |
30 |
31 |
32 |
33 |
34 |
I |
|
|
|
8 |
|
|
N |
|
|
|
|
|
|
E |
1 mod 3 = 1 |
|
|
|
|
LEN(“feadefadefaа”) = 12 |
A$ |
|
|
|
|
|
|
B$ |
|
|
“feadefadefa” + “a” = “feadefadefaа” |
|
|
|
C$ |
|
|
|
|
|
|
I<= N-1 |
|
|
|
|
8<=7 нет |
|
E=1 |
|
да |
|
|
|
|
Ответ Е = 12
2. Чему равно значение переменной Е, вычисляемое в следующей программе на языке Basic:
DEFINT I, N, E
A$ = ”DFEADEFA” : N = LEN(A$) ‘определяется длина строки A$
B$ = ””
FOR I = 1 TO N - 1
C$ = MID$(A$, I + 1) ‘выделяется подстрока C$
IF INT (LEN(C$/2)>1 THEN
B$ = B$ + C$
END IF
NEXT I
E = LEN(B$)
PRINT E
3. Чему равно значение переменной Е, вычисляемое в следующей программе на языке Pascal:
Var I, N, E: Integer;
A,B,C: String;
Begin
A := ’abcdefab’;
N := Length(A); B:=’’;
For I :=1 To N-1 Do Begin
C := Copy(A, I+1, N-1);
If Trunc (Length(C) /3 >1) Then
B := B + C;
End;
E := Length (B);
WriteLn (E)
End.