Файл: Основные структуры алгоритмов:сравнительный анализ и примеры их использования.pdf
Добавлен: 05.04.2023
Просмотров: 169
Скачиваний: 3
Если условие цикла ложно - управление передается следующему оператору. Таким образом, цикл может выполняться ноль или более раз.
Рассмотрим применение цикла while на примере движения автомобиля. На псевдокоде, то это будет так: Пока скорость движения автомобиля меньше 60 км/ч, продолжать наращивать скорость.
Истинным условием цикла, в данном случае, является скорость автомобиля меньше 60 км/ч, а ложным -- скорость автомобиля больше или равно 60 км/ч. Повторение цикла будет продолжаться до тех пор пока скорость автомобиля не станет больше или равно 60 км/ч, после наступления этого момента условие цикла станет ложным, и программа выйдет из цикла.
Рассмотрим фрагмент кода на C++ с циклом while решающим поставленную задачу.
1 intspeed = 5; // начальная скорость автомобиля
2 while( speed< 60 ) // заголовок цикла while
3 speed += 10; // телоцикла
Цикл do…while
Цикл do…while отличается от цикла while тем, что в do…while сначала выполняется тело цикла, а затем проверяется условие продолжения цикла. Из-за такой особенности do…while называют циклом с «постусловием». Таким образом, если условие do…while заведомо ложное, то хотя бы один раз блок операторов в теле цикла do…while выполнится. В итоге do…while отличается от цикла while структурой. Если в while сначала выполняется проверка условия продолжения цикла, и если условие истинно, то только тогда выполняется тело цикла. Цикл do…while работает с точностью да наоборот, сначала выполняется тело цикла, а потом проверяется условие, вот почему тело цикла do…while, хотя бы раз, выполнится.
Синтаксис цикла do…while выглядит следующим образом:
// форма записи оператора цикла dowhile:
do // началоцикла do while
{
/*блок операторов*/;
}
while (/*условие выполнения цикла*/); // конец цикла dowhile
В начале цикла do…while пишется зарезервированное слово do, после идут фигурные скобки, которые можно опускать, в случае использования одного оператора в теле цикла do…while. После закрывающей фигурной скобки, обозначающей конец тела цикла dowhile, стоит условие цикла do…while, после которого обязательно нужно ставить точку с запятой. Рассмотрим программу с циклом do…while, которая выполняет некоторые транзакции с денежным счётом в банке. На рисунке 6 отображен код данной программы:
Практическая часть:
Задание 5.
Разработать программу вычисления значений функции. Интервал изменения переменных ввести с клавиатуры. Шаг изменения переменных: .
- Ввод исходных данные xn-(начальное),xk-(конечное), zn-(начальное), zk-(конечное).
- Вычисление значения переменной y (выражение).
- Результат выводим на экран
3. Описание переменны
xn, zn- начальные значения переменныхx и z.
xk, zk - конечные значения переменных x и z
x – счетчик цикла
z –счетчик цикла
y-Значений функции
Листинг программы
#include"iostream"
Usingnamespacestd;
intmain()
{
setlocale(LC_ALL, "Russian");
intxn, xk;
doublezn, zk;
cout<<"Введитезначениеxn";
cin>>xn;
cout<<"Введите значение xk";
cin>>xk;
cout<<"Введите значение zn";
cin>>zn;
cout<<"Введите значение zk";
cin>>zk;
int x;
double z, y;
for (x = xn; x <= xk; x++)
{
z = zn;
do
{
y = exp(x) / (1 + (fabs(x+sin(z))));
cout<<"x="<< x <<" z="<< z <<" y="<< y <<"\n";
z = z + 0.5;
} while (z <= zk);
}
system("pause");
}
Результаты выполнения программы представлены на рисунке 5.
Рис.5. Результаты выполнения программы
4. Работа с массивами
Массив — это набор однотипных данных. Например, вы можете хранить все носки в одном месте. Для этого вы используете полку. В C++ множество элементов хранятся в массивах.
Для лучшего понимания давайте рассмотрим следующею картинку:
По ней мы можем понять следующее:
- Каждый массив должен иметь свое название.
- Он может в себе содержать от одного элемента до бесконечности (это в теории, на практике размер массива ограничивается памятью компьютера).
- Все элементы должны быть одного типа. Так, например, вы не можете в одном массиве хранить переменные типа int и типа double.
Теперь, когда вы понимаете концепцию массива, мы можем перейти к его реализацией на С++.
Элементы массива и индексация
Каждая из переменных в массиве называется элементом. Элементы не имеют своих собственных уникальных имен. Вместо этого для доступа к ним используется имя массива вместе с оператором индекса ([]) и параметром, который называется индексом, и который сообщает компилятору, какой элемент мы хотим выбрать. Этот процесс называется индексированием массива.
В примере выше первым элементом в нашем массиве является testResult[0]. Второй — testResult[1]. Десятый — testResult[9]. ПоследнийэлементвмассивеtestResult — testResult[29]. Хорошо, что уже не нужно отслеживать и помнить кучу разных (хоть и похожих) имен переменных – для доступа к разным элементам меняется только индекс.
Важно: В отличие от повседневной жизни, где мы обычно начинаем считать с 1, в массивах и в C++ отсчет всегда начинается с 0!
Для массива длины N элементы массива пронумерованы от 0 до N-1! Это называется диапазоном массива.
Массив можно сделать из любого типа данных.
Описание синтаксиса
Массив создается почти так же, как и обычная переменная. Для хранения десяти фамилий нам нужен массив, состоящий из 10 элементов. Количество элементов массива задается при его объявлении и заключается в квадратные скобки.
Чтобы описать элементы массива сразу при его создании, можно использовать фигурные скобки. В фигурных скобках значения элементов массива перечисляются через запятую. В конце закрывающей фигурной скобки ставится точка с запятой.
Для объявления массива необходимо указать две вещи (помимо имени): тип и размер массива:
intmy_array[ 6 ];
Данная строка объявляет массив из шести целочисленных значений. Обратите внимание, что размер массива заключен в квадратные скобки после имени массива.
Для доступа к элементам массива используются квадратные скобки, но на этот раз вы указываете индекс элемента, который хотите получить:
my_array[ 3 ];
Визуализировать данный процесс можно так:
Массивы в C++
my_array ссылается на весь массив целиком, в то время как my_array[0] только на первый элемент, my_array[3] — на четвертый. Обратите внимание, что индексация элементов в массиве начинается с 0. Таким образом Обращение к элементам массива всегда будет происходить со смещением, например:
intmy_array[ 4 ]; // объявление массива
my_array[ 2 ] = 2; // установить значение третьего (именно третьего!) равным 2
5. Объявление многомерных массивов в C++
Массивы могут также использоваться для представления многомерных данных, например, таких, как шахматная доска или поле для игры в крестики нолики. При использовании многомерных данных для доступа к элементам массива будут использоваться несколько индексов.
Для объявления двумерного массива необходимо указать размерность двух измерений:
inttic_tac_toe_board[3][3];
Визуализация массива с индексами его элементов:
Массивы в C++
Для доступа к элементам такого массива потребуется два индекса — один для строки второй для столбца. На изображении показаны нужные индексы для доступа к каждому из элементов.
Использование массивов
При использовании массивов вам не обойтись без циклов. Для того, чтобы пробежать по циклу вы просто инициализируете нулевую переменную и увеличиваете её, пока она не превысит размеры массива — шаблон как раз подходящий для цикла.
Следующая программа демонстрирует использование цикла для создания таблицы умножения и хранения результата в двумерном массиве:
#include <iostream>
usingnamespacestd;
intmain() {
intarray[8][8]; // Объявляем массив, который выглядит как шахматная доска
for(inti = 0; i< 8; i++) {
for(intj = 0; j < 8; j++) {
array[i][j] = i * j; // Задаем значения каждого элемента
}
}
cout<< "Multiplication table:\n";
for(inti = 0; i< 8; i++) {
for(intj = 0; j < 8; j++) {
cout<< "[ "<<i<< " ][ "<< j << "] = ";
cout<< array[i][j] << " ";
cout<< "\n";
}
}
}
Практическая часть:
Задание 6. Отсортировать элементы массива по убыванию
Словесный алгоритм
- Заполняем массив(mas) данными.
- Проходим по всем элементам массива.
- Вывод на экран массива.
- Сортировка массива.
- Результат выводим на экран.
Описание переменных
mas - Массив
max- индекс максимального элемента
n-размерность массива
i,j,in,s-счётчикмассива
Листинг программы
#include"iostream"
Usingnamespacestd;
int main()
{
setlocal(LC_ALL , "Russian");
constant n=5;
int mas[n], i, j, in, s;
cout<<"Введите элементы массива \n";
for (i=0 ; i< n ; i++)
{
cout<< "mas(" <<i<< ") = ";
cin>>mas [i];
}
cout<<"\n\n Ваш массив до сортировки: \n" ;
for (i=0; i<n; i++)
cout<< "mas(" <<i<< ") = " << mas[i] << "\n";
for(j =0; j < n; j++)
{
in =j;
for (i = in + 1; i< n; i++)
if (mas[i] > mas[in])
in = i;
s= mas[j];
mas[j] = mas[in];
mas[in] = s;
}
cout<<"\n\n Массив после сортировки: \n";
for (i = 0 ; i< n; i++)
cout<< "mas(" <<i<< ") = " << mas[i] << "\n";
system("pause");
}
Результаты выполнения программы представлены на рисунке 6.
Рис.6. Результаты выполнения программы
Заключение
В данной работе мы научились основам языка программирования С++, а также на базовом уровне научились работать программой VisualStudio 2015. Все это было применено для решения заданий в данной работе.