- •Государственный технический университет - Обнинский институт атомной энергетики е.А.Виноградова а.Г.Царина Программирование на языках высокого уровня.
- •Содержание
- •Введение. Подготовка и решение задач на компьютере.
- •Алгоритмы.
- •Основные свойства.
- •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 Оператор присвавания
Переменная=выражение;
Алгоритм выполнения:
вычисляется выражение;
если необходимо, формат представления результата приводится в соответствие с типом переменной;
полученный результат загружается в поле вычисляемой переменной.
4.2 Оператор «выражение»
Любое выражение, завершающееся точкой с запятой, рассматривается как оператор, выполнение которого заключается в вычислении выражения. Частным случаем выражения является пустой оператор ; (он используется, когда по синтаксису оператор требуется, а по смыслу - нет). Примеры:
i++; // выполняется операция инкремента
а* = b + с; // выполняется умножение с присваиванием
fun(i,k): // выполняется вызов функции
4.3 Операторы ветвления
4.3.1 Условный оператор .
Условный оператор if используется для выбора одного из двух вариантов вычислений.
Синтаксис оператора.
if (выражение) S1; [else S2;]
где S1, S2- операторы или блоки.
Сначала вычисляется выражение, которое может иметь логический, арифметический или тип указателя. Если оно не равно нулю (имеет значение true), выполняется S1, иначе – S2. После этого управление передается на оператор, следующий за условным.
Одна из ветвей может отсутствовать, логичнее опускать вторую ветвь вместе с ключевым словом else. Если в какой-либо ветви требуется выполнить несколько операторов, их необходимо оформить в виде блока, иначе компилятор не сможет понять, где заканчивается ветвление. Блок может содержать любые операторы,
Примеры:
cin>>a>>x>>y;
if(а<0) b = 1;else b=0;
if(а<0) {b = 1;c=1;} else {b=0;c=0;}
if(а<0) a= -a;
if(а!=0) b = a; else b=1;
if(а) b = a; else b=1;
if(a>=x&&a<=y) cout<<” a принадлежит [x,y]”;
else cout<< “a не принадлежит [x,y]”;
.
Пример 4 и 5- идентичны.
Распространенная ошибка при записи условных операторов - использование в выражениях вместо проверки на равенство (= =,) простого присваивания (=), например,
if (a=1) b=0;. Синтаксической ошибки нет, так как операция присваивания формирует результат, который и оценивается на равенство/неравенство пулю. В данном примере присваивание переменной b будет выполнено независимо от значения переменной а.
4.3.2. Оператор switch.
Оператор switch (переключатель) предназначен для разветвления процесса вычислений на несколько направлений. Формат оператора:
switch ( выражение ){
case константное_выражение_1: [список_операторов_1]
case константное_выражение_2: [список_операторов_2]
………..
case константное_выражение_n: [список_операторов_n]
[default: операторы ]
}
Выполнение оператора начинается с вычисления выражения (оно должно быть целочисленным), а затем управление передается первому оператору из списка, помеченного константным выражением, значение которого совпало с вычисленным. После этого, если выход из переключателя явно не указан, последовательно выполняются все остальные ветви.
Выход из переключателя обычно выполняется с помощью операторов break. Оператор break выполняет выход из самого внутреннего из объемлющих его операторов switch, for, while, do. Все константные выражения должны иметь разные значения, но быть одного и того же целочисленного типа. Несколько меток могут следовать подряд. Если совпадения не произошло, выполняются операторы, расположенные после слова default (а при его отсутствии управление передается следующему за switch оператору).
Пример (программа реализует простейший калькулятор на 4 действия):
#include <iostream.h>
int main(){
int а, b, res;
char op;
cout << "\nВведите 1й операнд : "; cin >> а;
cout << "\nВведите знак операции : "; cin >> op;
cout << "\nВведите 2й операнд : "; cin >> b;
bool f = true;
switch(op){
саsе ' + ' : res = а + b; break;
саsе ' - ' : res = а - b; break;
саsе ' * ' : res = а * b; break;
саsе ' / ' : res = а / b; break;
default cout: << "\nНеизвестная операция"; f = false;
}
if (f) cout << "\nРезультат : " << res;
return 0;
}
