Лекция_4_Алгоритмы_C++.ppt
- Количество слайдов: 39
Лекция № 4 ОСНОВЫ АЛГОРИТМИЗАЦИИ И ПРОГРАММИРОВАНИЕ
Некоторые этапы развития языка программирования • 1834 г. – Ада Лавлейс – основные принципы программирования для аналитической машины Ч. Бэббиджа. • 1944 г. – Конрад Цузе – первый алгоритмический язык Plankalkuel. • 1948 г. – Том Килбурн – первая компилированная программа (52 мин работы, 3. 5 млн. операторов – вычисление степени числа). • 1950 г. – ассемблер. • 1971 г. – Никлаус Вирт – Pascal. • 1973 г. – Керниган и Ритчи – С. • 1983 г. – Б. Страуструп – С++. 2
Алгоритм – это конечная последовательность арифметических и логических действий, определяющих процесс переработки исходных и промежуточных данных в искомый результат Процесс построения алгоритма (алгоритмизация) – разложение задачи на элементарные действия или операции.
Способы описания алгоритма: - словесный (словесно-формульный), - графический (в виде схем из графических символов), - программный (в виде текста на языке программирования), - псевдокод (синтез алгоритмического и обычного языков). 4
Псевдокод занимает промежуточное положение между естественным языком и языками программирования. В отличие от формальных языков, в псевдокоде не приняты строгие синтаксические правила для записи команд. Однако в псевдокоде есть конструкции, которые присущи формальным языкам. 5
Некоторые служебные слова учебного алгоритмического языка • алг – заголовок алгоритма • нач – начало алгоритма • кон – конец алгоритма • нц – начало цикла • кц – конец цикла • если • то • иначе • пока • для • или • не • да • нет • ввод • вывод 6
Пример записи алгоритма на псевдокоде алг Сумма квадратов целых чисел до n включительно (арг цел n рез цел S) дано | n > 0 надо | S = 1 * 1 + 2 * 2 + 3 * 3 + … + n * n нач цел i ввод n; S: =0 нц для i от 1 до n S: =S + i * i кц вывод “S = “, S кон 7
Использование основных алгоритмических конструкций Логическая структура любого алгоритма может быть представлена комбинацией трех базовых структур. Типы алгоритмов: • линейный; • разветвляющийся; • циклический. 8
Элементы блок-схем 9
Элементы блок-схем (продолжение) 10
Свойства алгоритма: 1. Конечность. 2. Определенность (детерминированность). 3. Результативность. 4. Эффективность. Язык программирования – искусственный язык, предназначенный для реализации алгоритмов. Программу, написанную на ЯП, необходимо перевести (транслировать) на язык машинных (для ЭВМ) команд. Эту операцию выполняют обслуживающие программытрансляторы – интерпретаторы и компиляторы. 11
Виды программирования • Процедурное • Структурное • Объектно-ориентированное 12
Особенности ООП • Инкапсуляция • Наследование • Полиморфизм 13
Алфавит языка С++ • Прописные и строчные буквы латинского алфавита (различие прописных и строчных букв) • Цифры от 0 до 9 • Специальные символы: " {}, | [ ] ( ) + - / ; ' : ? < = > _ ! & # ~ ^. * • Пробелы (неотображаемые символы) Из букв и символов алфавита формируются: • Идентификаторы • Ключевые (служебные) слова • Знаки операций • Разделители (знаки пунктуации) 14
Типы данных 15
Диапазоны типов данных Тип int float double Наименование Диапазон целый -32768 32767 вещественный -3. 4 e-38 3. 4 e+38 вещественный 1. 7 e-308 1. 7 e+308 char дв. точности символьный char -128 127 unsigned int беззнаковый int 0 65535 unsigned беззнаковый 0 255 16
Формы записи чисел в программе: – основная (форма записи целых и вещественных чисел) примеры: 12; 12. ; 0. 00012; . 874; 98723. 25; – экспоненциальная (показательная) форма записи вещественного числа (с плавающей точкой) в виде ±me±p, где m – число с плавающей точкой (мантисса), e– основание степени 10, p – показатель степени примеры: -13, 24∙ 10 -6 = -13. 24 e-6; 9 21, 47∙ 10 = 21. 47 e 9; -17 0, 28∙ 10 = 0. 28 e-17 17
Примеры записи идентификаторов: • age; AGE; summa_1 • Неправильно: a-1; 2_х 18
Название функции Синус, косинус Тангенс Арктангенс Арксинус Арккосинус Показательная ex Логарифм натуральный Логарифм по основанию 10 Корень квадратный Абсолютное значение Целая часть числа Целый остаток от деления х на у Возведение в степень xy Извлечение корня n-степени Имя Примечание sin(x), cos(x) tan(x) asin(x) acos(x) exp(x) log 10(x) sqrt(x) abs(x), fabs(x) floor(x) Аргумент – вещественный, положительный fmod(x, y) pow(x, 1. /n) _______ x, y – вещественные 19
Название функции Синус, косинус Имя Примечание sin(x), cos(x) Тангенс tan(x) Арктангенс atan(x) Арксинус asin(x) Арккосинус acos(x) показательная ех exp(x) аргумент функций – вещественный, положительный 20
Название функции Имя Логарифм натуральный log(x) Логарифм десятичный log 10(x) Корень квадратный sqrt(x) Абсолютное значение Примечание abs(x), fabs(x) аргумент функций – вещественный, положительный 21
Название функции Имя Целая часть числа floor(x) Абсолютное значение Примечание abs(x), fabs(x) 22
Название функции Целый остаток Имя Примечание fmod(x, y) от деления х на у Возведение в степень xy Извлечение корня n-степени pow(x, y) . pow(x, 1 /n) 23
Матем. запись Запись на С++ 2 * a* (-b) (a *pow( x , 2) + b * x + c) / pow((d - 2. 5) , 1. / 3) pow(sin(x) , 2) – cos(pow(x, 3)) 24
Структура программы # include “stdafx. h” # include <имя библиотеки> int _tmain(int argc, _TCHAR* argv[ ]) { Строки программного кода; // комментарий /* блок комментариев */ return 0; } 25
Инициализация переменной – объявление типа + значение Пример: int A; // объявление типа double r, t=0; int A = 2; double SUMMA = A + cos(t); double Y = r + SUMMA; 26
ПРИМЕР Сложить значения двух переменных и вывести результат. # include “stdafx. h” # include
модификация ПРИМЕРА Сложить значения двух переменных и вывести результат. Значения ввести с клавиатуры. # include “stdafx. h” # include
Пояснения к программному коду • # include “stdafx. h” – подключение файла, отвечающего за перекомпиляцию; • # include
Линейный вычислительный процесс где а = 1∙ 102, t = 1, 2 30
Линейный вычислительный процесс • • • • # include
Специальные символы управления выходным потоком • • • n символ новой строки; t символ горизонтальной табуляции; v символ вертикальной табуляции; r возврат каретки (не перевод строки); b символ возврата. Использование специальных символов – в тексте сообщения, например: ”выводn” или после оператора вставки в апострофах <<‘n’. 32
Операции сравнения в С++ 33
Операции инкремента и декремента. Префиксные и постфиксные операции Увеличить значение переменной на единицу, (Начальное значение переменной s – 2) s=2, s=2+1=3, s=s+1=3. Этапы: 1) обращение к переменной s, т. е. указание адреса переменной; 2) извлечение значения из этой ячейки, т. е. подстановка s = 2; 3) вычисление суммы 2 + 1; 4) запись результата вычислений по адресу s. 34
Фрагмент программного кода { int s = 2; cout<<"Начальное значение "<
модификация программного кода { int s = 2; cout<<"Начальное значение "<
Инкремент с постфиксом { int s = 2, post_s; post_s = s++; cout<<"post_s= "<
Инкремент с префиксом { int s = 2, pre_s; pre_s = ++s; cout<<"pre_s= "<
Специальные операторы Пример равнозначных операторов: s=s+1 s++ ++s s+=1 / / += используется для изменения значения переменной. += -= *= /= - прибавление числа к переменной - вычитание числа из переменной - умножение переменной на число - деление переменной на число 39