- •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;
- •Вложенные структуры условных операторов
- •Оператор выбора
- •Контрольные задания
- •2.8. Циклические вычислительные процессы
- •Операторы цикла с условием
- •Оператор цикла do...While
- •Оператор цикла с параметром
- •2.9. Базовые алгоритмы
- •Задача 1. Алгоритм организации счетчика
- •Задача 2. Алгоритм накопления суммы
- •Задача 3. Алгоритм накопления произведения
- •Задача 4. Алгоритм поиска минимального члена последовательности
- •Задача 5. Табулирование функции (или кратные циклы)
- •Задача 6. Вычисление сумм последовательностей
- •2.10. Указатели и массивы Указатели
- •Понятие массива
- •Общий вид описания массива
- •Одномерные массивы
- •Описание одномерного массива
- •Индексированные переменные
- •Ввод-вывод одномерных массивов
- •Обработка одномерных массивов
- •Задача 1. Организация счетчика
- •Задача 2. Накопление суммы и произведения
- •Задача 3. Поиск минимального и максимального элементов массива
- •Двухмерные массивы
- •Описание двухмерного массива
- •Ввод-вывод двухмерного массива
- •Обработка матриц
- •2.11. Подпрограммы Структура сложной программы
- •Функции
- •Общий вид описания функции
- •Обращение к функции
- •Пример программы с функцией
- •Механизм замены параметров
- •Параметры-массивы в функциях
- •Рекурсия
- •Примеры программирования задач с использованием подпрограмм
- •Задача 1
- •2.12. Текстовые данные
- •Символьный тип данных
- •Ввод-вывод символьных данных
- •Обработка символьных данных
- •Ввод-вывод строковых данных
- •Обработка строковых данных
- •Стандартные функции обработки строк
- •Сравнение строк:
- •Сцепление строк
- •Определение длины строки
- •Копирование строк
- •Поиск символа в стоке
- •Пример программы для задачи с текстовыми данными
- •Контрольные задания
- •2.13. Динамическое выделение памяти
- •Структуры данных Понятие структуры
- •Обработка структур
- •Пример задачи с использованием структурированных данных
- •2.15. Файлы данных Понятие файла
- •Работа с файлами
- •Открытие файла
- •Обработка открытого файла
- •Закрытие файла
- •Функции ввода/вывода
- •Работа с текстовыми файлами
- •Обработка бинарных файлов
- •Контрольные задания
- •Заключение
Контрольные задания
1)Записать на языке С++ логические выражения
а)
б)
в) переменная х находится вне интервала [а, b];
г) все точки на плоскости находятся выше оси абсцисс;
д) все точки на плоскости находятся либо в первом, либо в третьем квадрантах;
е) все точки на плоскости лежат выше прямой у = 1 +х.
2) Начертить на плоскости область, в которой логическое выражение имеет значение TRUE
а) (х>= 0) && (у>= 0) && (у <= х) || (у <= -1);
б) (х*х +у*у <= 1) && (у>= 0) && !(y <x);
в) (у>= х) && (y>= -х);
г) (у <= 2) && (x <- 2) || (х*у <0);
д) (х*у>= 0) && (у <= х) && (x <1) && (y>-1);
е) (х*х + у*у <= 4) &&(y>= х*х).
3) Записать на языке С++ логические выражения, принимающие значение TRUE для точек, принадлежащих заштрихованной области (рисунок 1).
а) б)
в) г)
д) е)
Рисунок 1.
4) Записать на языке С++ логические выражения, расставить действия и вычислить при: i = 5, j = 2, к=2, а = TRUE, b = FALSE
а)
б)
в)
г)
д)
е)
2.8. Циклические вычислительные процессы
Циклические вычислительные процессы характеризуются наличием многократно повторяющихся участков вычислений (циклов). Переменная, изменяющаяся в цикле и используемая для проверки продолжения или окончания цикла, называется управляющей переменной. Для программирования циклических алгоритмов используются операторы цикла с условием или с параметром.
Операторы цикла с условием
В языке С++ имеется два вида операторов цикла с условием:
while (пока) – цикл с предусловием;
do... while (повторять до тех пор, пока выполняется условие) – цикл с постусловием.
Оператор цикла while является наиболее универсальным, так как с его помощью можно запрограммировать практически любой циклический процесс.
Оператор цикла while
Общий вид записи
while (логическое выражение) { <тело цикла>; }
<тело цикла> - единичный оператор или группа операторов, выполняемых в цикле.
Замечание. Если тело цикла состоит из нескольких операторов, то их обязательно заключают в операторные скобки {...}.
Работа оператора
Тело цикла выполняется до тех пор, пока логическое выражение, определяющее условие выхода из цикла, имеет значение TRUE. В противном случае оператор цикла while завершает свою работу.
В состав логического выражения входит управляющая переменная, которая должна изменяться в теле цикла. Перед началом работы оператора определяется начальное значение управляющей переменной.
Графическая интерпретация оператора
В схемах алгоритма оператору цикла while соответствует структура ЦИКЛ-ПОКА.
Оператор цикла do...While
Общий вид записи
do
<тело цикла>
while (логическое выражение);
Работа оператора
Выполняется тело цикла, после чего вычисляется логическое выражение, определяющее условие продолжения работы цикла. Если логическое выражение примет значение FALSE, то цикл do...while завершает свою работу, иначе тело цикла выполняется еще раз.
Управляющая переменная, как и в случае оператора цикла while должна включаться в состав логического выражения и изменяться в теле цикла. Перед началом работы оператора также производится начальная установка управляющей переменной.
Графическая интерпретация оператора do-while
В схемах алгоритма оператору цикла do... while соответствует структура ЦИКЛ-ДО.
Пример 1. Алгоритм расчета значений функции с одной переменной.
Вычислить таблицу значений функции:
для всех х, изменяющихся в интервале [-0.5 , 2.5] с шагом Δх = 0.1,
а, b - заданные вещественные числа.
В данной задаче переменная х является управляющей переменной цикла.
Схема алгоритма Программа
# include "stdafx.h" #include<math.h>
int main()
{
float а, b, х, у;
printf("Bвeдитe а и b\n");
scanf("%f%f",&a,&b);
printf(" x y(x)\n");
х=-0.5; //нач. установка
while(х <= 2.5)
{
y= log(fabs(x))/(a*a +b*b);
printf("%8.1f %8.1f",x,y);
x=x + 0.1;
}
return 0;
}
Пример 2. Решить предыдущую задачу табулирования функции с использованием оператора цикла do…while.
Схема алгоритма Программа
#include "stdafx.h"
#include<math.h>
int main()
{
float а, b, х, y;
printf("Bвeдитe a и b ");
scanf("%f%f",&a,&b);
printf(" x y(x)\n");
х=-0.5; //нач. установка
do
{
y=log(fabs(x))/(a*a+b*b);
printf("%8.1f %8.1f\n",x,y);
x= x+ 0.1;
} while( x<= 2.5);
return 0;
}
Основное отличие оператора цикла while от оператора цикла do...while
1. В операторе while тело цикла может не выполниться ни разу, если логическое выражение в начальный момент уже окажется ложным.
В операторе do...while логическое выражение записывается после тела цикла, поэтому тело цикла обязательно выполнится хотя бы один раз.