- •Лабораторный практикум Дисциплина «Информатика»
- •230400 «Информационные системы и технологии»
- •1.1. Порядок создания программы
- •1.2. Ввод и выполнение программы
- •1.3. Модификация программы
- •1.4. Пошаговое выполнение программы
- •1.5. Сообщения компилятора и компоновщика
- •1.6. Действия в случае ошибки выполнения
- •1.6. Помощь справочной службы
- •1. Вычисление площади и периметра геометрической фигуры
- •2. Вычисления по формулам с вещественными числами
- •3. Арифметические операции для целочисленных данных
- •4. Циклы с заданным числом повторений
- •5. Алгоритмы с разветвлениями
- •6. Циклы с условием
- •7. Последовательная обработка данных
- •8. Поразрядные операции
3. Арифметические операции для целочисленных данных
Цель: изучение операций целочисленной арифметики, выработка умений алгоритмизации, программирования, отладки и тестирования программ линейной структуры.
Задание: дано 6-значное число L=ABCDkm, где A…D, k, m – цифры числа. Составить алгоритм и программу для определения цифр k и m числа L, формирования long-числа N = kmABCD и int-числа p = mk из цифр k и m.
/* Программа 3
ТЕСТ: L=333327, k=2, m=7, N=273333, p=72 . */
#include <stdio.h>
void main()
{ int i, k, m, p;
long L, N; // Почему переменным L и N назначен тип long ?
< Вывод шапки результатов программы, см. программу 1 или 2 >
printf("\n Введите L: ");
scanf("%ld",&L); // Внимание! Для типа long формат вв/выв ld
k = L / 10 % 10; // ‘/’– целочисленное деление: оба операнда – целые числа
m = L % 10; // остаток от деления, пример: 15 % 4 равно 3
N = L / 100 + L % 100 * 10000;
p = m*10 + k; // меняем порядок цифр
printf(" Для L=%ld \n результаты: k=%d m=%d p=%d N=%ld \n",
L, k, m, p, N);
}
Примечание: запись long-константы с символом L, пример: 123L
Вопросы и упражнения:
-
Вычислите значения выражений 23/5, 23%5, 23/5.0.
-
Выделите из числа 1234567 группу цифр 4567 одной операцией.
-
Уберите из числа 1234567 группу цифр 345.
-
Замените в числе 1234567 группу цифр 34 на цифру 9.
-
Дано выражение: М = А*100 + В*1000 +123,0. Составьте программу для вычисления целочисленного значения М, если 500 < A < 5000, 100 < B < 1000. Выполните отладку и тестирование программы.
4. Циклы с заданным числом повторений
Цель работы: изучение приёмов алгоритмизации и программирования задач, требующих организации циклов с заданным числом повторений с использованием рекуррентных формул, выработка умений отладки и тестирования программ с циклами.
Типы переменных и констант в программах работы следует выбирать по содержанию задания. В алгоритме цикла и в программе использовать рекуррентные формулы (см. приложение 2.4).
З адание: вычислить сумму членов ряда (2), n, х – заданные величины:
/* Программа 4.1. Функция факториал k! = 1*2*3*…*k, 0! = 1 ТЕСТ: n = 4, x = 2.0, s = - 0.6666… */
#include <stdio.h>
void main()
{ float x, r, s;
int i, k, n;
< Вывод шапки результатов программы, см. программу 1 или 2 >
printf("\n Введите x и n: ");
scanf("%e%d", &x, &n); // С т р у к т у р а цикла:
r = 1; s = 0; // инициализация цикла – блок 1 цикла
for (k = 1; k <= n; k++) // оператор управления циклом –блок 2 цикла
{ // область (тело) цикла – блок 3 цикла
r = -r*x / k; // член ряда и сумма вычисляются по рекуррентным
s = s + r; // формулам, в которых используются предыдущие
} // значения переменных r и s
printf("Для n = %d и х = %.4f сумма ряда s = %.4e", n, x, s);
}
/* Программа 4.2, вычисление таблицы значений функции y = exp(x/2) на интервале (a, b) с шагом h. ТЕСТ: a=0, b=2.0, h=1.0, y(0)=1, y(2)=2.718 … */
#include <stdio.h>
#include <math.h>
void main()
{ float a, b, h, x, y;
< Вывод шапки результатов программы, см. программу 1 или 2 >
printf("\n Введите a, b и h: ");
scanf("%e%e%e", &a, &b, &h);
printf("\n ТАБЛИЦА ФУНКЦИИ y = exp(x/2) \n\n");
printf(" x\t\t exp(x/2) \n" ); // столбцы таблицы
for (x = a; x <= b; x+=h)
printf("%6.3f %15.5f \n", x, exp(x/2));
} // В спецификации формата “ %6.3f ” число 6 – длина поля для вывода х
Вопросы и упражнения:
-
Какие формулы называют рекуррентными? Как изменится программа 4.1, если не использовать рекуррентные формулы?
-
Запишите рекуррентную формулу для вычисления (2k – 1)!, k = 1, 2, … .
-
Поясните спецификацию формата “ %15.5f ”.
-
На какие три группы делят операторы обработки данных с циклом?
-
Модифицируйте программу для вычисления таблицы значений двух функций: ln(x) и xb , вывод данных выполните в экспоненциальном формате.
-
Как в программе задаётся выравнивание данных по столбцам при выводе таблицы на экран?