Программа Triangle из тетради занимает страницу: константы, четыре переменные, Readln, три формулы. Это та самая площадь по Герону, которую мы рисовали блок-схемой в уроке 2.1. Схема была из четырёх фигур, программа из четырнадцати строк, но соответствие один в один. Пройдём её строку за строкой, а по дороге разберём, как программа разговаривает с человеком: ввод и вывод.
Чему научишься. После урока сможешь: считать значения с клавиатуры через Read и Readln; вывести текст и числа через Write и Writeln; задать ширину и число знаков после точки форматом a:5 и c:20:5; перевести линейную блок-схему в программу; прочитать программу Triangle и найти в ней ошибку в формуле.
Вспомни. Блок «данные» (параллелограмм) в схеме означает ввод и вывод (урок 2.1). Формула Герона: p = (a + b + c) / 2, S = √(p·(p−a)·(p−b)·(p−c)); трассировка на 3-4-5 давала 6. Типы Integer и Real и раздел Var разобраны в уроке 3.2.
Ввод: Read и Readln
Ввод это параллелограмм «ввод R» из блок-схемы. Программа останавливается и ждёт, пока человек наберёт число и нажмёт Enter, потом кладёт число в ящик. Пишется так: Read(a) или Readln(a, b, c): в скобках список ящиков через запятую. Разница между Read и Readln в хвосте ln (от слова line, строка): Readln после чтения переходит на новую строку ввода, Read остаётся на той же. В начале курса используй Readln: с ним меньше сюрпризов.
Вывод: Write и Writeln
Вывод это параллелограмм «вывод P». Write(...) печатает на экран то, что в скобках, и оставляет курсор в той же строке; Writeln(...) печатает и переводит строку. В скобках через запятую можно смешивать текст в апострофах и ящики: текст печатается как есть, вместо ящика печатается его содержимое.
Write('Введите стороны треугольника a, b, c: '); { текст, курсор остаётся в строке }
Readln(a, b, c); { человек вводит три числа }
Writeln('Площадь = ', S); { текст и содержимое ящика S }
Write перед Readln называется приглашением: без него программа молча ждёт ввода, и человек не понимает, что от него хотят. В тетради именно так: сначала Write с текстом, потом Readln.
Форматный вывод: a:5 и c:20:5
Вещественное число без формата печатается некрасиво: 6.0000000000E+00 или 12.559999999. Формат после двоеточия говорит, сколько места отвести под число и сколько знаков оставить после точки. Запись из тетради Writeln(a:5, b, c:20:5) читается так: a в поле шириной 5 символов (выравнивание по правому краю), b как есть, c в поле шириной 20 с пятью знаками после точки.
ФОРМАТ ВЫВОДА ящик:ширина:знаков_после_точки a = 42, c = 12.56 Writeln(a); → 42 Writeln(a:5); → ···42 (поле 5, число прижато вправо) Writeln(c); → 1.2560000000E+01 (некрасиво) Writeln(c:20:5); → ············12.56000 (поле 20, 5 знаков) Writeln(c:0:2); → 12.56 (ширина 0 = по размеру, 2 знака) · — пробел. Для вещественных почти всегда хватает :0:2.
Пример 1 из тетради: сумма двух целых
Самая короткая полезная программа: ввести два целых числа и вывести их сумму. Здесь видна вся структура из урока 3.1 и все три этапа алгоритма: ввод, вычисление, вывод.
Program qq;
Var a, b, c: Integer;
Begin
Read(a, b);
c := a + b;
Writeln(c);
end.
3 4
7
Запусти её: программа ждёт, ты вводишь 3 4 и Enter, на экране появляется 7. Это первый рабочий круг «написал → запустил → увидел». Сравни с блок-схемой: ввод a, b → c := a + b → вывод c. Три фигуры, три оператора.
Разбор: Program Triangle
Теперь программа из тетради целиком, с комментариями в фигурных скобках, как у преподавателя. По трём сторонам она считает полупериметр, площадь и две длины окружностей: описанной вокруг треугольника и вписанной в него.
Program Triangle;
Const
Pi = 3.1415926;
Var
a, b, c: Real; { стороны }
S, p: Real; { площадь и полупериметр }
Sout, Sint: Real; { длины описанной и вписанной окружностей }
Begin
{ ввод данных }
Write('Введите стороны треугольника a, b, c: ');
Readln(a, b, c);
{ вычисления }
p := (a + b + c) / 2;
S := Sqrt(p * (p - a) * (p - b) * (p - c));
Sout := 2 * Pi * (a * b * c / (4 * S)); { R = abc / (4S) }
Sint := 2 * Pi * (S / p); { r = S / p }
{ вывод }
Writeln('Площадь = ', S:0:2);
Writeln('Описанная окружность = ', Sout:0:2);
Writeln('Вписанная окружность = ', Sint:0:2);
end.
Введите стороны треугольника a, b, c: 3 4 5
Площадь = 6.00
Описанная окружность = 15.71
Вписанная окружность = 6.28
Проверка на 3-4-5: площадь 6 (сошлось с трассировкой из урока 2.1). Радиус описанной окружности R = abc/(4S) = 60/24 = 2.5, длина 2πR ≈ 15.71. Радиус вписанной r = S/p = 6/6 = 1, длина 2π ≈ 6.28. Все три числа разумные: у прямоугольного треугольника 3-4-5 описанная окружность проходит через концы гипотенузы, её диаметр 5, радиус 2.5, сошлось.
Sqrt это стандартная функция «квадратный корень». В тетради следующая тема так и называется: стандартные функции; с ними будет отдельный урок. Пока запомни две: Sqrt(x) даёт корень, Sqr(x) квадрат.
Сверь с тетрадью. В конспекте формулы окружностей записаны иначе: Sout := pi*sqrt(a*b*c/4/S) и Sint := pi*sqrt(2*S/p). Радиус описанной окружности R = abc/(4S), вписанной r = S/p, без корня, а длина окружности 2πR. Корень там лишний (и двойка перед π потеряна): при 3-4-5 запись из тетради даст не 15.71 и 6.28, а 4.97 и 4.44. Возможно, так продиктовали, возможно, ошибка при записи. На занятии в группе стоит спросить преподавателя; в своей программе используй формулы из этого урока и проверяй на 3-4-5.
Схема → программа: правило перевода
БЛОК-СХЕМА → ПАСКАЛЬ ( Начало ) Begin / ввод a, b, c / Readln(a, b, c); [ p := (a+b+c)/2 ] p := (a + b + c) / 2; [ S := sqrt(...) ] S := Sqrt(p * (p - a) * (p - b) * (p - c)); / вывод S / Writeln(S:0:2); ( Конец ) end. Параллелограмм → Readln / Writeln, прямоугольник → присваивание, овал → Begin / end. Плюс над схемой: раздел Var для всех ящиков.
Контрольный вопрос. Какой оператор печатает на экран и переводит курсор на новую строку?
Подсказка: Хвост ln идёт от слова «строка».
Онлайн-проверка ответа появится позже
Контрольный вопрос. Программа из примера 1: Read(a, b); c := a + b; Writeln(c). Пользователь ввёл 12 и 30. Что появится на экране? Впиши число.
Подсказка: Пройди три оператора по порядку: что легло в a и b, что легло в c.
Онлайн-проверка ответа появится позже
Контрольный вопрос. Что означает 5 в записи Writeln(c:20:5)?
Подсказка: Первое число после двоеточия задаёт ширину, второе точность.
Онлайн-проверка ответа появится позже
Контрольный вопрос. В программе Triangle перед Readln стоит Write с текстом в апострофах. Как называется такой вывод перед вводом, который объясняет человеку, что вводить? Впиши одно слово.
Подсказка: Так же называют надпись «Введите пароль» перед полем ввода.
Онлайн-проверка ответа появится позже
Контрольный вопрос. Какая стандартная функция в программе Triangle извлекает квадратный корень? Впиши её имя латиницей.
Подсказка: Она стоит в строке, где считается площадь S.
Онлайн-проверка ответа появится позже
Контрольный вопрос. Какой фигуре блок-схемы соответствует оператор Readln(a, b, c)?
Подсказка: Та же фигура, что и у вывода.
Онлайн-проверка ответа появится позже
Контрольный вопрос. Переменная x типа Real равна 3.14159. Что напечатает Writeln(x:0:2)? Впиши число (дробная часть через точку или запятую).
Подсказка: Ширина 0 значит «по размеру числа», второе число формата задаёт, сколько знаков оставить после точки.
Онлайн-проверка ответа появится позже
Задание. Программа компилируется, но печатает неверную сумму: один оператор стоит не на своём месте: он использует ящики раньше, чем в них что-то положили. Впиши имя переменной, которая получает значение слишком рано.
Исходный код для этого задания:
Program Summa; Var a, b, c: Integer; Begin Write('Введите два числа: '); c := a + b; Readln(a, b); Writeln('Сумма = ', c); end.Подсказка: Пройди операторы сверху вниз и у каждого спроси: все ли ящики справа от := уже заполнены? Ту же ошибку ты искал в блок-схеме окружности.
✅ Готово, если: ты ввёл(а) верный ответ, и онлайн-проверка его приняла.
Онлайн-проверка ответа появится позже
Контрольный вопрос. В тетради длина вписанной окружности записана как Sint := pi*sqrt(2*S/p). Правильная формула: радиус r = S/p, длина = 2·π·r. Какая строка на Паскале верна?
Подсказка: В формуле длины окружности корня нет, а двойка перед π есть.
Онлайн-проверка ответа появится позже
Задание. Переведи блок-схему в программу на Паскале: Const с pi = 3.14, Var для R, L, A типа Real, приглашение Write, Readln, два присваивания, вывод обоих результатов форматом :0:2. Запусти при R = 2 и впиши через пробел два числа, которые напечатала программа, например 6.28 3.14.
Принято, если: (1) числа совпали; (2) есть разделы Const и Var, приглашение перед Readln, оба вывода с форматом :0:2; (3) программа скомпилировалась и запустилась (скриншот экрана с результатом).Задача: по радиусу R найти длину окружности L = 2·π·R и площадь круга A = π·R².
Блок-схема (урок 2.1): ввод R → L := 2·pi·R → A := pi·R·R → вывод L, A.
Подсказка: При R = 2 длина 2·3.14·2, площадь 3.14·2·2. Формат :0:2 оставит два знака после точки.
✅ Готово, если: ответ раскрывает то, что просит критерий приёмки в задании выше.
Онлайн-проверка ответа появится позже
Итог. Readln(a, b) кладёт введённые числа в ящики; Write печатает и оставляет курсор в строке, Writeln переводит строку; перед вводом ставь приглашение. Формат x:ширина:знаков делает вывод читаемым, для вещественных чаще всего :0:2. Линейная блок-схема переводится в программу один в один: параллелограмм → Readln/Writeln, прямоугольник → присваивание, овал → Begin/end. Программа Triangle считает площадь по Герону и длины окружностей; формулы из тетради стоит сверить с преподавателем.
Что дальше
В тетради анонсирована тема «Стандартные функции»: Sqrt, Sqr, Abs, Trunc, Round и другие. Как только группа её пройдёт, здесь появится урок 3.4, а следом ветвление if в Паскале (глава 4): ромб из главы 2 превратится в текст.
