- •Основные понятия программирования
- •Понятие алгоритма. Алгоритмизация
- •Свойства алгоритма
- •Запись алгоритма на естественном языке
- •Изображение алгоритма в виде схемы
- •Понятие о языках программирования
- •Понятие о структурном подходе к разработке алгоритмов
- •4 Идти к 8
- •6 Идти к 8
- •8 Останов
- •Первая программа на Си
- •Процесс создания программы
- •Комментарии
- •Директива #include
- •Макросы
- •Переменные и типы данных
- •Правила именования идентификаторов
- •Типы данных
- •Int двухбайтовое целое число
- •Оператор printf: вывод на экран
- •Последовательности для вывода специальных символов
- •Спецификация вывода
- •X тип int в шестнадцатеричном виде
- •Оператор scanf: ввод с клавиатуры
- •Логическая организация программы на Си
- •Функция main
- •Глобальные и локальные переменные
- •Операторы и операции
- •Арифметические операции
- •Битовые операции
- •Операции отношения
- •Логические операции
- •Операции присваивания
- •Другие операции
- •Математические функции
- •Управляющие структуры
- •Операторы ветвления
- •Операторы цикла
- •Массивы
- •Функции
- •Интегрированная среда разработки turbo c
- •Общие сведения и принципы работы
- •Стандартные органы управления
- •Главное меню
- •Запуск иср и выход
- •Работа с окнами и файлами
- •Система помощи
- •Редактор
- •Компиляция и выполнение программ
- •Технология создания с-программы
- •Лабораторные работы
- •Лабораторная работа №1
- •Создание нового файла
- •Ввод и редактирование исходного текста
- •Сохранение
- •Выполнение программы
- •Исправление ошибок
- •Просмотр результатов выполнения
- •Закрытие файла
- •Открытие и выполнение ранее сохраненного файла
- •Вызов справки
- •Лабораторная работа №2
- •Лабораторная работа №3
- •Лабораторная работа №4
- •Лабораторная работа №5
- •Лабораторная работа №6
- •Лабораторная работа №7
- •Лабораторная работа №8
- •Список вопросов
- •Литература
- •Приложение Пример оформления отчета по лабораторной работе
- •Блок-схема алгоритма
- •Текст программы
- •Результат выполнения программы
- •Теория и технология программирования
-
Лабораторная работа №6
Целью работы является освоение программирования алгоритмов с циклической структурой и выхода из цикла по условию, не зависящему от количества циклов. Примером такой задачи является вычисление суммы с бесконечным верхним пределом.
Порядок выполнения работы:
-
изучить операторы цикла while и do while (параграф 13.2);
-
определить формулу для вычисления выражения под знаком суммы;
-
разработать блок-схему;
-
составить текст программы на языке Cи;
-
проверить правильность выполнения разработанной программы;
-
составить отчет.
Проверка цикла осуществляется следующим образом. Так как выражение под знаком суммы постепенно убывает с ростом слагаемых в сумме, то наступает момент, когда очередное слагаемое станет меньше некоторого заранее заданного числа (грубо говоря, точности вычисления сумм), и остальные слагаемые будут мало влиять на конечный результат. Поэтому, когда выражение под знаком суммы будет меньше , то вычисления прекращаются и предполагается, что сумма найдена с заданной точностью.
В языке Си для циклов с заранее неизвестным числом повторений обычно используются операторы while или do while.
При вычислении суммы должен вычисляться факториал по формуле:
,
где — знак произведения, например . Факториал 0 равен 1.
В программе факториал можно вычислить отдельным циклом, а можно и непосредственно в цикле вычисления суммы, воспользовавшись итерационным выражением . Для этого вводится дополнительная переменная, например , и затем в каждом цикле домножается на текущее значение индекса суммы .
Кроме значения суммы на печать полезно вывести значение счетчика циклов, то есть узнать, из скольких слагаемых состоит сумма.
Примечание. В языке Си под переменные типа int выделяется два байта и допустимые для них значения находятся в диапазоне только от –32 768 до 32 767. Поэтому число 10!, реально равное 3 628 800, в этом случае из-за переполнения будет представлено в памяти компьютера как 24 320. Таким образом, выражение под знаком суммы может никогда и не стать меньше заданной точности. Для работы с большими числами рекомендуется использовать вещественные типы float с диапазоном представления от 8,410-37 до 3,410+38 и double с диапазоном от 2,210-308 до 1,910+308 или целый тип long с диапазоном значении от –2 147 483 648 до 2 147 483 647.
Пример. Вычислить , при с точностью до .
Листинг 20 — Лабораторная работа №6
/* lab6.c - лабораторная работа №6. */
#include <stdio.h> #include <conio.h> #include <math.h>
#define e 1e-3 /* точность */
void main() { double s = 0, s_k; /* для вычисления суммы */ const double x = 0.81; double fact = 1; /* для вычисления факториала */ int k = 1;
clrscr();
/* заголовок таблицы */ printf(“------------------------------\n”); printf(“| Шаг | Факториал | Значение |\n”); printf(“------------------------------\n”);
/* вычисление суммы при помощи цикла do-while */ do { fact *= k; s_k = (k + x) / fact * exp(x / k); printf(“| %3d | %9.0f | %8.4f |\n”, k, fact, s_k); s += s_k; k++; } while (fabs(s_k) > e);
printf(“------------------------------\n”); /* вывод результатов */ printf(“Значение суммы: %f”, s); } |
Рисунок 54 — Результат выполнения lab6.c
Таблица 11 — Варианты заданий к лабораторной работе №6
№ вар. |
Вычислить |
При , равном |
Точность вычислений |
1 |
|
0,149 |
10 -5 |
2 |
|
5,99 |
10 -3 |
3 |
|
3,1 |
10 -4 |
4 |
|
1,91 |
10 -5 |
5 |
|
1,42 |
10 -3 |
6 |
|
0,99 |
10 -4 |
7 |
|
1,51 |
10 -5 |
8 |
|
3,48 |
10 -3 |
9 |
|
7,55 |
10 -4 |
10 |
|
2,15 |
10 -5 |