Up

8 класс. Основные алгоритмические конструкции (повторение материала 7 класса)

13.1. Алгоритм и алгоритмические конструкции

В 7-м классе вы познакомились с основными алгоритмическими конструкциями. Для решения задач по программированию были выделены основные этапы:

Алгоритм — конечная последовательность точных действий, формальное выполнение которых позволяет получить решение задачи для любого допустимого набора исходных данных.

Исполнитель — человек, группа людей или техническое устройство, которые способны правильно выполнять команды алгоритмов. В дальнейшем будем рассматривать только исполнителя-устройство с ограниченным набором команд. Набор команд одного исполнителя называют системой команд исполнителя. Команды компьютерного исполнителя могут быть реализованы в виде процедур и функций.

Все команды исполнителя делят на группы:

1. Команды, которые непосредственно выполняет исполнитель.

2. Команды, изменяющие порядок выполнения других команд исполнителя.

Любой алгоритм может быть записан с использованием трех базовых алгоритмических конструкций: следование, цикл и ветвление.

Команды цикла и ветвления управляют порядком выполнения других команд в программе и относятся к командам управления (управляющим конструкциям).

Последовательность команд, исполнителем которой является компьютер, называется программой. Программа представляет собой запись на некотором формальном языке — языке программирования. Командами в языке программирования считают:

операторы (оператор присваивания, оператор ветвления, оператор цикла и др.);

вызовы вспомогательных алгоритмов (как встроенных в библиотеки, так и созданных пользователем).

13.2. Алгоритмическая конструкция следование

Алгоритмическая конструкция следование — последовательность команд алгоритма, которые выполняются в том порядке, в котором они записаны. Среди команд, образующих алгоритмическую конструкцию следование, отсутствуют команды, меняющие порядок выполнения других команд.

В 7-м классе, изучая язык С++, вы использовали следующие команды:

  • процедуры для ввода и вывода данных;
  • оператор присваивания.

Программа 13_1:
#include <iostream>
#include <locale.h>
using namespace std;
int main()
{
float x,y,a;
setlocale(0,"Russian");
cout << "Введите x =";
cin >> x;
cout << "Введите y =";
cin >> y;
a = 2 * x * (x-y)/(7 + y * y);
cout << "a =" << a;
    return 0;
}

Запустить программу и ввести значения x = 3.8, y = 2.7. Результат:

Для ввода данных предназначена команда cin >> . В скобках через запятую перечисляются имена переменных, значения которых необходимо ввести.
Для вывода данных используют команду cout << . Она позволяет выводить текстовые сообщения и числовые значения. Текстовые сообщения записываются в кавычках, выводятся в виде последовательности символов так, как записаны, и не анализируются при выполнении.
При использовании команды cout << endl;  происходит перевод курсора на следующую строку.
Оператор присваивания предназначен для того, чтобы:
задавать значения переменным;
вычислять значение выражения (результат будет записан как значение переменной).
Формат записи оператора присваивания:
"имя переменной" = "выражение";
В записи арифметического выражения используются знаки математических действий: сложения (+), вычитания (−), умножения (*), деления (/), а также целочисленного деления (div) и нахождения остатка (mod). Следует помнить, что операция деления (/) используется при вычислениях с данными типа real. Для данных типа int используются операции / (целочисленное деление) и % (остаток от деления).
Нередко в одной программе приходится выполнять одну и ту же последовательность команд несколько раз.
В этом случае удобно использовать вспомогательный алгоритм, который можно выполнять нужное число раз, обращаясь к его названию.
Вспомогательный алгоритм — алгоритм, который можно использовать в других алгоритмах, указав его имя и, если необходимо, значения параметров.
Вспомогательный алгоритм решает некоторую часть основной задачи. Вызов вспомогательного алгоритма является командой, которая может заменять несколько команд.
Вспомогательные алгоритмы вы использовали при написании программ для учебных компьютерных исполнителей Чертежник и Робот:

uses Drawman;
procedure Figura;
begin
PenDown; OnVector(1, 0);
OnVector(0, 3); OnVector(-1, 0);
OnVector(0, -1); OnVector(3, 0);
OnVector(0, 1); OnVector(-1, 0);
OnVector(0, -2); OnVector(-2, 0);
OnVector(0, -1); PenUp;
end;
begin
Field(10, 5);
ToPoint(1, 1); Figura;
ToPoint(6, 1); Figura;
end.

При вычислениях часто используются различные математические функции. Эти функции реализованы как встроенные вспомогательные алгоритмы и могут применяться при
записи арифметических выражений.
Аргументы функций всегда записываются в скобках.
В языке C++ нужно указывать название заголовочного файла так:
#include <cmath>
Функция от одного аргумента вызывается, например, так: sin(x). Вместо числа x может быть любое число, переменная или выражение. Функция возвращает значение, которое можно вывести на экран, присвоить другой переменной или использовать в выражении:
 y = sin(x);
ФункцияОписание
Округление (более подробно по ссылке)
roundОкругляет число по правилам арифметики, то есть round(1.5) == 2round(-1.5) == -2
floorОкругляет число вниз (“пол”), при этом floor(1.5) == 1floor(-1.5) == -2
ceilОкругляет число вверх (“потолок”), при этом ceil(1.5) == 2ceil(-1.5) == -1
truncОкругление в сторону нуля (отбрасывание дробной части), при этом trunc(1.5) == 1trunc(-1.5) == -1
fabsМодуль (абсолютная величина)
Корни, степени, логарифмы
sqrtКвадратный корень. Использование: sqrt(x)
cbrtКубический корень. Использование: cbrt(x)
powВозведение в степень, возвращает ab. Использование: pow(a,b)
expЭкспонента, возвращает ex. Использование: exp(x)
logНатуральный логарифм
log10Десятичный логарифм
Тригонометрия
sinСинус угла, задаваемого в радианах
cosКосинус угла, задаваемого в радианах
tanТангенс угла, задаваемого в радианах
asinАрксинус, возвращает значение в радианах
acosАрккосинус, возвращает значение в радианах
atanАрктангенс, возвращает значение в радианах

Также в файле cmath есть набор полезных числовых констант, например, константа M_PI хранит значение числа π.

Дробную часть числа х можно найти как:   х - trunc(x).

Пример 3. Задана длина стороны квадрата a. Написать программу нахождения площади квадрата и длины его диагонали.

#include <iostream>
#include <locale.h>
#include <cmath>
using namespace std;

int main()
{
float a, S, d;
setlocale(0,"Russian");
cout << "Введите a =";
cin >> a;
S = pow(a,2);
d = a*sqrt(2);
cout << "S =" << S << endl;
cout << "d =" << d << endl;
return 0;
}

Запустить программу и ввести значение a = 5.6. Результат:

Вопросы:
1. Что такое алгоритм?
2. Перечислите основные алгоритмические конструкции.
3. Какая команда используется в языке С++ для ввода данных?
4. Какие команды используются в языке С++ для вывода данных?
5. Для чего нужна команда присваивания?
6. В каких случаях удобно использовать вспомогательный алгоритм?
7. Какие математические функции могут использоваться при записи арифметических выражений?

УПРАЖНЕНИЯ
Задание 1. Расставьте команды программы в правильном порядке так, чтобы можно было вычислить значение выражения: 

1.cout << "a = " << a; 
2. cout << "Введите значение x = "; 
3. return 0; }
4. float x, y, a; 
5. main() { 
6. a = 2 * x / (x * x + 4); 
7. cin >> x;
Задание 2. Определите типы данных для каждой переменной, использованной в операторе присваивания, предположив, что тип переменных справа целочисленный:
1. y = sqrt(a – 4) / 16; 
2. z = pow (3 * a + 2, 2); 
3. a = fabs(a – 4.2); 
4. d = x % 2; 
далее тип переменных справа - float. Какой тип слева?
5. y = int(a); 
6. y = round(a); 
7. y = floor(a); 
8. s = sin(3.14 * r).

Задание 3. Найдите и исправьте ошибки в программах.
1. (Вспомните, как работает знак / в С++)
#include <iostream>
#include <locale.h>
#include <cmath>
using namespace std;

int main()
{
int x, y, z1, z2;
setlocale(0,"Russian");
cout << "Введите x =";
cin >> x;
cout << "Введите y =";
cin >> y;
z1 = trunc(x/y);
z2 = x/y - trunc(x/y);
cout << "Целая часть =" << z1 << endl;
cout << "Дробная часть =" << z2 << endl;
return 0;
}
2. 
#include <iostream>
#include <locale.h>
using namespace std;
int main()
{
float x, y, z1, z2;
setlocale(0,"Russian");
cout << "Введите x =";
cin >> x;
cout << "Введите y =";
cin >> y;
z1 = x / y;
z2 = x % y;
cout << "Целая часть =" << z1 << endl;
cout << "Остаток от деления =" << z2 << endl;
return 0;
}

Задание 4. Даны x и z. Измените программу 13_1 так, чтобы вычислялось значение выражения  

Задание 5. Заданы три числа. Напишите программу для нахождения среднего арифметического этих чисел.
Задание 6. Заданы два числа. Напишите программу для нахождения частного от деления
первого числа на второе и округлите результат до ближайшего целого.
Задание 7. Даны гипотенуза и катет прямоугольного треугольника. Напишите программу для
нахождения второго катета и площади треугольника.
Задание 8*. Заданы два числа. Напишите программу для нахождения частного этих чисел.
Округлите результат до десятых, оставив в дробной части одну цифру. (теория)

Комментариев нет:

Отправить комментарий