- •1. Основы алгоритмизации и программирования
- •1.1. Этапы подготовки и решения задач на эвм
- •1.2. Алгоритмы и способы их описания Понятие алгоритма
- •Способы описания алгоритмов
- •Структурные схемы алгоритмов
- •1.3. Компиляция и интерпретация программ
- •1.4. Стили программирования
- •Процедурное программирование
- •Функциональное программирование
- •Логическое программирование
- •Объектно-ориентированное программирование
- •2.1. Пример готовой программы.
- •2.2. Структура основной программы
- •2.3. Алфавит языка
- •2.4. Константы и переменные Константы
- •Переменные
- •Примеры записи имен переменных
- •2.5. Арифметические выражения
- •Примеры вычисления арифметических выражений
- •Стандартные функции
- •Примеры программирования арифметических выражений
- •Контрольные задания
- •1. Составить описания для заданных переменных
- •2.6. Линейные вычислительные процессы
- •Оператор присваивания
- •Странные операторы присваивания
- •Функции ввода-вывода
- •Функции ввода исходных данных с клавиатуры
- •Потоковый ввод данных числового типа
- •Функция форматного ввода
- •Операторы вывода данных на экран Потоковый вывод
- •Форматный вывод
- •Контрольные задания
- •2.7. Разветвляющиеся вычислительные процессы
- •If (логическое выражение) p1; else p2;
- •Логические выражения
- •Порядок выполнения операций в логических выражениях
- •Условные операторы
- •Короткий условный оператор
- •Полный условный оператор
- •If (логическое выражение) { p1;} else {p2;}
- •Вложенные структуры условных операторов
- •Оператор выбора
- •Контрольные задания
- •2.8. Циклические вычислительные процессы
- •Операторы цикла с условием
- •Оператор цикла с параметром
- •2.9. Базовые алгоритмы
- •Задача 1. Алгоритм организации счетчика
- •Задача 2. Алгоритм накопления суммы
- •Задача 3. Алгоритм накопления произведения
- •Задача 4. Алгоритм поиска минимального члена последовательности
- •Задача 5. Табулирование функции (или кратные циклы)
- •Задача 6. Вычисление сумм элементов последовательностей
- •2.10. Указатели и массивы
- •2.10.1. Указатели
- •2.10.2. Понятие массива
- •Одномерные массивы
- •Описание одномерного массива
- •Индексированные переменные
- •Ввод-вывод одномерных массивов
- •Обработка одномерных массивов
- •Задача 1. Организация счетчика
- •Задача 2. Накопление суммы и произведения
- •Задача 3. Поиск минимального и максимального элементов массива
- •Двухмерные массивы
- •Описание двухмерного массива
- •Ввод-вывод двухмерного массива
- •Обработка матриц
- •2.11. Подпрограммы Структура сложной программы
- •Функции
- •Общий вид описания функции
- •Int I,j; //локальные переменные
- •Обращение к функции
- •Пример программы с функцией
- •Механизмы замены параметров
- •Параметры-массивы в функциях
- •Примеры программирования задач с использованием подпрограмм Задача 1
- •Рекурсия
- •2.12. Текстовые данные
- •Символьный тип данных
- •Ввод-вывод символьных данных
- •Обработка символьных данных
- •Ввод-вывод строковых данных
- •Обработка строковых данных
- •Стандартные функции обработки строк
- •Сравнение строк:
- •Сцепление строк
- •Определение длины строки
- •Копирование строк
- •Поиск символа в стоке
- •Пример программы для задачи с текстовыми данными
- •Контрольные задания
- •2.13. Динамическое выделение памяти
- •Структуры данных Понятие структуры
- •Обработка структур
- •Пример задачи с использованием структурированных данных
- •2.15. Файлы данных Понятие файла
- •2.15.1. Работа с файлами в стиле с
- •Объявление файловой переменной
- •Открытие файла
- •Закрытие файла
- •// Обработка открытого файла
- •Обработка открытого файла
- •Функции ввода/вывода
- •Работа с текстовыми файлами
- •Обработка бинарных файлов
- •Контрольные задания
- •Заключение
- •Оглавление
Вложенные структуры условных операторов
Структура называется вложенной, если после служебного слова else или при истинности логического выражения вновь используются условные операторы. Число вложений может быть произвольным. При этом справедливо следующее правило: служебное слово else всегда относится к ближайшему выше слову if.
Пример. Вычислить значение у по одной из трех ветвей:
При решении данной задачи возможны два варианта программирования:
без вложенной структуры;
с вложенной структурой.
Ниже рассмотрены оба варианта решения задачи.
Вариант 1 (с использованием вложенной структуры)
Схема алгоритма
Программа
#include "stdafx.h"
#include<math.h>
int main()
{
float a,x, y;
printf("Введите число х= ");
scanf("%f",&x);
if (x>=1)
y = sqrt(x)/2;
else
if(x>0){a=1.0/3; y=pow(x,a);}
else {a=1.0/4; y=pow(x,a)/4;}
printf("y=%6.2f",y);
return 0;}
Вариант 2 (без использования вложенной структуры)
Схема алгоритма Программа
#include "stdafx.h"
#include<math.h>
int main()
{
float a,x,y;
printf("Введите число x=" );
scanf("%f",&x);
if (х>=1)
у = sqrt(x)/2;
if ((x>0)&&(x<1))
{ a= 1.0/3;
y =pow(x,a)/2;
}
if(x<=0)
{a= 1.0/4;
y=pow(x,a)/4;
}
printf("y=%6.2f",y);
return 0;
}
Оператор выбора
При многократном вложении условных операторов программная конструкция становится громоздкой и ее трудно понять. Считается, что число вложений не должно превышать двух-трех. При большем числе вложений рекомендуется использовать оператор выбора switch-case.
Общий вид записи оператора
switch <селектор>
{
сase константа выбора 1: оператор 1; break;
…………………………………………………
сase константа выбора n: оператор n; break;
default: оператор n+1;
}
Селектор - это выражение целого или символьного типа.
Константы выбора - возможные значения селектора.
default – осуществляет обработку непредусмотренного значения селектора. Наличие этой метки в операторе switch необязательно.
Работа оператора
По вычисленному значению селектора выбирается для исполнения case-оператор, содержащий константу выбора, равную значению селектора. После выполнения выбранного case-оператора управление передается на конец оператора case. Следующим в программе выполняется оператор, стоящий за оператором выбора switch.
Пример 1. Написать оператор выбора для вычисления величины y по формулам:
Оператор выбора имеет следующую запись:
switch (n)
{
case 1: у =х; break;
case 2: case 3: у = 2 * sqrt(abs(x)); break;
case 4: у = ехр(х); break;
default: printf("значение для n указано не верно\n");
}
Графическая интерпретация оператора
В схемах алгоритма оператору switch соответствует структура ВЫБОР.
Для приведенного выше примера 1 эта структура выглядит следующим образом:
Замечание. Если в строке выбора необходимо записать несколько операторов, то их заключают в операторные скобки {...}.
Пример 2. Вычислить значение у.
Если значение х не принадлежит рассматриваемым промежуткам, то вывести на экран соответствующее сообщение.
В задаче переменная х является вещественной и не может использоваться в качестве селектора оператора case. Введем новую переменную целого типа n, которой присваивается целая часть значения х. Тогда программа решения данной задачи с использованием оператора выбора может быть составлена следующим образом.
#include "stdafx.h"
#include<math.h>
int main()
{
float х, у;
int n;
printf("Введите число х= ");
scanf("%f",&x);
if( (х<1) || (x>=5))
printf("x не принадлежит рассматриваемой области\n");
else
{ n = x;
switch (n)
{
case 1: y =sin(x); break;
case 2: у = exp(-x); break;
case 3: y =log(x); break;
case 4: у = tan(x); break;
default: printf(" такого решения нет \n");
break;
}
if ((n==1)||(n==2)||(n==3)||(n==4)) printf("y=%6.2f", y);
}
return 0;
}