- •Министерство образования и науки Республики Казахстан
- •Кафедра программного обеспечения
- •Языки программирования
- •Лабораторная работа № 1
- •Краткая теория
- •Задания
- •Лабораторная работа № 2
- •Краткая теория
- •Задания
- •Лабораторная работа №3
- •Краткая теория
- •Задания
- •Лабораторная работа № 4
- •Краткая теория
- •Задания
- •Лабораторная работа № 5
- •Краткая теория
- •Задания
- •Лабораторная работа № 6
- •Краткая теория
- •Объединения
- •Задания
- •Лабораторная работа № 7
- •Краткая теория
- •Задания
- •Лабораторная работа № 8
- •Краткая теория
- •Задания
Лабораторная работа № 1
Дисциплина: Языки программирования
Тема: Управляющие конструкции языка Си
Цель: Изучить основные управляющие конструкции языка Си, уметь выполнять все арифметические действия над числами
Краткая теория
Задачи, рассматриваемые в этой работе, выполняют арифметические действия над числами. В качестве входных данных они могут использовать как действительные числа (по умолчанию), так и целые (тип указывается явно).
В формулировках условий используются следующие специальные обозначения:
- знак суммы
запись вида
- это краткая запись выражения:
(1+12)+(2+22)+(3+32)+(4+42)+(5+52)
- знак произведения
запись вида
- это краткая запись выражения:
-
фигурная скобка, объединяет несколько
вариантов, каждый из которых может быть
выполнен только в случае, если истинно
записанное через запятую условие,
например:
Таким образом, первый вариант будет выполнен, если некоторое а окажется большим 0, а второй вариант - в противном случае.
Под знаком суммы или произведения могут находиться арифметические выражения, которые в свою очередь содержат в себе знаки и . Например:
;
.
1.
Даны числа a и b. Получить значение K по формуле:
K
=
В качестве входных данных фигурируют некоторые переменные a и b, о типе которых нет никаких указаний. Поэтому выберем более общий тип - float. Результатом программы будет значение арифметического выражения с участием переменных a и b, следовательно, результирующая переменная также будет иметь тип float.
Программа будет составлена из следующих шагов:
ввод значений переменных a и b.
проверка на истинность условия a>b.
2.1.вычисление
выражения
, если условие истинно.
2.2.вычисление
выражения
,
в противном случае.
вывод результата.
Разберем эти действия детально:
для сообщения пользователю о том, что сейчас необходимо ввести, используется функция printf, описанная в файле stdio.h.
printf("\n введите a и b\n");
форматированный ввод осуществляется функцией scanf, описанной в stdio.h. Действительные числа при этом вводятся с помощью формата %f, введенное значение размещаются по адресу переменной.
scanf("%f %f",&a, &b);
используется конструкция
if (a>b)
реализация п. 2.1.
else
реализация п.2.2.
2.1. выражение отображает сумму четырех слагаемых вида (a*i+b*i2) со значениями i, меняющимися от 1 до 4. Это можно записать так:
0 +(a*1+b*12)+(a*2+b*22)+(a*3+b*32)+(a*4+b*42)
Такое выражение может быть реализовано с помощью конструкции цикла for. В качестве переменной цикла выступит переменная i, пробегающая от 1 до 4, и следовательно, имеющая тип int. На каждой итерации к значению суммы, первоначально равному 0, прибавляется очередное слагаемое, что будет выглядеть вот так:
k=0;
for(i=1;i<=4;i++)
k+=a*i+b*i*i;
2.2. выражение
-
есть произведение трех сомножителей
вида
,
где i
меняется от 1 до 3, и может быть представлено
в следующем виде:
Такое выражение также может быть вычислено с помощью цикла, где на каждом шаге к первоначальному значению произведения, равному 1, домножается очередная дробь.
k=1;
for(i=1i<=3;i++)
k*=(a+i)/b*i;
результатом будет некоторое значение типа float, которое можно вывести функцией printf с форматной строкой %f :
printf("\n k=%f",k);
Окончательно программа примет следующий вид:
#include<stdio.h>
main()
{
float a,b; // входные данные
float k; // результат
int i; // внутренние переменные
printf("\n введите a и b\n");
scanf("%f %f",&a, &b);
if (a>b)
{
k=0;
for(i=1;i<=4;i++)
k+=a*i+b*i*i;
}
else
{
k=1;
for(i=1i<=3;i++)
k*=(a+i)/b*i;
}
printf("\n k=%f",k);
}
2.
Вычислить значение:
K
=
В данной задаче все входные данные четко указаны в условии, поэтому дополнительно ничего вводить не требуется. Результатом будет некоторое значение типа int, поскольку операнды выражения имеют тип int и над ними производятся только операции сложения и умножения.
Решение задачи сводится к вычислению суммы, где каждое слагаемое само представляет произведение, и требует предварительного вычисления. Для временного хранения значения очередного слагаемого введем дополнительную переменную p, которая также имеет тип int.
Вычисление суммы выглядит так:
k=0;
for(i=1;i<=3;i++)
{
вычисление очередного слагаемого p
k+=p;
}
p - есть значение произведения и вычисляется так:
p=1;
for(j=1;j<=5;j++)
p*=i*j*j+i;
Программа будет иметь следующий вид:
#include<stdio.h>
main()
{
int k; // результат
int p,i,j; // дополнительные переменные
k=0;
for(i=1;i<=3;i++)
{
p=1;
for(j=1;j<=5;j++)
p*=i*j*j+i;
k+=p;
}
printf("\n результат k=%d",k);
}
