menu
person


ГДЗ Информатика 10 класс Семакин §23 Вспомогательные алгоритмы и подпрограммы


Вопросы и задания

1. Для чего используются подпрограммы?

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

2. В чем различие между процедурами и функциями?

Процедуры (subroutines) выполняют определенные действия, но не возвращают какое-либо значение. Они используются для выполнения действий без необходимости возвращать результат.
Функции (functions) также выполняют определенные действия, но возвращают результат (значение). Они могут быть использованы в выражениях или присвоены переменным.

3. Какие существуют способы передачи данных между подпрограммой и вызывающ ей ее программой?

Способы передачи данных между подпрограммой и вызывающей программой включают:

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

4. Составьте программу вычисления площади кольца по значениям внутреннего и внешнего радиусов, используя подпрограмму вычисления площади круга (два варианта: с процедурой и с функцией).

program AreaOfRing;

var
  InnerRadius, OuterRadius: real;

procedure CalculateCircleArea(var Radius: real; var Area: real);
begin
  Area := Pi * Radius * Radius;
end;

var
  InnerCircleArea, OuterCircleArea, RingArea: real;

begin
  writeln('Введите внутренний радиус: ');
  readln(InnerRadius);
  writeln('Введите внешний радиус: ');
  readln(OuterRadius);
  
  CalculateCircleArea(InnerRadius, InnerCircleArea);
  CalculateCircleArea(OuterRadius, OuterCircleArea);
  
  RingArea := OuterCircleArea - InnerCircleArea;
  
  writeln('Площадь кольца: ', RingArea:0:2);
  
  readln;
end.

5. Составьте программу сложения двух простых дробей. Результат должен быть несократимой дробью. Используйте подпрограмму вычисления НОД по алгоритму Евклида. Простая дробь задается двумя целыми числами: числителем и знаменателем.

program AddFractions;

function GCD(a, b: integer): integer;
begin
  while b <> 0 do
  begin
    a := a mod b;
    a := a + b;
    b := a - b;
    a := a - b;
  end;
  GCD := a;
end;

procedure ReduceFraction(var Numerator, Denominator: integer);
var
  CommonDivisor: integer;
begin
  CommonDivisor := GCD(Numerator, Denominator);
  Numerator := Numerator div CommonDivisor;
  Denominator := Denominator div CommonDivisor;
end;

var
  Numerator1, Denominator1, Numerator2, Denominator2: integer;

begin
  writeln('Введите числитель и знаменатель первой дроби: ');
  readln(Numerator1, Denominator1);
  writeln('Введите чиситель и знаменатель второй дроби: ');
  readln(Numerator2, Denominator2);
  
  Numerator1 := Numerator1 * Denominator2 + Numerator2 * Denominator1;
  Denominator1 := Denominator1 * Denominator2;
  
  ReduceFraction(Numerator1, Denominator1);
  
  writeln('Сумма дробей: ', Numerator1, '/', Denominator1);
  
  readln;
end.

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

program TrianglePerimeter;

type
  Point = record
    X, Y: real;
  end;

function CalculateDistance(P1, P2: Point): real;
begin
  CalculateDistance := sqrt(sqr(P2.X - P1.X) + sqr(P2.Y - P1.Y));
end;

var
  A, B, C: Point;
  Perimeter: real;

begin
  writeln('Введите координаты точки A (X Y): ');
  readln(A.X, A.Y);
  writeln('Введите координаты точки B (X Y): ');
  readln(B.X, B.Y);
  writeln('Введите координаты точки C (X Y): ');
  readln(C.X, C.Y);
  
  Perimeter := CalculateDistance(A, B) + CalculateDistance(B, C) + CalculateDistance(C, A);
  
  writeln('Периметр треугольника: ', Perimeter:0:2);
  
  readln;
end.

7. Даны три целых числа. Определите, у которого из них больше сумма цифр. Подсчет суммы цифр организуйте через подпрограмму.

program MaxSumOfDigits;

function SumOfDigits(Number: integer): integer;
var
  Sum, Digit: integer;
begin
  Sum := 0;
  while Number > 0 do
  begin
    Digit := Number mod 10;
    Sum := Sum + Digit;
    Number := Number div 10;
  end;
  SumOfDigits := Sum;
end;

var
  Num1, Num2, Num3, MaxSum: integer;

begin
  writeln('Введите три целых числа: ');
  readln(Num1, Num2, Num3);
  
  MaxSum := Num1;
  if SumOfDigits(Num2) > SumOfDigits(MaxSum) then
    MaxSum := Num2;
  if SumOfDigits(Num3) > SumOfDigits(MaxSum) then
    MaxSum := Num3;
  
  writeln('У числа ', MaxSum, ' больше сумма цифр.');
  
  readln;
end.


Вы просматриваете решебник ГДЗ Информатика 10 класс Семакин параграф 23

Сообщить о неточной информации или отсутствии ответов
Проверочный код, год рождения Д.И.Менделеева:
В каком задании/вопросе ошибка:
Как должно быть: