- •1.2. Вычисления по формулам
- •2. Разветвляющиеся алгоритмы
- •2.1. Использование оператора if Пример 2.1. Вычислить значение функции 1 (полный оператор if)
- •2.2. Сокращенный вариант оператора if
- •Пример 2.2. Вычислить значение функции 2
- •2.3. Составной оператор
- •Пример 2.3. Вычислить значение функции 3
- •2.4. Вложенные составные операторы
- •Пример 2.4. Решение квадратного уравнения
- •Текст программы
- •2.5. Использование оператора множественного выбора
- •Пример 2.5. Калькулятор.
- •3. Порядок выполнения домашнего задания
- •Список литературы
- •Приложение 1. Пример оформления титульного листа
- •Содержание
- •1. Линейные алгоритмы. Арифметика действительных чисел. Вычисления по формулам 3
- •2. Разветвляющиеся алгоритмы 7
- •3. Порядок выполнения домашнего задания 25
Федеральное агентство по образованию
ГОУ ВПО «Уральский государственный технический университет - УПИ»
Радиотехнический институт – РТФ
Программирование на языке си
Методические указания к выполнению домашней работы №1
по дисциплинам «Информатика»,
для студентов всех форм и технологий обучения
радиотехнического факультета
Екатеринбург 2006 г
УДК 004.43
Составители О. Ю. Иванов, Саблина Н.Г.
Научный редактор доц., канд. техн. наук Г.А. Самусевич
ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ СИ: Методические указания к выполнению домашней работы 1 по дисциплине «Информатика» для студентов всех форм и технологий обучения радиотехнического факультета / Н.Г. Саблина. Екатеринбург: УГТУ‑УПИ, 2006. 19 с.
Методические указания включают краткое изложение теоретического материала по темам «Линейные алгоритмы» и «Разветвляющиеся алгоритмы», примеры решения задач по указанным темам, варианты индивидуальных заданий для самостоятельного решения, рекомендации по их выполнению и список литературы.
Библиогр.: 4 назв. Табл. 3.
Подготовлено кафедрами «Теоретические основы радиотехники», «Радиоэлектронных и телекоммуникационных систем.
© Уральский государственный
технический университет - УПИ, 2006
1. Линейные алгоритмы. Арифметика действительных чисел. Вычисления по формулам
Линейным или простейшим называют такой алгоритм, в котором вычисления по формулам выполняются в линейной последовательности, т.е. друг за другом выполняются все операторы программы от первого до последнего.
1.1. Программирование линейных алгоритмов
Линейные алгоритмы рассмотрим на простейшем примере.
Пример 1.1. Площадь и периметр прямоугольника
Вычислить площадь и периметр прямоугольника, если известны длины его сторон.
Работу над программой будем осуществлять в соответствии с этапами, рассмотренными в главе 1 [1].
Постановка задачи
Исходными данными для этой задачи являются стороны прямоугольника: длина a и ширина b. Значения a и b – действительные числа, вводятся с клавиатуры.
Выходные данные – площадь S и периметр P заданного прямоугольника. Значения S и P - также действительные числа, выводятся на экран монитора.
Метод решения
Вычисление площади и периметра прямоугольника производится по известным формулам:
S= a b ; P=2(a+b).
Блок-схема алгоритма
Текст программы
#include <stdio.h>
/*----------------------------------------------
вычисление площади и периметра прямоугольника
----------------------------------------------*/
main()
{
float a,b,S,P;
// заставка
printf(" \nПрограмма вычисления площади прямоугольника
\n размером axb \n Автор: студент гр. РД-15061 Иванов И.И.
2006 г.");
// ввод исходных данных
printf(" \n‚Введите ширину a=");
scanf("%f", &a);
printf(" \n‚Введите длину b=");
scanf("%f", &b);
// вычисляемая часть
S=a*b;
P=2*(a+b);
// Вывод результатов
printf("\n Площадь прямоугольника S=%f
\n периметр. P=%f ", S,P);
}
1.2. Вычисления по формулам
Вычисление по формулам – простейший вид алгоритмических действий. Вычисления организуются с помощью математических операций:
+ - сложение; - - вычитание;
* - умножение; / - деление;
% – остаток от деления,
++ увеличение на единицу (increment);
-- уменьшение на единицу (decrement)..
При записи действительных чисел десятичная часть отделяется точкой. Результат вычисления математического выражения присваивается некоторой переменной с помощью знака присваивания (=), математические действия выполняются в порядке убывания их приоритета, а также порядок действий регулируется круглыми скобками. Например, алгебраическое выражение вида
в виде оператора программы будет выглядеть следующим образом:
x=(102.5*(a - 5.74) + b*(23.6 + 1.4)) / (5.23 - 3.6 + 2);
В языке С допускается многократное присваивание: а=b=с=х*у, которое выполняется справа налево. Сначала вычисляется значение х*у, затем это значение присваивается с, потом b, и лишь затем а.
Кроме того, в языке С имеются библиотеки математических функций, описанных в заголовочных файлах math.h и stdlib.h (см. [1, табл. ***]).
Примеры написания операторов, производящих вычисления с использованием встроенных функций:
Математическая запись |
Оператор Паскаль-программы |
|
a=2*cos(x-M_PI/6) /(0.5 + sin(y))
|
|
a=log(fabs((y-sqrt (fabs(x)))*(x-y/ (z + x*x/4))); |
2. Разветвляющиеся алгоритмы
Часто встречаются формулы, в которых значение некоторой величины может определяться одним из нескольких различных выражений в зависимости от выполнения тех или иных условий. При программировании таких вычислений используются разветвляющиеся алгоритмы. В качестве примера разветвляющегося алгоритма рассмотрим следующую задачу.
2.1. Использование оператора if Пример 2.1. Вычислить значение функции 1 (полный оператор if)
Постановка задачи
Исходными данными для этой задачи являются значения переменной x; x- действительное число. Значение х вводится с клавиатуры.
Выходные данные - значение функции F. F – действительное число. Значение функции выводится на экран монитора.
Метод решения
В соответствии с условием задачи вначале анализируется значение переменной х. Затем в зависимости от этого значения вычисляется значение функции F по одной из формул.
Блок-схема алгоритма
Текст программы
/*----------------------------------------------
Вычисление значения функции. Условный оператор.
----------------------------------------------*/
#include <stdio.h>
#include <math.h>
main()
{
float x, F;
printf("\nВычисление значения функции");
//ввод исходных данных
printf("\nВведите значение аргумента x=");
scanf("%f",&x);
//вычисления
if (x>0) F=cos(3*x)+sin(5*x);
else F=sin(2*x);
//вывод результата
printf("\nЗначение функции F=%f", F);
}
2.2. Сокращенный вариант оператора if
Существует два варианта условного оператора – полный и сокращенный. В предыдущем примере мы использовали полный оператор if. Иногда в ветви else не нужно выполнять никаких действий, то есть действия выполняются только если условие верно. Тогда используется сокращенный вариант оператора if. Рассмотрим использование сокращенного оператора на следующем примере.