- •Государственный технический университет - Обнинский институт атомной энергетики е.А.Виноградова а.Г.Царина Программирование на языках высокого уровня.
- •Содержание
- •Введение. Подготовка и решение задач на компьютере.
- •Алгоритмы.
- •Основные свойства.
- •2.2 Способы представления алгоритмов.
- •2.3 Базовые структуры алгоритмов.
- •2.3.1 Линейная структура.
- •2.3.3.2. Цикл с постусловием:
- •Типы данных.
- •3.1 Базовые типы данных.
- •2.3.3.1. Цикл с предусловием:
- •Целый тип (int)
- •Символьный тип (char)
- •Расширенный символьный тип (wchar_t)
- •Логический тип (bool)
- •Типы с плавающей точкой (float, double и long double)
- •3.2 Переменные.
- •3.3 Ссылки.
- •3.4 Указатели.
- •3.3 Выражения.
- •3.3 .1 Операции.
- •4. Реализация базовых структур алгоритмов в языке с.
- •4.1 Оператор присвавания
- •4.2 Оператор «выражение»
- •4.3 Операторы ветвления
- •4.3.1 Условный оператор .
- •4.3.2. Оператор switch.
- •4.4 Операторы цикла
- •4.4.1 Циклы с предусловием
- •4.4.1.1 Цикл for.
- •4.4.1.2 Цикл с условием (while)
- •4.4.1 .3 Цикл с постусловием (do while)
- •5. Функции. Основные понятия
- •Определение функции
- •Рекурсивные функции.
- •Одномерные массивы.
- •6.1 Статические массивы.
- •6.2 Динамические массивы.
- •6.2.2 Функции преобразования динамических массивов.
- •7. Алгоритмы поиска и сортировки.
- •7.2 Последовательный поиск c барьером.
- •7.3 Дихотомический поиск в упорядоченом массиве.
- •7.4 Cортировка массивов.
- •7.4.1 Обменная сортировка (метод пузырька)
- •7.4.2 Метод "простой выбор".
- •7.4.3 Сортировка "прямое включение"
- •8 . Матрицы
- •8.1 Статические матрицы.
- •8.2 Динамические матрицы.
- •9. Строки в с.
- •1. Длина строки – strlen.
- •3. Копирование строк.
- •4. Объединение строк.
- •5. Поиск в строках
- •10. Cтруктуры.
4.4.1 .3 Цикл с постусловием (do while)
Существуют также случаи, когда надо выполнить цикл хотя бы один раз, затем на каждом
шагу делать проверку некоторого условия и закончить цикл, когда это условие станет ложным.
Для этого используется цикл с постусловием (то есть условие проверяется не в начале, а в конце цикла).
Цикл с постусловием имеет вид:
Do
Оператор или блок
while (выражение);
Сначала выполняется простой оператор или блок, составляющий тело цикла, а затем вычисляется выражение. Если оно истинно, тело цикла выполняется еще раз. Цикл завершается, когда выражение станет равным false . Тип выражения должен быть арифметическим или приводимым к нему.
Примеры
1. Ввести натуральное число и найти сумму его цифр. Организовать ввод числа так, что-
бы нельзя было ввести отрицательное число или нуль.
Любая программа должна обеспечивать защиту от неверного ввода данных (иногда такую
защиту называют «защитой от дурака» — fool proof). Поскольку пользователь может вводить данные неверно сколько угодно раз, то надо использовать цикл с условием. С другой стороны, один раз обязательно надо ввести число, поэтому нужен цикл с постусловием.
#include <iostream.h>
#include <conio.h>
int main()
{
int a, sum=0; // sum - сумма цифр числа
do {
cout<< "\nВведите натуральное число:\n" ;
cin>>a;
}while ( a <= 0 ); // условие цикла: «пока a -плохое»
while ( a > 0 ) {
sum += a % 10;
a/= 10;
}
printf ( "Сумма цифр этого числа равна %d\n", sum );
getch();
}
2. Программа вычисляет квадратный корень вещественного аргумента X с заданной точностью Eps по итерационной формуле:
yn = 1\2 (yn-1 + x/yn-1),
где уn-1 - предыдущее приближение к корню (в начале вычислений выбирается произвольно), уn - последующее приближение. Процесс вычислений прекращается, когда приближения станут отличаться друг от друга по абсолютной величине менее, чем на величину заданной точности. Для вычисления абсолютной величины используется стандартная функция fabs(), объявление которой находится в заголовочном файле <math.h>.
#include <iostream.h>
#include <math.h>
int main(){
double X, Eps; // аргумент и точность
double Yр, Y = 1; // предыдущее и последующее приближение
cout<<"Введите аргумент и точность: ";
cin>>X>>Eps);
do{
Yp = Y:
Y = (Yp + X/Yp)/2;
}while (fabs(Y - Yp) >= Ерs);
cout<<<"\nКорень из “ <<X<<” = "<< Y);
return 0;
}
5. Функции. Основные понятия
Функция представляет собой самостоятельный фрагмент текста программы, предназначенный для выполнения некоторой задачи. Функция имеет уникальное имя, которое используется для ее вызова. В языке C функция играет такую же роль, как и функции, подпрограммы и процедуры в других языках программирования – она позволяет один и тот же фрагмент программы использовать многократно. Использование функций придает программе модульную структуру, облегчает чтение кода и внесение в него исправлений. В общем случае функция выполняет действия и возвращает вычисленное значение в вызвавшую ее функцию. Функция получает данные при вызове через свои аргументы. Функция может возвращать вычисленное значение, при этом возвращаемое значение подставляется на место вызова функции, где бы этот вызов ни находился. В качестве частного случая функция может не иметь аргументов и не возвращать значения. При этом она выполняет некоторые действия, не связанные с изменением данных.
С использованием функций в языке C связаны три понятия: определение (описание действий, выполняемых функцией), объявление (задание формы обращения к функции) и вызов.
В определении (описании) функции должны присутствовать:
имя;
типы, имена и количество ее формальных параметров;
объявления переменных и операторы (тело функции).
Кроме того, в определении могут быть заданы тип значения, возвращаемого функцией, и класс памяти:
В языке C нет требования, чтобы определение функции обязательно предшествовало вызову функции. Определение может находиться где угодно, например, за определением функции main() или в другом файле. Обязательным условием является объявление функции до ее вызова. Это необходимо для проверки соответствия типов фактических аргументов типам формальным параметров, а также типа возвращаемого функцией значения.
Объявление функции называется прототипом функции.
В прототипе функции (в C++ прототип обязателен) должны присутствовать:
- имя функции;
- типы и число формальных параметров;
- тип возвращаемого значения.
Формат прототипа тот же, что и у определения функции, но прототип не имеет:
- тела функции;
- заголовок оканчивается точкой с запятой.
