11 класс Информатика ГДЗ учебник Босова Параграф 7. Запись алгоритмов на языках программирования — Глава 2. Алгоритмы и элементы программирования
Стр.100-102.
1) Что такое язык программирования? Состав и интерфейс IDE
Решение. Язык программирования — формальная система правил для записи алгоритмов так, чтобы компьютер мог их выполнить. Язык задаёт синтаксис (как пишем команды) и семантику (что они означают). Среда разработки (IDE) обычно включает: редактор кода с подсветкой, сборщик/компилятор или интерпретатор, окно вывода/консоли, отладчик (точки останова, пошаговое выполнение, просмотр переменных), менеджер проектов и инструментов тестирования.
2) Примеры структур данных в Pascal
Решение. Базовые типы: integer, real, char, boolean, string. Составные: array (массивы одномерные/многомерные), record (запись/структура), set (множество), file (файловый тип). Есть также перечисления (enum) и диапазоны (..).
3) Основные элементы языка Pascal
Решение. Идентификаторы, ключевые слова (program, var, begin, end и др.), типы и константы, операторы присваивания и ввода/вывода, арифметические/логические/строковые операции, условные конструкции (if ... then ... else), циклы (for, while, repeat), процедуры/функции, модули (uses).
4) Структура программы на Pascal
Решение. Минимальный каркас: заголовок program (не обязателен), раздел uses (модули, по необходимости), раздел var (объявления), затем блок begin ... end. с операторами. Пример:
|
1 2 3 4 5 6 7 |
program Demo; uses Math; { по необходимости } var a, b: integer; begin readln(a, b); writeln(a + b); end. |
5) Для чего нужны трассировочные таблицы?
Решение. Это таблицы, где построчно фиксируют значения переменных при проходе по коду: удобно для отладки, понимания работы циклов и условий, поиска ошибок в алгоритме и подтверждения правильности.
6) Алгоритм «максимум из трёх» (дано x, y, z)
Решение. Описанный алгоритм присваивает t:=x, затем при необходимости заменяет t на y и далее на z. Он находит наибольшее из трёх чисел.
Pascal (максимум из 3):
|
1 2 3 4 5 6 7 8 |
var x, y, z, t: real; begin readln(x, y, z); t := x; if y > t then t := y; if z > t then t := z; writeln('max = ', t:0:3); end. |
Аналогично для четырёх (x, y, z, w): добавить if w > t then t := w;.
7) Значение n после выполнения программы
|
1 2 3 4 5 6 7 8 9 10 |
var s, n: integer; begin s:=0; n:=1; while sqr(s+2) < 125 do begin n:=n*2; s:=s+2; end; writeln(n) end. |
Решение. Значения s последовательно: 0→2→4→6→8→10, после чего проверка (12)^2<125 ложна. Умножений n:=n*2 выполнится 5 раз. Ответ: 32.
8) Значение s после выполнения вложенных циклов
|
1 2 3 4 5 6 7 8 |
var s, i, j: integer; begin s:=0; for i:=1 to 3 do for j:=i to 4 do s:=s + 2*i - j; writeln(s) end. |
Решение. Суммируем по парам (i,j):
i=1, j=1..4 → 1,0,−1,−2 (сумма −2);
i=2, j=2..4 → 2,1,0 (сумма 3);
i=3, j=3..4 → 3,2 (сумма 5). Итого 6.
9) Какое число выведет программа?
|
1 2 3 4 5 6 7 8 9 10 |
var n, s: integer; begin n:=0; s:=1000; while s >= 100 do begin s:=s-2; n:=n+1; end; write(n) end. |
Решение. Сколько раз можно вычесть 2, начиная с 1000, пока не станет <100? Последняя итерация при s=100 (после вычитания станет 98, цикл завершится). Число шагов: 451.
10) Программа выводит m (кол-во цифр) и n (максимальная цифра). Найдите наименьшее, наибольшее и число таких x, для которых напечатаны 4 и 8
|
1 2 3 4 5 6 7 8 9 10 11 12 |
var x, m, n: integer; begin readln(x); m:=0; n:=0; while x > 0 do begin if n < x mod 10 then n := x mod 10; m := m + 1; x := x div 10; end; writeln(m); write(n) end. |
Анализ. Требуется четырёхзначное число без цифры 9 и с хотя бы одной цифрой 8 (максимальная цифра равна 8).
- Минимальное x:
1008. - Максимальное x:
8888. - Сколько таких чисел: всего четырёхзначных на цифрах 0..8 —
8·9³=5832, без 8 —7·8³=3584. Разность: 2248.
11) Вывести все чётные трёхзначные числа
|
1 2 3 4 5 |
var x: integer; begin for x := 100 to 998 do if x mod 2 = 0 then writeln(x); end. |
Замечание: можно идти шагом 2: for x:=100 to 998 do x:=x+2 (в классическом Pascal — цикл с шагом 2 оформляют через while).
12) Сумма квадратов от 1 до n
|
1 2 3 4 5 6 7 |
var n, i, s: longint; begin readln(n); s := 0; for i := 1 to n do s := s + i*i; writeln(s); end. |
Проверка формулой: n(n+1)(2n+1)/6.
13) Проверить, входит ли заданная цифра d в неотрицательное число a
|
1 2 3 4 5 6 7 8 9 10 11 |
var a, d: longint; ok: boolean; begin readln(a, d); ok := false; if (d < 0) or (d > 9) then halt(0); while a > 0 do begin if a mod 10 = d then ok := true; a := a div 10; end; if ok then writeln('Yes') else writeln('No'); end. |
14) Перевод натурального числа l в троичную систему
|
1 2 3 4 5 6 7 8 9 10 11 |
var l: longint; s: string; begin readln(l); s := ''; while l > 0 do begin s := chr(ord('0') + (l mod 3)) + s; l := l div 3; end; if s = '' then s := '0'; writeln(s); end. |
15) Для точки (x, y) вывести «Да», если она принадлежит закрашенной области
§7 · Задача 15 — Фигура 1 (между квадратом и кругом)
|
1 2 3 4 5 6 7 |
var x, y: real; begin readln(x, y); if (abs(x) <= 3) and (abs(y) <= 3) and (x*x + y*y >= 9) then writeln('Да') else writeln('Нет'); end. |
§7 · Задача 15 — Фигура 2 (кольцо 2..3, закрашены два противоположных сектора)
Условие области: 4 ≤ x²+y² ≤ 9 и x·y ≤ 0 (верхний-левый и нижний-правый сектора). Оси считаем включёнными.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
var x, y, r2: real; inTopLeftRing, inBottomRightDisk, ok: boolean; begin readln(x, y); r2 := x*x + y*y; inTopLeftRing := (r2 >= 4) and (r2 <= 9) and (x <= 0) and (y >= 0); inBottomRightDisk := (r2 <= 4) and (x >= 0) and (y <= 0); ok := inTopLeftRing or inBottomRightDisk; if ok then writeln('Да') else writeln('Нет'); end. |
Если по замыслу автора оси не входят, замените <= на < в проверках и используйте x*y < 0.
16) Двузначный код: сумма цифр + их произведение = само число
Решение. Пусть число 10a + b. Условие: a + b + a·b = 10a + b ⇒ 9a = a·b ⇒ a(9 − b) = 0. Так как a ≥ 1, получаем b = 9. Подходят все числа 19, 29, …, 99 (их ровно 9).
| § 5 | § 6 | § 7 | § 8 | § 9 |