1-11 класс
  • 1-11 класс
  • 1 класс
  • 2 класс
  • 3 класс
  • 4 класс
  • 5 класс
  • 6 класс
  • 7 класс
  • 8 класс
  • 9 класс
  • 10 класс
  • 11 класс
Выберите класс
Предметы
Семакин
§23 ГДЗ Семакин 10 класс (Информатика)
Семакин, Хеннер, Шеина
10 класс
Автор
Семакин, Хеннер, Шеина

§23 ГДЗ Семакин 10 класс (Информатика)

Задача

2. В чем различие между процедурами и функциями?
3. Какие существуют способы передачи данных между подпрограммой и вызывающей ее программой?
4. Составьте программу вычисления площади кольца по значениям внутреннего и внешнего радиусов, используя подпрограмму вычисления площади круга (два варианта: с процедурой и с функцией).
5. Составьте программу сложения двух простых дробей. Результат должен быть несократимой дробью. Используйте подпрограмму вычисления НОД по алгоритму Евклида. Простая дробь задается двумя целыми числами: числителем и знаменателем.
6. По координатам вершин треугольника вычислите его периметр, используя подпрограмму вычисления длины отрезка между двумя точками.
7. Даны три целых числа. Определите, у которого из них больше сумма цифр. Подсчет суммы цифр организуйте через подпрограмму.

Подробный ответ

1. Подпрограммы используют для разбиения программы на более простые части, повторного использования одинаковых действий и упрощения записи и отладки программы.

2. Процедура выполняет действия и не возвращает значение, а функция вычисляет одно значение и может использоваться в выражениях. В процедуру данные обычно передаются через параметры-аргументы, в функцию — через параметры и возвращаемое значение.

3. Данные между вызывающей программой и подпрограммой передаются через параметры, а также через глобальные переменные.

4. Площадь кольца равна разности площадей двух кругов:

$$S=\pi R^2-\pi r^2=\pi(R^2-r^2)$$

Ниже приведены два варианта программы: с процедурой и с функцией.

var r1, r2: real;

procedure pCircleSquare(r: real; var S: real);
begin
  S := Pi * sqr(r);
end;

function fCircleSquare(r: real): real;
begin
  fCircleSquare := Pi * sqr(r);
end;

begin
  Write(‘r1, r2 = ‘);
  ReadLn(r1, r2);
  WriteLn(‘Функция S = ‘, abs(fCircleSquare(r1) — fCircleSquare(r2)):5:2);
  pCircleSquare(r1, r1);
  pCircleSquare(r2, r2);
  WriteLn(‘Процедура S = ‘, abs(r1 — r2):5:2);
end.

5. Для сложения дробей сначала находим общий знаменатель, затем числитель суммы и сокращаем дробь, разделив числитель и знаменатель на НОД. НОД удобно находить по алгоритму Евклида.

Если даны дроби $$\frac{a}{b}$$ и $$\frac{c}{d}$$, то

$$\frac{a}{b}+\frac{c}{d}=\frac{ad+bc}{bd}$$

После этого:

$$g=\gcd(ad+bc,\,bd), \quad \frac{ad+bc}{bd}=\frac{(ad+bc)/g}{(bd)/g}$$

program SumFractions;
var
  a, b, c, d, num, den, g: integer;

function GCD(x, y: integer): integer;
begin
  while y <> 0 do
  begin
    g := x mod y;
    x := y;
    y := g;
  end;
  GCD := x;
end;

begin
  ReadLn(a, b, c, d);
  num := a * d + c * b;
  den := b * d;
  g := GCD(abs(num), abs(den));
  num := num div g;
  den := den div g;
  WriteLn(num, ‘/’, den);
end.

6. Периметр треугольника равен сумме длин его сторон. Длину стороны находим по формуле расстояния между двумя точками:

$$d=\sqrt{(x_2-x_1)^2+(y_2-y_1)^2}$$

var a1, b1, a2, b2, a3, b3: integer;
  p, a, b, c: real;

procedure dlina(x1, x2, y1, y2: integer; var d: real);
begin
  d := sqrt(sqr(x2 — x1) + sqr(y2 — y1));
end;

begin
  Read(a1, b1, a2, b2, a3, b3);
  dlina(a1, a2, b1, b2, a);
  dlina(a2, a3, b2, b3, b);
  dlina(a3, a1, b3, b1, c);
  p := a + b + c;
  Write(p:0:2);
end.

7. Для каждого числа находим сумму его цифр и сравниваем полученные значения.

Сумму цифр удобно вычислять подпрограммой:

$$s=\sum \text{цифр числа}$$

var
  a, b, c, sa, sb, sc: integer;

function SumDigits(n: integer): integer;
var s: integer;
begin
  s := 0;
  n := abs(n);
  while n > 0 do
  begin
    s := s + n mod 10;
    n := n div 10;
  end;
  SumDigits := s;
end;

begin
  ReadLn(a, b, c);
  sa := SumDigits(a);
  sb := SumDigits(b);
  sc := SumDigits(c);
  if (sa >= sb) and (sa >= sc) then
    WriteLn(a)
  else if (sb >= sa) and (sb >= sc) then
    WriteLn(b)
  else
    WriteLn(c);
end.

Ответ

1. Подпрограммы нужны для упрощения программы, повторного использования кода и разделения задачи на части.
2. Процедура не возвращает значение, функция возвращает одно значение и может входить в выражение.
3. Передача данных осуществляется через параметры и глобальные переменные.
4–7. Программы приведены выше.



Общая оценка
4.6 / 5
Другие учебники
Другие предметы