- •Лабораторный практикум Дисциплина «Информатика»
- •230400 «Информационные системы и технологии»
- •1.1. Порядок создания программы
- •1.2. Ввод и выполнение программы
- •1.3. Модификация программы
- •1.4. Пошаговое выполнение программы
- •1.5. Сообщения компилятора и компоновщика
- •1.6. Действия в случае ошибки выполнения
- •1.6. Помощь справочной службы
- •1. Вычисление площади и периметра геометрической фигуры
- •2. Вычисления по формулам с вещественными числами
- •3. Арифметические операции для целочисленных данных
- •4. Циклы с заданным числом повторений
- •5. Алгоритмы с разветвлениями
- •6. Циклы с условием
- •7. Последовательная обработка данных
- •8. Поразрядные операции
1. Вычисление площади и периметра геометрической фигуры
Цель: выработка умений составления, отладки и тестирования программ линейной структуры и оформления отчетов лабораторного практикума по программированию.
Задание: определить площадь кольца s и расстояние r от начала координат до центра кольца, образованного двумя окружностями с радиусами r1 и r2 и с центром в точке (xc, yc). Вывести данные задачи на экран в формате с фиксированной точкой с 3 знаками после точки.
Пример отчёта по данному заданию приведён в приложении 2.1.
/* Программа 1
ТЕСТ: r1=1.0, r2=2.0, xc=3.0, yc=4.0, s=9.424, r=5.0
*/
#include <stdio.h> /* заголовочный файл (текстовый), содержит описания прототипов используемых в программе функций scanf() и printf(), осуществляющих форматированный ввод и вывод на консоль, – это комментарий */
#include <math.h> //прототипы математических функций, константы,
void main() // главная функция Си-программы
// – это однострочный комментарий
{ float r1, r2, xc, yc, s, r, x, z;
printf("\n\n\t *** РАБОТА 1 ***"); // \t – символ табуляции
// \n – символ перехода на другую строку
printf("\n Выполнил: Иванов П.С., группа У-11, вариант 13 \n");
printf(" Введите r1, r2, xc, yc:\t ");
scanf("%f%f%f%f ", &r1, &r2, &xc, &yc); // & - операция взятия адреса:
// при форматированном вводе в С указывается адрес переменной
printf(" Исходные данные: \n r1=%.3f r2=%.3f xc=%.3f yc=%.3f \n",
r1, r2, xc, yc); // Контролируем ввод исходных данных (для чего?):
s = M_PI*(r2*r2 - r1*r1); // M_PI - константа π = 3.1415...
r = sqrt(xc*xc + yc*yc);
printf(" Результаты: s=%.3f r=%.3f \n", s, r);
} // %.3f – спецификация формата: вывод вещественного числа // типа float с 3 знаками после точки
Результаты работы программы на экране монитора:
*** РАБОТА 1***
Выполнил: Иванов П.С., группа У-12, вариант 13
Введите r1, r2, xc, yc: 1 2 3 4
Исходные данные:
r1=1.000 r2=2.000 xc=3.000 yc=4.000
Результаты: s=9.424 r=5.000
Вопросы и упражнения:
-
Какие данные содержатся в заголовочных файлах?
-
Как в программе указываются комментарии и их назначение?
-
Можно ли объявить переменные в конце программы?
-
Поясните назначение каждого элемента в строке ввода данных scanf … .
-
Поясните последовательность операций при вычислении s.
-
Дано действительное число a. Как вычислить а7 с использованием операций умножения и присваивания за четыре операции умножения, а64 – за шесть операций умножения?
2. Вычисления по формулам с вещественными числами
Цель: выработка умений программирования арифметических выражений с вещественными переменными и константами и использования библиотечных функций языка С, закрепление умений отладки и тестирования программ линейной структуры и составления отчета по разработанной программе.
З адание: составить программу для вычисления значения арифметического выражения (1). Значение х вводит пользователь программы. Вывод результатов на печать выполнить в экспоненциальной форме с числом знаков после точки, равным числу знаков в исходных данных. Определить порядок выполнения операций в арифметическом выражении программы.
/* Программа 2
ТЕСТ: x = sqrt(2) = 1.4142, z = 0.2000 */
#include <stdio.h>
#include <math.h>
void main()
{ double x, z;
printf("\n\n\t *** РАБОТА 2 *** \n");
printf("Выполнил: Иванов П.С., группа У-11, вариант 13 \n");
printf("Введите x:\t ");
scanf("%le", &x); // Для чего указан символ & ?
printf("Исходные данные: x=%.4le \n", x);
z = (2.0 - exp(1.- x*x/2.)) / (3. + sqrt(sqrt(2.) * pow(x,3)));
printf("Результат: z=%.4le \n", z); // в экспоненциальной форме
} // с 4 знаками в числе z после точки
Порядок выполнения операций при вычислении выражения:
(2.0 – exp(1. – x * x / 2.)) / (3. + sqrt(sqrt(2.) * x * 3))
↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
5 4 3 1 2 12 11 10 6 7 9 8
Операция 8 – преобразование константы 3 типа int в константу 3.0 типа double.
Вопросы и упражнения:
-
Как вычислить выражение y = logab, в котором а>0, b>0 ?
-
Модифицируйте программу для вычисления выражения (1), в знаменателе которого вычисляется корень k-ой степени из 2.
-
Определите область допустимых значений переменной х для вычисления выражения (1). Можно ли вычислить выражение для х = –1?
-
Сравните количество верных знаков в числах типа float и double. Для этого вычислите значение y = 1.0 / 3.0 и выведите результаты на экран оператором printf(“\n float = %.20f double = %.20lf ”, yfl, ydb);