Программирование на языке PASCAL.pptx
- Количество слайдов: 115
Программирование на языке PASCAL ОПЕРАТОРЫ
Алгоритм – это строго последовательность действий поставленной цели. Свойства алгоритма: - Понятность, - Дискретность, - Определенность, - Результативность, - Массовость упорядоченная приводящая к
Запись алгоритма: - Словесная - Табличная - Графическая (блок-схема) - Программная (язык программирования)
Графическая запись алгоритма (блок – схема): Блок начала или конца алгоритма Блок ввода – вывода Блок выполнения действий Блок развилка
Графическая запись алгоритма (блок – схема): Блок вызова подпрограммы Блок разрыва программы на разных страницах Блок разрыва на странице Блок цикла
Типы алгоритмов: Линейный Разветвляющийся полная форма неполная форма
Типы алгоритмов: Циклический
Цикл с параметром
Линейные алгоритмы Пешеход шел по пересеченной местности. Его скорость движения по равнине v 1 км/ч, в гору — v 2 км/ч и под гору — v 3 км/ч. Время движения соответственно t 1, t 2 и t 3 ч. Какой путь прошел пешеход?
Дано натуральное трехзначное число n, в записи которого нет нулей. Составить алгоритм, который возвращает значение ИСТИНА, если верно утверждение: "число n кратно каждой своей цифре", и ЛОЖЬ — в противном случае.
Развилка Вычислить значение функции
Дано натуральное число n. Если число нечётное и его удвоение не приведет к выходу за 32767 (двухбайтовое целое число со знаком), удвоить его, иначе — оставить без изменения.
Циклы Подсчитать количество нечетных цифр в записи натурального числа n. Идея решения. Из заданного числа выбирать из младшего разряда цифру за цифрой до тех пор, пока оно не исчерпается, т. е. станет равным нулю. Каждую нечётную цифру учитывать.
программирование на языке Pascal Переменные следующих простых типов: целые (Integer, ), вещественные (Real, Double, Single), логический (Boolean), символьный (Char (1 символ), String (строка 255 симв. ), Перечисляемый (описание), Диапазонный (описание). Пример: A, max, D 3……
Идентификатор Длина, байт Диапазон Целые типы integer 2 – 32768. . 32767 byte 1 0. . 255 Операции +, –, /, *, Div, Mod, >=, <=, =, <>, <, > Вещественные типы real 6 2, 9× 10– 39 — 1, 7× 1038 single 4 1, 5× 10– 45 — 3, 4× 1038 double 8 5× 10– 324 — 1, 7× 10308 +, –, /, *, >=, <=, =, <>, <, > Логический тип Boolean 1 true, false Not, And, Or, Xor, >=, <=, =, <>, <, > Символьный тип char 1 все символы кода ASCII +, >=, <=, =, <>, <, >
Иерархия типов в языке Pascal
Структура программы program имя; const n=100; label 1; type <описание типа>; var <описание переменных>; Begin <Тело программы> end. Все операторы отделяются ;
Оператор ввода, вывода READ (X) READLN (X) WRITE (‘текст на экран’; X: 5: 1) WRITELN (X)
Описание переменной имя переменной (идентификатор) : тип; Пример описания: Var D, C, N : Integer; Log. Per : Boolean; A, B : Real; K 4 : Char;
Цикл со счетчиком: For i: = нач. значение to конеч. значение do действие; For i: = нач. значение to конеч. значение do begin действия; end; Цикл с пред условием: While условие входа в цикл do действие; While условие входа в цикл do begin действия; end; Цикл с пост условием Repeat действия; Until условие выхода из цикла;
Оператор условно перехода IF условие THEN оператор1 ELSE оператор 2 IF условие THEN оператор Пример: IF X>2 THEN WRITE (2*X) ELSE WRITE (X/2) IF X+8>25 THEN WRITE (X)
Операторы цикла Цикл со счетчиком: For i: = нач. значение to конеч. значение do действие; For i: = нач. значение to конеч. значение do begin действия; end;
Цикл с пред условием: While условие входа в цикл do действие; While условие входа в цикл do begin действия; end;
Цикл с пост условием Repeat действия; Until условие выхода из цикла;
Функции mod, div, INT и генератор случайного числа randomize random(N) mod div int включение датчика случайного числа датчик случайного числа (N) берет остаток от деления 5 mod 2=1 берет целую часть при делении двух чисел 6 div 7=0 округление числа Задача: среди двух случайно взятых чисел найти их сумму, если они кратны 5 и разность если это не так.
Задачи: “ 3” - Даны два числа. Проверить будет ли сумма этих чисел кратна 7? “ 4” – Найти сумму цифр случайного двухзначного числа. “ 5” - Проверить будет ли случайное шестизначное число, делится без остатка на сумму своих цифр.
начало А, В ДА Аи. В кратно 5? НЕТ S=A-B S=A+B S конец Напишите программу
1. Алгоритмическая конструкция какого типа изображена на фрагменте блок - схемы Да Усл 1. 2. 3. 4. Нет Серия 1 Линейная Циклическая Разветвляющая Вспомогательная А 6 2. Фрагмент блок – схемы представляет алгоритм, который содержит две команды ветвления: Да Нет Усл 1 Да Серия 1 Нет Усл 2 Серия 3 1. Команду ветвления в сокращенной форме, в которую вложена команда ветвления в полной форме 2. Две команды ветвления в полной форме, одна из котор вложена в другую 3. Две команды ветвления в сокращенной форме, одна из которых вложена в другую 4. Команду ветвления в полной форме, в которую вложена команда ветвления в сокращенной форме А 6
3. Запишите значение целочисленной переменной Х после выполнения следующего фрагмента алгоритма: Решение: x: =55 y: =75 № X>Y (Да) Y Да y: =y-x 75 2 55 20 35 35 20 15 20 5 15 5 10 5 5 5 7 5 5 X Y 20 15 X>Y (Нет) 20 6 X>Y 55 4 Нет 1 3 X<>Y x: =x-y Y X Нет Да X 55 15 Цикл завершен при значении x=5 B 2 5 Нетрудно заметить, что задача реализует алгоритм Евклида: 55=5*11 75=5*15 НОД(55, 75)=5 20 5
Cls LET X=55 Y=75 IF X<>Y THEN IF X>Y THEN X=X-Y ELSE Y=Y-X PRINT X
4. Определите значение переменной В после выполнения следующего фрагмента алгоритма: 1) 6 2) 5 3) 3 4) 4 А: =1 Решение: B: =2 № C<4 (Нет) C B 1 2 1 3 2 4 3 3 1 4 3 5 4 Нет C 2 C: =C+1 C<4 С 1 B: =A+B Да В С<4 (Да) B C: =1 А А 6 Выход
6. Определите значение переменной S после выполнения фрагмента алгоритма: n: =0; S: =0 Решение: согласно условию складываются только четные числа: 2 4 6 8. . 100, тогда Нет Да N>100 Нет Да N четно? S: =S+N N: =N+1 B 6 2 5 5 0
В условиях задач приводятся эквивалентные тексты программ на трех алгоритмических языках. Следует выполнять программу на том языке, с которым учащийся наиболее хорошо знаком. Для Turbo Pascal особое внимание следует уделять следующим функциям: DIV, MOD, Succ, Pred, Frac, Int, Ord, Chr, AND, OR, NOT, IN, Round, Trunc. Соблюдать приоритет операций! 7. Определите значение целочисленных переменных a и b после выполнения фрагмента программы: Бейсик a=2468 b=( a MOD 1000)*10 a=a1000+b 1) 2) 3) 4) a=22 b=20 a=4682 b=4680 a=8246 b=246 a= 470 b=468 Паскаль a: =2468; b: =( a MOD 1000)*10; a: =a DIV 1000+b Решение: a=2468 b= (2468 mod 1000)*10= 468*10=4680 a=2468 div 1000 +4680=2+4680= 4682 a=4682 b=4680 А 7 Алгоритмический a: =2468 b: =MOD(a, 1000)*10 a: =DIV(b, 1000)+b
8. Определите значение целочисленных переменных a и b после выполнения фрагмента программы: Бейсик a=42 b=14 a=ab b=a*b a=ba 1) 2) 3) 4) Паскаль a: =42; b: =14; a: =a div b; b: =a*b; a: =b div a; a=42 b=14 a=1 b=42 a=0 b=588 a= 14 b=42 Решение: a=42 b=14 a=42 div 14=3 b=3*14=42 a=42 div 3=14 a=14 b=42 А 7 Алгоритмический a: =42 b: =14 a: =div(a, b) b: =a*b a: =div(b, a)
Базовые алгоритмические структуры: Множественный выбор Case <селектор> of список 1: оператор 1; список 2: оператор 2; - - - - else оператор End; Обход: If <логическое условие> then<оператор>; Ветвление: If <логическое выражение> then <оператор> else <оператор>; If a>b then y: =a+b else y: =a-b; {обе ветви содержат по одному оператору присваивания}; If a>b then Begin {ветвь then содержит вложенный условный оператор } If c>d then y: =a+b else y: =a-b; End else y: =a;
Вычислить значение y, если: Program Prim 1; Var x, y: real; Begin Writeln(‘Введите значение x: ’); Readln(x); if x<0 then y: =sin(x); if (x>=0) and (x<=2) then y: =sqr(sin(x)); if x>=2 then y: =sin(sqr(x)); Writeln(‘Y=‘, y); End. Program Prim 1; Var x, y: real; Begin Writeln(‘Введите значение x: ’); Readln(x); if x<0 then y: =sin(x) else if (x>=0) and (x<=2) then y: =sqr(sin(x)) else y: =sin(sqr(x)); Writeln(‘Y=‘, y); End.
3. Запишите значение целочисленной переменной Х после выполнения следующего фрагмента алгоритма: Решение: x: =55 y: =75 № X>Y (Да) Y Да y: =y-x 75 2 55 20 35 35 20 15 20 5 15 5 10 5 5 5 7 5 5 X Y 20 15 X>Y (Нет) 20 6 X>Y 55 4 Нет 1 3 X<>Y x: =x-y Y X Нет Да X 55 15 Цикл завершен при значении x=5 B 2 5 Нетрудно заметить, что задача реализует алгоритм Евклида: 55=5*11 75=5*15 НОД(55, 75)=5 20 5
4. Определите значение переменной В после выполнения следующего фрагмента алгоритма: 1) 6 2) 5 3) 3 4) 4 А: =1 Решение: B: =2 № C<4 (Нет) C B 1 2 1 3 2 4 3 3 1 4 3 5 4 Нет C 2 C: =C+1 C<4 С 1 B: =A+B Да В С<4 (Да) B C: =1 А А 6 Выход
6. Определите значение переменной S после выполнения фрагмента алгоритма: n: =0; S: =0 Решение: согласно условию складываются только четные числа: 2 4 6 8. . 100, тогда Нет Да N>100 Нет Да N четно? S: =S+N N: =N+1 B 6 2 5 5 0
В условиях задач приводятся эквивалентные тексты программ на трех алгоритмических языках. Следует выполнять программу на том языке, с которым учащийся наиболее хорошо знаком. Для Turbo Pascal особое внимание следует уделять следующим функциям: DIV, MOD, Succ, Pred, Frac, Int, Ord, Chr, AND, OR, NOT, IN, Round, Trunc. Соблюдать приоритет операций! 7. Определите значение целочисленных переменных a и b после выполнения фрагмента программы: Бейсик a=2468 b=( a MOD 1000)*10 a=a1000+b 1) 2) 3) 4) a=22 b=20 a=4682 b=4680 a=8246 b=246 a= 470 b=468 Паскаль a: =2468; b: =( a MOD 1000)*10; a: =a DIV 1000+b Решение: a=2468 b= (2468 mod 1000)*10= 468*10=4680 a=2468 div 1000 +4680=2+4680= 4682 a=4682 b=4680 А 7 Алгоритмический a: =2468 b: =MOD(a, 1000)*10 a: =DIV(b, 1000)+b
8. Определите значение целочисленных переменных a и b после выполнения фрагмента программы: Бейсик a=42 b=14 a=ab b=a*b a=ba 1) 2) 3) 4) Паскаль a: =42; b: =14; a: =a div b; b: =a*b; a: =b div a; a=42 b=14 a=1 b=42 a=0 b=588 a= 14 b=42 Решение: a=42 b=14 a=42 div 14=3 b=3*14=42 a=42 div 3=14 a=14 b=42 А 7 Алгоритмический a: =42 b: =14 a: =div(a, b) b: =a*b a: =div(b, a)
Базовые алгоритмические структуры: Множественный выбор Case <селектор> of список 1: оператор 1; список 2: оператор 2; - - - - else оператор End; Обход: If <логическое условие> then<оператор>; Ветвление: If <логическое выражение> then <оператор> else <оператор>; If a>b then y: =a+b else y: =a-b; {обе ветви содержат по одному оператору присваивания}; If a>b then Begin {ветвь then содержит вложенный условный оператор } If c>d then y: =a+b else y: =a-b; End else y: =a;
Вычислить значение y, если: Program Prim 1; Var x, y: real; Begin Writeln(‘Введите значение x: ’); Readln(x); if x<0 then y: =sin(x); if (x>=0) and (x<=2) then y: =sqr(sin(x)); if x>=2 then y: =sin(sqr(x)); Writeln(‘Y=‘, y); End. Program Prim 1; Var x, y: real; Begin Writeln(‘Введите значение x: ’); Readln(x); if x<0 then y: =sin(x) else if (x>=0) and (x<=2) then y: =sqr(sin(x)) else y: =sin(sqr(x)); Writeln(‘Y=‘, y); End.
В условиях задач приводятся эквивалентные тексты программ на трех алгоритмических языках. Следует выполнять программу на том языке, с которым учащийся наиболее хорошо знаком. Для Turbo Pascal особое внимание следует уделять следующим функциям: DIV, MOD, Succ, Pred, Frac, Int, Ord, Chr, AND, OR, NOT, IN, Round, Trunc. Соблюдать приоритет операций! 7. Определите значение целочисленных переменных a и b после выполнения фрагмента программы: Бейсик a=2468 b=( a MOD 1000)*10 a=a1000+b 1) 2) 3) 4) a=22 b=20 a=4682 b=4680 a=8246 b=246 a= 470 b=468 Паскаль a: =2468; b: =( a MOD 1000)*10; a: =a DIV 1000+b Решение: a=2468 b= (2468 mod 1000)*10= 468*10=4680 a=2468 div 1000 +4680=2+4680= 4682 a=4682 b=4680 А 7 Алгоритмический a: =2468 b: =MOD(a, 1000)*10 a: =DIV(b, 1000)+b
8. Определите значение целочисленных переменных a и b после выполнения фрагмента программы: Бейсик a=42 b=14 a=ab b=a*b a=ba 1) 2) 3) 4) Паскаль a: =42; b: =14; a: =a div b; b: =a*b; a: =b div a; a=42 b=14 a=1 b=42 a=0 b=588 a= 14 b=42 Решение: a=42 b=14 a=42 div 14=3 b=3*14=42 a=42 div 3=14 a=14 b=42 А 7 Алгоритмический a: =42 b: =14 a: =div(a, b) b: =a*b a: =div(b, a)
Базовые алгоритмические структуры: Множественный выбор Case <селектор> of список 1: оператор 1; список 2: оператор 2; - - - - else оператор End; Обход: If <логическое условие> then<оператор>; Ветвление: If <логическое выражение> then <оператор> else <оператор>; If a>b then y: =a+b else y: =a-b; {обе ветви содержат по одному оператору присваивания}; If a>b then Begin {ветвь then содержит вложенный условный оператор } If c>d then y: =a+b else y: =a-b; End else y: =a;
Вычислить значение y, если: Program Prim 1; Var x, y: real; Begin Writeln(‘Введите значение x: ’); Readln(x); if x<0 then y: =sin(x); if (x>=0) and (x<=2) then y: =sqr(sin(x)); if x>=2 then y: =sin(sqr(x)); Writeln(‘Y=‘, y); End. Program Prim 1; Var x, y: real; Begin Writeln(‘Введите значение x: ’); Readln(x); if x<0 then y: =sin(x) else if (x>=0) and (x<=2) then y: =sqr(sin(x)) else y: =sin(sqr(x)); Writeln(‘Y=‘, y); End.
Исправленный вариант программы на языке Turbo Pascal: Program C 1; Uses crt; Var x, y: real; Begin clrscr; Writeln(‘Введите значение х и y: ’); Readln(x, y); if (x>=0)and(y<=1)and(y>=sin(x)) and (x<=pi/2 ) then writeln(‘Точка принадлежит области. ’) else writeln(‘Точка не принадлежит области. ’); Readkey; End.
Цикл со счетчиком: For i: = нач. значение to конеч. значение do действие; For i: = нач. значение to конеч. значение do begin действия; end; Цикл с пред условием: While условие входа в цикл do действие; While условие входа в цикл do begin действия; end; Цикл с пост условием Repeat действия; Until условие выхода из цикла; Вычислить произведение натурального ряда чисел от 1 до 25, т. е. значение факториала 25, математическая запись которого - 25!.
Вычислить сумму , где n – натуральное число Program Prim 1: Var s, x, a: real; i, f, n: integer, Begin Writeln(‘Введите значение переменной x и n’); Readln(x, n); f: =1; a: =x; s: =0; for i: =1 to n do begin s: =s+a/f; a: =a*x; f: =f*(i+1); end; Writeln(‘S=’, s); End.
1. Алгоритмическая конструкция какого типа изображена на фрагменте блок - схемы Да Усл Нет Серия 1 Серия 2 1. 2. 3. 4. Линейная Циклическая Разветвляющая Вспомогательная А 6 2. Фрагмент блок – схемы представляет алгоритм, который содержит две команды ветвления: Да Нет Усл 1 Да Серия 1 Нет Усл 2 Серия 2 1. Команду ветвления в сокращенной форме, в которую вложена команда ветвления в полной форме 2. Две команды ветвления в полной форме, одна из которых вложена в другую 3. Две команды ветвления в сокращенной форме, одна из которых вложена в другую 4. Команду ветвления в полной форме, в которую вложена команда ветвления в сокращенной форме Серия 3 А 6
3. Запишите значение целочисленной переменной Х после выполнения следующего фрагмента алгоритма: Решение: x: =55 y: =75 № X>Y (Да) Y Да y: =y-x 75 2 55 20 35 35 20 15 20 5 15 5 10 5 5 5 7 5 5 X Y 20 15 X>Y (Нет) 20 6 X>Y 55 4 Нет 1 3 X<>Y x: =x-y Y X Нет Да X 55 15 Цикл завершен при значении x=5 B 2 5 Нетрудно заметить, что задача реализует алгоритм Евклида: 55=5*11 75=5*15 НОД(55, 75)=5 20 5
4. Определите значение переменной В после выполнения следующего фрагмента алгоритма: 1) 6 2) 5 3) 3 4) 4 А: =1 Решение: B: =2 № C<4 (Нет) C B 1 2 1 3 2 4 3 3 1 4 3 5 4 Нет C 2 C: =C+1 C<4 С 1 B: =A+B Да В С<4 (Да) B C: =1 А А 6 Выход
6. Определите значение переменной S после выполнения фрагмента алгоритма: n: =0; S: =0 Решение: согласно условию складываются только четные числа: 2 4 6 8. . 100, тогда Нет Да N>100 Нет Да N четно? S: =S+N N: =N+1 B 6 2 5 5 0
В условиях задач приводятся эквивалентные тексты программ на трех алгоритмических языках. Следует выполнять программу на том языке, с которым учащийся наиболее хорошо знаком. Для Turbo Pascal особое внимание следует уделять следующим функциям: DIV, MOD, Succ, Pred, Frac, Int, Ord, Chr, AND, OR, NOT, IN, Round, Trunc. Соблюдать приоритет операций! 7. Определите значение целочисленных переменных a и b после выполнения фрагмента программы: Бейсик a=2468 b=( a MOD 1000)*10 a=a1000+b 1) 2) 3) 4) a=22 b=20 a=4682 b=4680 a=8246 b=246 a= 470 b=468 Паскаль a: =2468; b: =( a MOD 1000)*10; a: =a DIV 1000+b Решение: a=2468 b= (2468 mod 1000)*10= 468*10=4680 a=2468 div 1000 +4680=2+4680= 4682 a=4682 b=4680 А 7 Алгоритмический a: =2468 b: =MOD(a, 1000)*10 a: =DIV(b, 1000)+b
8. Определите значение целочисленных переменных a и b после выполнения фрагмента программы: Бейсик a=42 b=14 a=ab b=a*b a=ba 1) 2) 3) 4) Паскаль a: =42; b: =14; a: =a div b; b: =a*b; a: =b div a; a=42 b=14 a=1 b=42 a=0 b=588 a= 14 b=42 Решение: a=42 b=14 a=42 div 14=3 b=3*14=42 a=42 div 3=14 a=14 b=42 А 7 Алгоритмический a: =42 b: =14 a: =div(a, b) b: =a*b a: =div(b, a)
Базовые алгоритмические структуры: Множественный выбор Case <селектор> of список 1: оператор 1; список 2: оператор 2; - - - - else оператор End; Обход: If <логическое условие> then<оператор>; Ветвление: If <логическое выражение> then <оператор> else <оператор>; If a>b then y: =a+b else y: =a-b; {обе ветви содержат по одному оператору присваивания}; If a>b then Begin {ветвь then содержит вложенный условный оператор } If c>d then y: =a+b else y: =a-b; End else y: =a;
Вычислить значение y, если: Program Prim 1; Var x, y: real; Begin Writeln(‘Введите значение x: ’); Readln(x); if x<0 then y: =sin(x); if (x>=0) and (x<=2) then y: =sqr(sin(x)); if x>=2 then y: =sin(sqr(x)); Writeln(‘Y=‘, y); End. Program Prim 1; Var x, y: real; Begin Writeln(‘Введите значение x: ’); Readln(x); if x<0 then y: =sin(x) else if (x>=0) and (x<=2) then y: =sqr(sin(x)) else y: =sin(sqr(x)); Writeln(‘Y=‘, y); End.
1 -е условие: (x>=0) and(sqr(x)+sqr(y)>=9)and(sqr(x)+sqr(y)<=25) 2 -е условие: ((x>=-2)and(x<=2)and(y>=0)and(y<=4)) or (( x>=-4)and(x<=-5)and(y<=0)and(y>=-3)) 3 -е условие: ((x<=0)and(sqr(x)+sqr(y)<=36)) or ((x>=0)and(y<=0)and(sqr(x)+sqr(y)<=36))
Исправленный вариант программы на языке Turbo Pascal: Program C 1; Uses crt; Var x, y: real; Begin clrscr; Writeln(‘Введите значение х и y: ’); Readln(x, y); if (x>=0)and(y<=1)and(y>=sin(x)) and (x<=pi/2 ) then writeln(‘Точка принадлежит области. ’) else writeln(‘Точка не принадлежит области. ’); Readkey; End.
Цикл со счетчиком: For i: = нач. значение to конеч. значение do действие; For i: = нач. значение to конеч. значение do begin действия; end; Цикл с пред условием: While условие входа в цикл do действие; While условие входа в цикл do begin действия; end; Цикл с пост условием Repeat действия; Until условие выхода из цикла; Вычислить произведение натурального ряда чисел от 1 до 25, т. е. значение факториала 25, математическая запись которого - 25!.
Вычислить сумму Program Prim 2: Var s, x, a: real; i, f: integer, Begin f: =1; x: =-1; s: =0; i: =1; while x<=1 do begin if i mod 2 =0 then s: =s-x/f else s: =s+x/f; f: =f*(i+1); i: =i+1; x: =x+0. 1; end; Writeln(‘S=’, s); End на интервале [-1, 1] c шагом 0, 1
1 -е условие: (x>=0) and(sqr(x)+sqr(y)>=9)and(sqr(x)+sqr(y)<=25) 2 -е условие: ((x>=-2)and(x<=2)and(y>=0)and(y<=4)) or (( x>=-4)and(x<=-5)and(y<=0)and(y>=-3)) 3 -е условие: ((x<=0)and(sqr(x)+sqr(y)<=36)) or ((x>=0)and(y<=0)and(sqr(x)+sqr(y)<=36))
Исправленный вариант программы на языке Turbo Pascal: Program C 1; Uses crt; Var x, y: real; Begin clrscr; Writeln(‘Введите значение х и y: ’); Readln(x, y); if (x>=0)and(y<=1)and(y>=sin(x)) and (x<=pi/2 ) then writeln(‘Точка принадлежит области. ’) else writeln(‘Точка не принадлежит области. ’); Readkey; End.
Цикл со счетчиком: For i: = нач. значение to конеч. значение do действие; For i: = нач. значение to конеч. значение do begin действия; end; Цикл с пред условием: While условие входа в цикл do действие; While условие входа в цикл do begin действия; end; Цикл с пост условием Repeat действия; Until условие выхода из цикла; Вычислить произведение натурального ряда чисел от 1 до 25, т. е. значение факториала 25, математическая запись которого - 25!.
Вычислить сумму , где n – натуральное число Program Prim 1: Var s, x, a: real; i, f, n: integer, Begin Writeln(‘Введите значение переменной x и n’); Readln(x, n); f: =1; a: =x; s: =0; for i: =1 to n do begin s: =s+a/f; a: =a*x; f: =f*(i+1); end; Writeln(‘S=’, s); End.
1. Алгоритмическая конструкция какого типа изображена на фрагменте блок - схемы Да Усл Нет Серия 1 Серия 2 1. 2. 3. 4. Линейная Циклическая Разветвляющая Вспомогательная А 6 2. Фрагмент блок – схемы представляет алгоритм, который содержит две команды ветвления: Да Нет Усл 1 Да Серия 1 Нет Усл 2 Серия 2 1. Команду ветвления в сокращенной форме, в которую вложена команда ветвления в полной форме 2. Две команды ветвления в полной форме, одна из которых вложена в другую 3. Две команды ветвления в сокращенной форме, одна из которых вложена в другую 4. Команду ветвления в полной форме, в которую вложена команда ветвления в сокращенной форме Серия 3 А 6
3. Запишите значение целочисленной переменной Х после выполнения следующего фрагмента алгоритма: Решение: x: =55 y: =75 № X>Y (Да) Y Да y: =y-x 75 2 55 20 35 35 20 15 20 5 15 5 10 5 5 5 7 5 5 X Y 20 15 X>Y (Нет) 20 6 X>Y 55 4 Нет 1 3 X<>Y x: =x-y Y X Нет Да X 55 15 Цикл завершен при значении x=5 B 2 5 Нетрудно заметить, что задача реализует алгоритм Евклида: 55=5*11 75=5*15 НОД(55, 75)=5 20 5
4. Определите значение переменной В после выполнения следующего фрагмента алгоритма: 1) 6 2) 5 3) 3 4) 4 А: =1 Решение: B: =2 № C<4 (Нет) C B 1 2 1 3 2 4 3 3 1 4 3 5 4 Нет C 2 C: =C+1 C<4 С 1 B: =A+B Да В С<4 (Да) B C: =1 А А 6 Выход
6. Определите значение переменной S после выполнения фрагмента алгоритма: n: =0; S: =0 Решение: согласно условию складываются только четные числа: 2 4 6 8. . 100, тогда Нет Да N>100 Нет Да N четно? S: =S+N N: =N+1 B 6 2 5 5 0
В условиях задач приводятся эквивалентные тексты программ на трех алгоритмических языках. Следует выполнять программу на том языке, с которым учащийся наиболее хорошо знаком. Для Turbo Pascal особое внимание следует уделять следующим функциям: DIV, MOD, Succ, Pred, Frac, Int, Ord, Chr, AND, OR, NOT, IN, Round, Trunc. Соблюдать приоритет операций! 7. Определите значение целочисленных переменных a и b после выполнения фрагмента программы: Бейсик a=2468 b=( a MOD 1000)*10 a=a1000+b 1) 2) 3) 4) a=22 b=20 a=4682 b=4680 a=8246 b=246 a= 470 b=468 Паскаль a: =2468; b: =( a MOD 1000)*10; a: =a DIV 1000+b Решение: a=2468 b= (2468 mod 1000)*10= 468*10=4680 a=2468 div 1000 +4680=2+4680= 4682 a=4682 b=4680 А 7 Алгоритмический a: =2468 b: =MOD(a, 1000)*10 a: =DIV(b, 1000)+b
8. Определите значение целочисленных переменных a и b после выполнения фрагмента программы: Бейсик a=42 b=14 a=ab b=a*b a=ba 1) 2) 3) 4) Паскаль a: =42; b: =14; a: =a div b; b: =a*b; a: =b div a; a=42 b=14 a=1 b=42 a=0 b=588 a= 14 b=42 Решение: a=42 b=14 a=42 div 14=3 b=3*14=42 a=42 div 3=14 a=14 b=42 А 7 Алгоритмический a: =42 b: =14 a: =div(a, b) b: =a*b a: =div(b, a)
Базовые алгоритмические структуры: Множественный выбор Case <селектор> of список 1: оператор 1; список 2: оператор 2; - - - - else оператор End; Обход: If <логическое условие> then<оператор>; Ветвление: If <логическое выражение> then <оператор> else <оператор>; If a>b then y: =a+b else y: =a-b; {обе ветви содержат по одному оператору присваивания}; If a>b then Begin {ветвь then содержит вложенный условный оператор } If c>d then y: =a+b else y: =a-b; End else y: =a;
Вычислить значение y, если: Program Prim 1; Var x, y: real; Begin Writeln(‘Введите значение x: ’); Readln(x); if x<0 then y: =sin(x); if (x>=0) and (x<=2) then y: =sqr(sin(x)); if x>=2 then y: =sin(sqr(x)); Writeln(‘Y=‘, y); End. Program Prim 1; Var x, y: real; Begin Writeln(‘Введите значение x: ’); Readln(x); if x<0 then y: =sin(x) else if (x>=0) and (x<=2) then y: =sqr(sin(x)) else y: =sin(sqr(x)); Writeln(‘Y=‘, y); End.
1 -е условие: (x>=0) and(sqr(x)+sqr(y)>=9)and(sqr(x)+sqr(y)<=25) 2 -е условие: ((x>=-2)and(x<=2)and(y>=0)and(y<=4)) or (( x>=-4)and(x<=-5)and(y<=0)and(y>=-3)) 3 -е условие: ((x<=0)and(sqr(x)+sqr(y)<=36)) or ((x>=0)and(y<=0)and(sqr(x)+sqr(y)<=36))
Исправленный вариант программы на языке Turbo Pascal: Program C 1; Uses crt; Var x, y: real; Begin clrscr; Writeln(‘Введите значение х и y: ’); Readln(x, y); if (x>=0)and(y<=1)and(y>=sin(x)) and (x<=pi/2 ) then writeln(‘Точка принадлежит области. ’) else writeln(‘Точка не принадлежит области. ’); Readkey; End.
Цикл со счетчиком: For i: = нач. значение to конеч. значение do действие; For i: = нач. значение to конеч. значение do begin действия; end; Цикл с пред условием: While условие входа в цикл do действие; While условие входа в цикл do begin действия; end; Цикл с пост условием Repeat действия; Until условие выхода из цикла; Вычислить произведение натурального ряда чисел от 1 до 25, т. е. значение факториала 25, математическая запись которого - 25!.
Вычислить сумму , где n – натуральное число Program Prim 1: Var s, x, a: real; i, f, n: integer, Begin Writeln(‘Введите значение переменной x и n’); Readln(x, n); f: =1; a: =x; s: =0; for i: =1 to n do begin s: =s+a/f; a: =a*x; f: =f*(i+1); end; Writeln(‘S=’, s); End.
Вычислить сумму Program Prim 2: Var s, x, a: real; i, f: integer, Begin f: =1; x: =-1; s: =0; i: =1; while x<=1 do begin if i mod 2 =0 then s: =s-x/f else s: =s+x/f; f: =f*(i+1); i: =i+1; x: =x+0. 1; end; Writeln(‘S=’, s); End на интервале [-1, 1] c шагом 0, 1
Задана функция: на интервале [-3; 4, 5] c шагом 0, 1. Вычислить половину среднеарифметического ее значений. Program Prim 2: Var sr, x: real; k: integer, Begin k: =0; x: =-3; sr: =0; while x<=4. 5 do begin if (x>-1) and (x<=3. 5) then sr: =sr+abs(sin(sqr(x))) else sr: =sr+sqr(cos(abs(x))); x: =x+0. 1; k: =k+1; end; sr: =sr/k; Writeln(‘ 1/2 Sr=’, sr); End.
Массив – это упорядоченная совокупность однотипных объектов. Массив характеризуется: Ø типом элементов; Ø размером (количество составляющих его элементов); Ø размерностью (количество индексов в массиве). Определение массива: Var а: array [1. . 50] of тип; b: array [1. . 5, 1. . 5] of тип; Для двумерного массива являющегося квадратным верно: Ø элементы главной диагонали обладают свойством: i=j; Ø элементы выше главной диагонали: i
Значение двумерного массива задаются с помощью вложенного Оператора цикла в представленном фрагменте программы: Бейсик FOR n=1 TO 5 FOR k=1 TO 5 B(n, k)=n+k NEXT n Чему равно значение B(2, 4)? 1) 9 2) 8 3) 7 4) 6 Паскаль for n: =1 to 5 do for k: =1 to 5 do B[n, k]: =n+k; Алгоритмический нц для n от 1 до 5 нц для k от 1 до 5 B[n, k]=n+k кц Кц А 8 Решение: 1. Можно составить матрицу значений и посмотреть значение требуемого элемента. 2. Однако, рациональней вдуматься в смысл заполнения: тогда мы уведем, что значение элемента складывается их суммы индекса строки и столбца и элемент B[2, 4]=2+4=6
Значение двумерного массива задаются с помощью вложенного оператора цикла в представленном фрагменте программы: Бейсик FOR n=1 TO 500 FOR k=1 TO 500 B(n, k)=n*(n+1)*k/2 NEXT k NEXT n Паскаль Алгоритмический for n: =1 to 5 do for k: =1 to 5 do B[n, k]: =n*(n+1)*k/2; Чему равно значение B(19, 21)? B 2 3 9 9 нц для n от 1 до 5 нц для k от 1 до 5 B[n, k]: =n*(n+1)*k/2 кц кц 0 Решение: Значение элемента вычисляются исходя из значений индекса строки и столбца и элемент B[19, 21]=19*(19+1)*21/2 =3990
Значения элементов двух массивов А и B размером от 1. . 100 задаются с помощью следующего фрагмента программы. Бейсик FOR i=1 TO 100 A(i)=50 -i NEXT i FOR i=1 TO 100 B(i)=A(i)+49 NEXT i Паскаль For i: =1 to 100 do a[i]: =50 -I; For i: =1 to 100 do b[i]: =a[i]+49; Алгоритмический нц для i от 1 до 100 A(i)=50 -i кц нц для i от 1 до 100 B(i)=A(i)+49 кц Сколько элементов массива B будут иметь отрицательные значения? 1) 0 2) 1 3) 50 4) 100 А 8 Решение: Очевидно, что массив заполнится следующим образом: A[1]=49 a[2]=48 … a[100]= -50, тогда массив В заполнится следующим образом: В[1]=98 В[2]=97 … В[100]=-1
Составить программу для нахождения наибольшего элемента одномерного массива Х, содержащего 30 компонентов. Program maх_el; Var i: Integer; maх: Real; x: array [1. . 30] of Real; Begin For i: =1 to 30 do Begin Write. Ln('Ввод x [', i: 2, ']'); Read(x[i]) End; max: =x[1]; For i: =2 to 30 do If max
Дан одномерный массив из 30 элементов. Преобразовать массив таким образом, чтобы каждый элемент был разделен на соответствующий ему индекс. Program С 2; Uses crt; Var a: array[1. . 30] of real; i: integer; Begin Clrscr; Writeln(‘Исходный массив: ’) Randomize; for i: =1 to 30 do begin a[i]: =random(100); Write(a[i], ’ ’); end; Writeln(‘Результат: ’); for i: =1 to 30 do begin a[i]: =a[i]/i; write(a[i]: 7: 2); end; Readkey; End.
Дан одномерный массив из 30 элементов. Подсчитать количество отрицательных элементов массива, если их соседние элементы являются положительными. Program С 2; Uses crt; Var a: array[1. . 30] of integer; i, k: integer; Begin Clrscr; Writeln(‘Исходный массив: ’) Randomize; for i: =1 to 30 do begin a[i]: =random(100); Write(a[i], ’ ’); end; Writeln; for i: =2 to 29 do if (a[i-1]>0) and (a[i]<0) and (a[i+1]>0) then k: =k+1; Writeln(‘K=’, k); Readkey; End.
Дан одномерный массив из 30 элементов. Создать новый массив, в который переписать отрицательные элементы с нечетными координатами. Program С 2; Uses crt; Var a, b: array[1. . 30] of integer; i, j: integer; Begin Clrscr; Writeln(‘Исходный массив: ’) Randomize; for i: =1 to 30 do begin a[i]: =random(100); Write(a[i], ’ ’); end; Writeln; j: =1; for i: =1 to 30 do if (a[i]<0) and (i mod 2 <>0) then begin b[j]: =a[i]; j: =j+1; end; Writeln(‘Результат: ’); for i: =1 to j-1 do Write(b[i]: 7); Readkey; End.
Опишите на русском языке или одном из языков программирования алгоритм подсчета числа элементов равных максимальному в числовом массиве из 30 элементов. Program С 2; Uses crt; Var a: array[1. . 30] of integer; i, max, k: integer; Begin Clrscr; Writeln(‘Исходный массив: ’) Randomize; for i: =1 to 30 do begin a[i]: =random(100); Write(a[i], ’ ’); end; Writeln; max: =a[1]; for i: =2 to 30 do if max
Опишите на русском языке или одном из языков программирования алгоритм нахождения самого длинного участка возрастающих чисел в массиве из 30 элементов и вывести их на экран. Program С 2; Uses crt; Var a: array[1. . 30] of integer; i, m, n, k, km: integer; Begin Clrscr; Writeln(‘Исходный массив: ’) Randomize; for i: =1 to 30 do begin a[i]: =random(100); Write(a[i], ’ ’); end; Writeln; m: =1; n: =1; km: =1; k: =1; for i: =2 to 30 do if a[i]>a[i-1] then k: =k+1 else begin if k>km then begin km: =k; m: =i-k; n: = i-1; k: =1; end; Writeln(‘Искомая последовательность: ’); For i: =m to n do Write(a[i]: 7); Readkey; End.
Опишите на русском языке или одном из языков программирования алгоритм упорядочивания элементов массива из 30 элементов по возрастанию. Program С 2; Uses crt; Var a: array[1. . 30] of integer; i, j, с: integer; Begin Clrscr; Writeln(‘Исходный массив: ’) Randomize; for i: =1 to 30 do begin a[i]: =random(100); Write(a[i], ’ ’); end; Writeln; for i: =1 to 30 do for j: =i+1 to 30 do if a[i]>a[j] then begin c: =a[i]; a[i]: =a[j]; a[j]: =c; end; Writeln(‘Отсортированная последовательность: ’) For i: =1 to 30 do Write(a[i]: 7); Readkey; End.
Опишите на русском языке или одном из языков программирования алгоритм замены элементов главной диагонали элементами побочной диагонали симметрично вертикале в двумерном массиве размерностью [5, 5]. Program С 2; Uses crt; Var a: array[1. . 5, 1. . 5] of integer; i, j, c: integer; Begin Randomize; For i: =1 to 5 do For j: =1 to 5 do a[i, j]: =random(50); Writeln(‘Исходный массив: ’) For i: =1 to 5 do Begin For j: =1 to 5 do Write (a[i, j]: 7); Writeln; End; for i: =1 to 5 do begin c: =a[i, i]; a[i, i ]: =a[i, 6 -i]; a[i, 6 -i]: =c; end; Writeln(‘Исходный массив: ’) For i: =1 to 5 do Begin For j: =1 to 5 do Write (a[i, j]: 7); Writeln; End; Readkey; End.
Стандартный строковый тип определяет множество символьных цепочек произвольной длинны. Определение: Var s: string; {строка максимальной длины} a: string[N]; {n – длина строки } Стандартные процедуры и функции, ориентированные на работу со строками: № 1 Функция Описание Con. Cat(S 1, [S 2. . Sn]) Выполняет слияние строк 2 Copy(S, In, Count) 3 Delete(S, In, Count) Удаляет подстроку из строки S с номера символа In длинной Count. 4 Insert(S 1, S, In) Возвращает подстроку из строки S с номера символа In длинной Count. Вставляет подстроку S 1 в строку S с символа номера In
Продолжение таблицы: № Функция Описание 5 Length(S) Возвращает текущую длину строки S 6 Pos(S 1, S) Производит поиск в строке S подстроки S 1, результатом является номер позиции подстроки в исходной строке. 7 Str(X) Преобразует численное значение Х в его строковое представление S. 8 Val(s, x, code) Преобразует строковое значение S в его численное представление Х. Параметр code содержит признак ошибки преобразования (0 – нет ошибки).
Дана строка, содержащая произвольный текст. Выяснить, сколько раз в ней встречается самое длинное слово? Program С; Var s, a, b: string; i, k, max: integer; Begin Writeln(‘Введите текст: ’); Readln(S); k: =0; max: =0; a: =‘’; b: =‘’; For i: =1 to Length(s) do if s[i] <>’ ‘ then b: =b+s[i] else begin if length(b)>max then begin max: =length(b); a: =b; end; b: =‘’; end;
Продолжение программы: Writeln(‘Самое длинное слово: ’, a); Writeln(‘Длина максимального слова ’, max, ’ букв. ’); While Pos(a, s)<>0 do Begin k: =k+1; Delete(S, Pos(a, s), max); end; Writeln(‘Слово’, a, ‘встречается в строке’, k, ‘раз. ’); End.
Множества - это наборы однотипных логически связанных друг с другом объектов. Принадлежность переменных к множественному типу может быть определена прямо в разделе описания переменных: Var C: set of базовый тип; Переменной типа множество в программе может быть присвоено значение с помощью конструктора множества: S 2: = ['3' , '2', '1']; S 4: = [0, 3, 6]; S 5: =[]; пустое множество Множественный тип может быть определен и в разделе type, тогда: Type M= set of базовый тип; N= set of ‘A’. . ’Z’; Var s: m; l: n;
№ Операция Описание операции 1 * пересечение множеств; результат содержит элементы, общие для обоих множеств; 2 + объединение множеств; результат содержит элементы первого множества, 3 = проверка эквивалентности; возвращает True, если оба множества эквивалентны; 4 <> проверка неэквивалентности; возвращает True, если оба множества неэквивалентны; 5 <= проверка вхождения; возвращает True, если первое множество включено во второе; 6 >= проверка вхождения; возвращает True, если второе множество включено в первое; 7 IN проверка принадлежности множеству; 8 INCLUDE включает новый элемент во множество, Include(S, I) 9 XCLUDE исключает элемент из множества, Exclude(S, I)
Дана строка, содержащая произвольный текст. Выяснить, чего больше: русских букв или цифр. Program С; Var s: string; a: set of 0. . 9; b: set of ‘a’. . ‘я’ ; k, k 1: integer; Begin a: =[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; b: =[‘a’, ’б’, ’в’, …, ‘я’]; {заполнение в примере сокращено} Writeln(‘Введите S’); Readln(S); k: =0; k 1: =0; For i: =1 to Length(s) do if s[i] in a then k: =k+1 else if s[i] in b then k 1: =k 1+1; if k>k 1 then Writeln(‘Цифр больше. ’) else if k 1>k Writeln(‘Русских букв больше. ’) else Writeln(‘Цифр и букв одинаковое количество. ’); End.
Записи представляют собой совокупность ограниченного числа логически связанных компонент, принадлежащих к разным типам. Пример описания записи: Объявление типа записи. type Имя = record TPerson = record Поле_1: Тип_1; fio: string[40]; Поле_2: Тип_2; day: integer; Поле_К: Тип_К: month: integer; end; year: integer; address: string[50]; Обращение к элементам записи: end; 1) имя. поле После объявления типа записи можно объявить переменную-запись, например 2) Инструкция WITH. var with Имя do student: TPerson; begin group: array[1. . 20] of TPerson; { инструкции программы } end;
По условию задачи известны результаты сессии группы студентов из 20 человек. Распечатать список студентов, имеющих неудовлетворительную оценку, хотя бы по одному из пяти предметов: Program С; Uses CRT; Type Student=record fam: string[20]; name: string[20]; mark: array[1. . 5 ] of integer; end; Var group: array[1. . 20] of student; k, i, j : integer; Begin clrscr; Writeln(‘Заполните сведения о студентах: ’); for i: =1 to 20 do begin Writeln(‘Информация о ’, i, ‘ студенте: ’) with group[i] do Begin Readln(fam); Readln(name) for j: =1 to 5 do Readln(mark[j]); end;
продолжение программы: Writeln(‘Список студентов сдавших сессию хотя бы с одной двойкой: ’); for i: =1 to 20 do begin k: =0; with group[i] do Begin for j: =1 to 5 do if mark[j]=2 then k: =k+1; if k<>0 then Wrteln(fam: 5, name); end; Readkey End.
В приведенном ниже фрагменте алгоритма, записанном на алгоритмическом языке, переменные a, b, c имеют тип «строка» , а переменные i, k – тип «целое» . Используются следующие функции: Длина (a) – возвращает количество символов в строке a. (Тип «целое» ) Извлечь (a, i) – возвращает i-тый (слева) символ в строке a. (Тип «строка» ) Склеить (a, b) – возвращает строку, в которой записаны сначала все символы строки a, а затем все символы строки b. (Тип «строка» ) Значения строк записываются в одинарных кавычках (Например, a : = ‘дом’). Фрагмент алгоритма: Какое значение будет у переменной b после выполнения i : = Длина (a) вышеприведенного фрагмента алгоритма, если значение k : = 2 переменной a было ‘ПОЕЗД’? b : = ‘А’ пока i > 0 нц c : = Извлечь (a, i) b : = Склеить (b, c) i : = i – k кц b : = Склеить (b, ‘Т’) 1) АДЕПТ 2) АДЗЕОП 3) АДТЕТПТ 4) АДЗОТ
Решение: A=ПОЕЗД № дейст. I В С 0 5 А ‘’ 1 3 АД Д 2 1 АДЕ Е 3 -1 АДЕП П 4 Цикл завершен 5 АДЕПТ В= АДЕПТ А 20 i : = Длина (a) k : = 2 b : = ‘А’ пока i > 0 нц c : = Извлечь (a, i) b : = Склеить (b, c) i : = i – k кц b : = Склеить (b, ‘Т’)
Задание С 3: Два игрока играют в следующую игру. Перед ними лежат две кучи камней, содержащих соответственно 3 и 4 камня. У каждого игрока неограниченно е количество камней. Ходят игроки по очереди. Делая очередной ход, игрок или увеличивает в какой – то кучке число камней в 2 раза, или добавляет в какую – то кучку 3 камня. Выигрывает тот игрок, после хода которого общее число камней в обеих кучах становиться не менее 24. Кто выиграет при безошибочной игре обоих игроков – игрок, делающий ход первым, или игрок, делающий второй ход?
1 – й ход Исходное состояние 2 - й ход 2 -й игрок 6, 4 6, 7 3, 7 6, 7 3, 8 3, 4 1 - й игрок 6, 8 3 - й ход 1 - й игрок 4 – й ход 2 - й игрок 12, 7 9, 7 6, 14 6, 10 24, 7 или 12, 14 18, 7 12, 14 или 6, 28 6, 20 Второй игрок выигрывает, удвоив число камней в соответствующей куче. 12, 8 9, 8 6, 16 6, 11 24, 8 18, 8 или 9, 16 12, 16 или 6, 32 6, 22 Второй игрок выигрывает, удвоив число камней в соответствующей куче. Из таблицы очевидно, что выиграет 2 –й игрок при любом ходе первого игрока.
Задание В 6 Цепочки символов (строки) создаются по следующему правилу. Первая строка состоит из одного символа, это цифра « 1» . Каждая из следующих цепочек создается следующим действием: сначала записывается порядковый номер данной строки, далее дважды записывается вся цепочка цифр из предыдущей строки. Первые четыре строки, созданные по этому правилу выглядят следующим образом: 1 211 3211211 43211211 Сколько раз в 10 – й строке встречаются четные цифры 2, 4, 6, 8?
Решение: Пронумеруем наши строки и проанализирует количество четных цифр в каждой из них: № строки Строка Количество четных цифр 1 1 0 2 211 1 3 3211211 2 4 43211211 5 В каждой нечетной строке количество четных цифр по сравнению с предыдущей удваивается, а в каждой четной строке по сравнению с предыдущей количество четных цифр будет равно удвоенному количеству цифр предыдущей строки +1. Составим таблицу распределения четных цифр по строкам: № строки Количество четных цифр 5 10 6 21 7 42 8 85 9 170 10 341 В 6 3 4 1
Задание В 6 Записано 6 строк, каждая имеет свой номер – от 0 до 5. В нулевой строке записана цифра 0 (ноль). Каждая последующая строка состоит из двух повторений предыдущей и Добавленного в конец своего номера. Ниже показаны первые четыре строки, Сформированные по описанному правилу (0) – 0 (1) - 001 (2) - 0010012 (3) - 00100123 Какая цифра стоит в последней строке на 62 – м месте?
Решение: Пронумеруем наши строки и проанализирует количество цифр в каждой строке: № строки Строка Количество цифр 0 0 1 1 001 3 2 0010012 7 3 00100123 15 № строки 31 5 Составим таблицу распределения количества цифр по строкам: Количество цифр 4 Получаем зависимость количества цифр последующей строки от предыдущей. Количество цифр в последующей строке Равно удвоенному количеству цифр в предыдущей +1. 63 Строка из 31 символа на 31 – м месте – цифра 4 В 6 Строка из 31 символа на 31 – м месте – цифра 4 Строка № 6 из 63 символов на 63 -м месте стоит цифра 5 4
Творческих вам успехов !


