Нейросеть

ГДЗ: Параграф § 4.3 / Информатика 8 класс

Страницы: 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172
Глава: Глава 4. Начала программирования на языке Паскаль
Параграф: § 4.3 - Программирование линейных алгоритмов
Учебник: Информатика 8 класс -
Автор: Босова Людмила Леонидовна
Год: 2025
Издание: 7-е издание, стереотипное

Вопросы для самопроверки:

1. Какие основные типы данных используются в языке Паскаль?

Ответ:

В языке Паскаль используются следующие основные типы данных:

  • Вещественный (real)
  • Целочисленный (integer)
  • Символьный (char)
  • Строковый (string)
  • Логический (boolean)

2. Определите результат выполнения программы, которая вычисляет значение \( s \) по заданной математической формуле.

Ответ:

Программа вычисляет площадь треугольника по формуле Герона.

Исходные данные: \( a = 12 \), \( b = 5 \), \( c = 13 \).

1. Вычисляется полупериметр \( p \): \( p := (12 + 5 + 13) / 2 = 15.0 \).

2. Вычисляется площадь \( s \): \( s := \sqrt{15.0 * (15.0 - 12) * (15.0 - 5) * (15.0 - 13)} = \sqrt{900.0} = 30.0 \).

Результат работы программы: s = 30.0

Практические задания:

Разработайте и отладьте программу для вычисления значения \( y \) по формуле \( y = x^{3} + 2.5x^{2} - x + 1 \) для заданного \( x \). При этом нельзя использовать операцию возведения в степень. Также в программе должно быть не более пяти операторов присваивания. Подсказка: преобразуйте выражение к виду \( y = ((x + 2.5)x - 1)x + 1 \).

Решение на языке Паскаль

Используем преобразованное выражение для минимизации количества операций.

var x, y: real; begin write('Введите x >>'); readln(x); y := x + 2.5; y := y * x - 1; y := y * x + 1; writeln('y = ', y) end.
Напишите и отладьте программу, которая вычисляет длину отрезка \( AB \) по координатам точек \( A(x_{a}, y_{a}) \) и \( B(x_{b}, y_{b}) \). Расстояние \( d \) между точками определяется формулой: \( d = \sqrt{(x_{b}-x_{a})^{2} + (y_{b}-y_{a})^{2}} \). Используйте тестовые данные: \( x_{a}=2 \), \( y_{a}=1 \), \( x_{b}=10 \), \( y_{b}=7 \), ожидаемый результат \( |AB|=10.0 \).

Решение на языке Паскаль

Используем функцию sqrt для квадратного корня и sqr для квадрата.

var xa, ya, xb, yb, d: real; begin writeln('Вычисление длины отрезка'); write('Введите xa, ya: '); readln(xa, ya); write('Введите xb, yb: '); readln(xb, yb); d := sqrt(sqr(xb - xa) + sqr(yb - ya)); writeln('|AB| = ', d:0:1); end.
Известны длины сторон треугольника \( a, b, c \). Разработайте и отладьте программу для вычисления площади этого треугольника. Используйте тестовые данные: \( a=3 \), \( b=4 \), \( c=5 \), ожидаемый результат \( s=6.0 \).

Решение на языке Паскаль

Для вычисления площади \( s \) используем формулу Герона: \( s = \sqrt{p(p-a)(p-b)(p-c)} \), где \( p \) – полупериметр \( p = \frac{a+b+c}{2} \).

var a, b, c, p, s: real; begin writeln('Вычисление площади треугольника по трем сторонам'); write('Введите a, b, c: '); readln(a, b, c); p := (a + b + c) / 2; s := sqrt(p * (p - a) * (p - b) * (p - c)); writeln('s = ', s:0:1); end.
Известны координаты вершин треугольника \( A, B, C \). Напишите и отладьте программу для вычисления площади этого треугольника. (Подсказка: используйте формулу площади треугольника по координатам вершин: \( S = \frac{1}{2} |x_{A}(y_{B}-y_{C}) + x_{B}(y_{C}-y_{A}) + x_{C}(y_{A}-y_{B})| \).)

Решение на языке Паскаль

Используем формулу с модулем для вычисления площади по координатам вершин. Используем функцию abs для модуля.

var xa, ya, xb, yb, xc, yc, s: real; begin writeln('Вычисление площади треугольника по координатам вершин'); write('Введите xa, ya: '); readln(xa, ya); write('Введите xb, yb: '); readln(xb, yb); write('Введите xc, yc: '); readln(xc, yc); s := 0.5 * abs(xa * (yb - yc) + xb * (yc - ya) + xc * (ya - yb)); writeln('Площадь треугольника S = ', s); end.
Если налог рассчитывается в рублях и копейках, налоговая служба округляет его до ближайшего рубля (до 50 копеек — с недостатком, 50 копеек и более — с избытком). Используя компьютер, введите точную сумму налога и выведите сумму, которую необходимо уплатить. (Используйте функцию <strong>round</strong>).

Решение на языке Паскаль

Для округления, где 50 копеек округляется вверх, используется функция round.

var nal_tochnyi: real; nal_uplata: integer; begin writeln('Округление налоговой суммы'); write('Введите точную сумму налога (руб.коп.): '); readln(nal_tochnyi); nal_uplata := round(nal_tochnyi + 0.0000001); // Добавление малой величины для корректного округления .5 writeln('Сумма к уплате (руб.): ', nal_uplata); end.
Изучите работу функции random, запустив программу многократно. Как получить случайное число из интервала \( (0, x) \), из интервала \( (0, x] \), и из интервала \( [n, n+x) \)?

Работа функции random

Функция random без аргументов возвращает вещественное число \( r \in [0, 1) \). С целочисленным аргументом \( x \) возвращает целое число \( i \in [0, x-1] \).

  • Случайное число из интервала \( (0, x) \): \( \text{random} * x \).
  • Случайное число из интервала \( (0, x] \): Для целых \( \text{random}(x) + 1 \), для вещественных \( \text{random} * x \) (в Паскале часто используется для приближения).
  • Случайное число из интервала \( [n, n+x) \): \( n + \text{random} * x \).
Разработайте и отладьте программу, которая для произвольного натурального двузначного числа \( \text{N} \) определяет: а) его сумму цифр; б) его произведение цифр; в) число, полученное перестановкой цифр исходного числа.

Решение на языке Паскаль

Пусть \( \text{N} \) — двузначное число. Первая цифра \( a = \text{N} \ div \ 10 \), вторая цифра \( b = \text{N} \ mod \ 10 \).

var n, a, b, sum_cifr, proiz_cifr, perestanovka: integer; begin write('Введите двузначное число: '); readln(n); a := n div 10; b := n mod 10; sum_cifr := a + b; proiz_cifr := a * b; perestanovka := b * 10 + a; writeln('Сумма цифр: ', sum_cifr); writeln('Произведение цифр: ', proiz_cifr); writeln('Число с переставленными цифрами: ', perestanovka); end.
Разработайте и отладьте программу, реализующую алгоритм работы кассира. Кассир выдает покупателю сдачу \( s \) имеющимися купюрами номиналом 500, 200, 100, 50 рублей, а также монетами. Программа должна вывести, сколько купюр каждого номинала выдано и сколько сдано монетами. Если сдача не может быть выдана имеющимися купюрами, должно быть сообщение об этом.

Решение на языке Паскаль

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

var s, ostatok, k500, k200, k100, k50: integer; begin write('Введите сумму сдачи (руб.): '); readln(s); ostatok := s; k500 := ostatok div 500; ostatok := ostatok mod 500; k200 := ostatok div 200; ostatok := ostatok mod 200; k100 := ostatok div 100; ostatok := ostatok mod 100; k50 := ostatok div 50; ostatok := ostatok mod 50; writeln('Сдача ', s, ' руб. выдается:'); writeln('Банкнот по 500 руб. - ', k500, ' шт.'); writeln('Банкнот по 200 руб. - ', k200, ' шт.'); writeln('Банкнот по 100 руб. - ', k100, ' шт.'); writeln('Банкнот по 50 руб. - ', k50, ' шт.'); writeln('Монетами - ', ostatok, ' руб.'); end.
Идет \( k \)-я секунда суток. Разработайте и отладьте программу, которая определяет, сколько полных часов \( h \) и минут \( m \) прошло с начала суток по введенной \( k \)-й секунде. Выведите на экран фразу: It is ... hours...

Решение на языке Паскаль

Количество секунд в часе: \( 3600 \). Количество секунд в минуте: \( 60 \).

var k, h, m, ostatok: integer; begin write('Введите k-ю секунду суток: '); readln(k); h := k div 3600; ostatok := k mod 3600; m := ostatok div 60; writeln('It is ', h, ' hours ', m, ' minutes'); end.
Разработайте и отладьте программу, вычисляющую сумму кодов букв в слове 'БАЙТ'.

Решение на языке Паскаль

Программа складывает коды символов 'Б', 'А', 'Й', 'Т' с помощью функции ord.

var s: integer; begin s := ord('Б') + ord('А') + ord('Й') + ord('Т'); writeln('Сумма кодов букв в слове БАЙТ: ', s); end.
Разработайте и отладьте программу, которая формирует и выводит на экран строку символов, коды которых равны \( 66, 69, 71, 73, 78 \).

Решение на языке Паскаль

Программа использует функцию chr для преобразования кодов в символы и выводит их в одну строку.

var s: string; begin s := chr(66) + chr(69) + chr(71) + chr(73) + chr(78); writeln('Строка символов: ', s); end.
Создайте программу, которая запрашивает три строки (например, прилагательное, существительное и глагол) и затем выводит все возможные варианты фраз, используя введенные слова.

Решение на языке Паскаль

Используем строковую конкатенацию для создания всех 6 ( \( 3! \) ) возможных перестановок слов.

var s1, s2, s3: string; begin write('Введите прилагательное: '); readln(s1); write('Введите существительное: '); readln(s2); write('Введите глагол: '); readln(s3); writeln('Варианты фраз:'); writeln(s1, ' ', s2, ' ', s3); writeln(s1, ' ', s3, ' ', s2); writeln(s2, ' ', s1, ' ', s3); writeln(s2, ' ', s3, ' ', s1); writeln(s3, ' ', s1, ' ', s2); writeln(s3, ' ', s2, ' ', s1); end.
Напишите и отладьте программу, которая принимает слова 'ИНФОРМАТИКА', 'ФОРМА', 'ФИРМА', 'МАК' и 'СЛОВА', после чего подсчитывает общее количество символов в этих словах.

Решение на языке Паскаль

Используем функцию length(s) для определения длины каждой строки.

var s1, s2, s3, s4, s5: string; total_length: integer; begin s1 := 'ИНФОРМАТИКА'; s2 := 'ФОРМА'; s3 := 'ФИРМА'; s4 := 'МАК'; s5 := 'СЛОВА'; total_length := length(s1) + length(s2) + length(s3) + length(s4) + length(s5); writeln('Общее количество символов: ', total_length); // Ожидаемый результат: 11 + 5 + 5 + 3 + 5 = 29 end.
Напишите программу, которая угадывает дату рождения человека с помощью арифметического фокуса: человек умножает число дня рождения на 2, прибавляет к результату 5, умножает полученный результат на 50, прибавляет номер месяца и сообщает получившееся число. Компьютер должен запросить у пользователя результат вычислений и вывести месяц и день его рождения. Подсказка: для даты рождения 12 марта (12-й день, 3-й месяц), вычисления: \( 12 \cdot 2 = 24 \), \( 24 + 5 = 29 \), \( 29 \cdot 50 = 1450 \), \( 1450 + 3 = 1453 \). Число 1453...

Решение на языке Паскаль

Пусть \( \text{Result} \) — полученное число, \( \text{D} \) — день, \( \text{M} \) — месяц. Обратный алгоритм: \( \text{TrueResult} = \text{Result} - 250 \). Тогда \( \text{D} = \text{TrueResult} \ div \ 100 \), \( \text{M} = \text{TrueResult} \ mod \ 100 \).

var result, true_result, day, month: integer; begin writeln('Фокус - угадывание даты рождения'); write('Попросите человека выполнить вычисления и ввести результат: '); readln(result); true_result := result - 250; day := true_result div 100; month := true_result mod 100; writeln('Ваша дата рождения: ', day, ' / ', month); end.
Даны целочисленные переменные \( a = 10 \), \( b = 20 \). Какое значение получит логическая переменная \( rez \) после выполнения следующих операторов присваивания? a) \( \text{rez} := (a = 10) \text{ or } (b > 10) \); b) \( \text{rez} := (a > 5) \text{ and } (b > 5) \text{ and } (a < 20) \text{ and } (b < 30) \); c) \( \text{rez} := \text{not} (a < 15) \text{ or } (b > 20) \).

Решение

Исходные данные: \( a = 10 \), \( b = 20 \).

  • a) \( \text{rez} := (a = 10) \text{ or } (b > 10) \): \( (10 = 10) \) true, \( (20 > 10) \) true. \( \text{true} \text{ or } \text{true} \) дает true.
  • b) \( \text{rez} := (a > 5) \text{ and } (b > 5) \text{ and } (a < 20) \text{ and } (b < 30) \): \( (10 > 5) \) true, \( (20 > 5) \) true, \( (10 < 20) \) true, \( (20 < 30) \) true. \( \text{true} \text{ and } \text{true} \text{ and } \text{true} \text{ and } \text{true} \) дает true.
  • c) \( \text{rez} := \text{not} (a < 15) \text{ or } (b > 20) \): \( (10 < 15) \) true, \( \text{not} (\text{true}) \) false. \( (20 > 20) \) false. \( \text{false} \text{ or } \text{false} \) дает false.
Воспроизведите программу в среде PascalABC.NET, создающую изображение, состоящее из треугольника, окружности и квадрата, используя графические примитивы GraphABC. Затем измените программу так, чтобы получилось изображение: квадрат, внутри которого находится окружность, внутри окружности — треугольник (как на схеме в учебнике).

Исходная программа на языке Паскаль

uses GraphABC; begin // Треугольник Line(50, 250, 150, 100); Line(150, 100, 250, 250); Line(250, 250, 50, 250); // Окружность Circle(300, 150, 50); // Квадрат Rectangle(400, 100, 500, 200); end.

Программа с измененным изображением

Для создания требуемого изображения: квадрат, в нем окружность, в ней треугольник.

uses GraphABC; begin // Квадрат (200x200) Rectangle(100, 100, 300, 300); // Окружность (центр (200, 200), радиус 100) Circle(200, 200, 100); // Треугольник внутри окружности Line(150, 250, 250, 250); Line(250, 250, 200, 150); Line(200, 150, 150, 250); end.

Задали создать проект?

Создай с помощью ИИ за 5 минут

До 90% уникальность
Готовый файл Word
15-30 страниц
Список источников по ГОСТ
Оформление по ГОСТ
Таблицы и схемы

Готовые проекты

Список готовых проектов к текущему параграфу.

Уведомление об авторском праве и цитировании

ВНИМАНИЕ: Представленные фрагменты из учебных материалов используются исключительно в научно-образовательных целях в объеме, оправданном поставленной целью.

Данное использование осуществляется в рамках, установленных законодательством об авторском праве (в частности, нормами о свободном использовании произведения для образовательных целей).

В соответствии с законодательством, автор и источник заимствования указаны для каждого используемого фрагмента.