Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2205 Прог на ЯВУ Павлов.doc
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
2.91 Mб
Скачать

Язык программирования Pascal

Оператору цикла с предусловием в языке Pascal соответствует последовательность:

while условие do

begin

группа операторов;

end;

Руководствуясь блок-схемой, записываем алгоритм на языке Pascal:

begin // начало программы

readln(A); // ввод переменной

Sum:=0.0; // установка суммы в ноль

K:=0; // установка К в ноль

while Sum<A do // заголовок цикла с условием

begin // начало группы операторов, выполняемых в цикле

K:=K+1; // увеличение K на единицу

Sum:=Sum+1/K; // увеличение суммы на одно слагаемое

end; // конец группы операторов, выполняемых в цикле

writeln('K = ',K-1); // вывод К

Поскольку в подсчёте суммы ряда слагаемое является вещественной переменной, переменная Sum должна быть объявлена как вещественная. В операции сравнения, используемой в условии, должны использоваться переменные одного типа, следовательно, переменная A также должна быть объявлена как вещественная. По условию задачи переменная K должна быть объявлена как целая. Поэтому в разделе объявления переменных программы, располагающемся перед началом программы, должна содержаться следующая запись:

Var // объявление переменных

K:Integer;

A,Sum:Double;

Реализация программы в среде Delphi выглядит следующим образом:

program prog_lr7;

// указание компилятору создать консольное приложение

{$APPTYPE CONSOLE}

var // объявление переменных

A,K:Integer;

Sum:Double;

begin // начало программы

// сообщение пользователю о цели программы

writeln('Programma dlya opredeleniya max znacheniya K, pri kotorom summa ryada 1+1/2+...+1/K menshe A.');

// сообщение пользователю о необходимости ввода переменной

write('Vvedite A: ');

readln(A); // ввод переменной

Sum:=0; // установка суммы в ноль

K:=0; // установка К в ноль

while Sum<A do // заголовок цикла с условием

begin // начало группы операторов, выполняемых в цикле

K:=K+1; // увеличение К на единицу

Sum:=Sum+1/K; // увеличение суммы на одно слагаемое

end; // конец группы операторов, выполняемых в цикле

writeln('K = ',K-1); // вывод К

readln; // задержка закрытия консольного окна

end. // конец программы

Язык программирования C

Оператору цикла с параметрами в языке C соответствует последовательность:

while(условие)

{

группа операторов;

}

Руководствуясь блок-схемой, записываем алгоритм на языке C:

scanf("%lf",&A); // ввод числа

Sum = 0.0; // установка суммы в ноль

K = 0.0; // установка К в ноль

while(Sum < A) // заголовок цикла c условием

{ // начало группы операторов, выполняемых в цикле

K++; // увеличения K на единицу

Sum = Sum+1/K; // увеличение суммы на одно слагаемое

} // конец группы операторов, выполняемых в цикле

printf("K = %lf\n",K-1); // вывод K

Поскольку в подсчёте суммы ряда слагаемое является вещественной переменной, переменная Sum должна быть объявлена как вещественная. В операции сравнения, используемой в условии, должны использоваться переменные одного типа, следовательно, переменная A также должна быть объявлена как вещественная. По условию задачи переменная K должна быть объявлена как целая. Однако чтобы не преобразовывать K к вещественному типу для подсчёта слагаемого, его также можно объявить как вещественное. Поэтому в разделе объявления переменных программы, располагающемся перед началом программы, должна содержаться следующая запись:

// объявление переменных

double Sum,K,A;

Реализация программы в среде С Builder выглядит следующим образом:

#pragma hdrstop

// подключение модуля, в котором определены функции ввода и вывода

#include <stdio.h>

// подключение модуля, в котором определены функции max и min

#include <stdlib.h>

#pragma argsused

int main(int argc, char* argv[]) {

// объявление переменных

double Sum,K,A;

// сообщение пользователю о цели программы

printf("Programma dlya opredeleniya max znacheniya K, pri kotorom summa ryada 1+1/2+...+1/K menshe A.\n");

// сообщение пользователю о необходимости ввода переменной

printf("Vvedite A: ");

scanf("%lf",&A); // ввод числа

Sum = 0.0; // установка суммы в ноль

K = 0.0; // установка К в ноль

while(Sum < A) // заголовок цикла c условием

{ // начало группы операторов, выполняемых в цикле

K++; // увеличения K на единицу

Sum = Sum+1/K; // увеличение суммы на одно слагаемое

} // конец группы операторов, выполняемых в цикле

printf("K = %lf\n",K-1); // вывод K

scanf("%lf",&A); // задержка закрытия консольного окна

return 0;

}

Этап 5. Тестирование и отладка. Проверяем работу программы. Составляем тесты и запускаем по ним программу.

В формализованное решение задачи подставляем А и подсчитываем сумму, увеличивая каждый раз K на единицу.

Составляем три теста:

1) А = 2; K = 3;

2) А = 5; K = 82;

3) А = 3.3; K = 14.

Запускаем программу и подставляем тестовые переменные:

1)

2)

3)

Результаты работы программы совпадают с ожидаемыми результатами — программа работает правильно.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]