Слайд 1ОСНОВЫ АЛГОРИТМИЗАЦИИ
И ПРОГРАММИРОВАНИЕ
Лекция №4
Слайд 2Некоторые этапы развития
языка программирования
1834 г. – Ада Лавлейс
– основные принципы программирования для аналитической машины Ч. Бэббиджа.
1944 г.
– Конрад Цузе – первый алгоритмический язык Plankalkuel.
1948 г. – Том Килбурн – первая компилированная программа (52 мин работы, 3.5 млн. операторов – вычисление степени числа).
1950 г. – ассемблер.
1971 г. – Никлаус Вирт – Pascal.
1973 г. – Керниган и Ритчи – С.
1983 г. – Б. Страуструп – С++.
Слайд 3Алгоритм – это конечная последовательность арифметических и логических действий, определяющих
процесс переработки исходных и промежуточных данных в искомый результат
Процесс построения
алгоритма (алгоритмизация) – разложение задачи на элементарные действия или операции.
Слайд 4Способы описания алгоритма:
словесный (словесно-формульный),
графический (в виде схем из графических символов),
программный
(в виде текста на языке
программирования),
псевдокод (синтез алгоритмического и обычного языков).
Слайд 5Псевдокод
Псевдокод занимает промежуточное положение между естественным языком и языками программирования.
В
отличие от формальных языков, в псевдокоде не приняты строгие синтаксические
правила для записи команд. Однако в псевдокоде есть конструкции, которые присущи формальным языкам.
Слайд 6Некоторые служебные слова учебного алгоритмического языка
алг – заголовок алгоритма
нач – начало алгоритма
кон – конец алгоритма
нц –
начало цикла
кц – конец цикла
если
то
иначе
пока
для
и
или
не
да
нет
ввод
вывод
Слайд 7Пример записи алгоритма на псевдокоде
алг Сумма квадратов целых чисел
до 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
кон
Слайд 8Типы алгоритмов:
линейный;
разветвляющийся;
циклический.
Использование основных
алгоритмических конструкций
Логическая структура
любого алгоритма может быть представлена комбинацией трех базовых структур.
Слайд 10Элементы блок-схем (продолжение)
Слайд 11Свойства алгоритма:
1. Конечность.
2. Определенность (детерминированность).
3. Результативность.
4. Эффективность.
Язык программирования
– искусственный язык, предназначенный для реализации алгоритмов.
Программу, написанную на
ЯП, необходимо перевести (транслировать) на язык машинных (для ЭВМ) команд.
Эту операцию выполняют обслуживающие программы-трансляторы – интерпретаторы и компиляторы.
Слайд 12Виды программирования
Процедурное
Структурное
Объектно-ориентированное
Слайд 13Особенности ООП
Инкапсуляция
Наследование
Полиморфизм
Слайд 14Алфавит языка С++
Прописные и строчные буквы латинского алфавита
(различие прописных и
строчных букв)
Цифры от 0 до 9
Специальные символы:
" {}, |
[ ] ( ) + - / \ ; ' : ? < = > _ ! & # ~ ^. *
Пробелы (неотображаемые символы)
Из букв и символов алфавита формируются:
Идентификаторы
Ключевые (служебные) слова
Знаки операций
Разделители (знаки пунктуации)
Слайд 17Формы записи чисел в программе:
– основная (форма записи целых и
вещественных чисел)
примеры: 12; 12.; 0.00012; .874; 98723.25;
– экспоненциальная (показательная) форма
записи вещественного числа (с плавающей точкой) в виде
±me±p,
где m – число с плавающей точкой (мантисса),
e– основание степени 10,
p – показатель степени
примеры: -13,24∙10-6 = -13.24e-6;
21,47∙109 = 21.47e9;
0,28∙10-17 = 0.28e-17
Слайд 18Примеры записи идентификаторов:
age; Age; AGE; summa_1
Неправильно: a-1; 2_х
Слайд 20аргумент функций – вещественный, положительный
Слайд 21аргумент функций – вещественный, положительный
Слайд 25
Структура программы
# include “stdafx.h”
# include
int _tmain(int argc, _TCHAR*
argv[ ])
{
Строки программного кода; // комментарий
/* блок
комментариев
*/
return 0;
}
Слайд 26
Инициализация переменной – объявление типа + значение
Пример: int A;
// объявление типа
double r, t=0;
int A = 2;
double SUMMA = A + cos(t);
double Y = r + SUMMA;
Слайд 27
ПРИМЕР
Сложить значения двух переменных и вывести результат.
# include “stdafx.h”
# include
# include
using namespace std;
int _tmain(int argc, _TCHAR* argv[ ])
{
int slag_1=3; // инициализация slag_1
double slag_2=3 ; // инициализация slag_2
double summa=slag_1+cos(slag_2);
cout<<“summa=”< return 0;
}
Слайд 28модификация ПРИМЕРА
Сложить значения двух переменных и вывести результат. Значения ввести
с клавиатуры.
# include “stdafx.h”
# include
# include
using namespace std;
int
_tmain(int argc, _TCHAR* argv[ ])
{
int slag_1; // объявление типа slag_1
double slag_2;
cout<<“Vvesti znachenia slag_1, slag_2”;
cin>> slag_1>> slag_2;
double summa=slag_1+cos(slag_2);
cout<<“summa=”< return 0;
}
Слайд 29Пояснения к программному коду
# include “stdafx.h” – подключение файла,
отвечающего за перекомпиляцию;
# include -- подключение библиотеки ввода-вывода с
указанием пути;
# include -- то же для математической библиотеки;
using namespace std – использовать стандартное пространство имен;
{ } – операторные скобки;
cout<<“summa=”<cin>>slag_1 – входной поток, оператор извлечения, идентификатор.
Слайд 30Линейный вычислительный процесс
а = 1∙ 102, t = 1,2
где
Слайд 31Линейный вычислительный процесс
# include
# include
# include
using namespace
std;
int _tmain(int argc, _TCHAR* argv[ ])
{
int a=1e2; // инициализация
double t=1.2; // инициализация
double x=a*pow(t,2)+0.2;
double y=. . .
cout<<“summa=”< return 0;
}
Слайд 32Специальные символы управления выходным потоком
\n символ новой строки;
\t
символ горизонтальной табуляции;
\v символ вертикальной табуляции;
\r возврат каретки
(не перевод строки);
\b символ возврата.
Использование специальных символов – в тексте сообщения, например: ”вывод\n” или после оператора вставки в апострофах <<‘\n’.
Слайд 34Операции инкремента и декремента.
Префиксные и постфиксные операции
Увеличить значение переменной на
единицу, (Начальное значение переменной s – 2)
s=2, s=2+1=3, s=s+1=3.
Этапы:
1) обращение к переменной s, т.е. указание адреса переменной;
2) извлечение значения из этой ячейки, т. е. подстановка s = 2;
3) вычисление суммы 2 + 1;
4) запись результата вычислений
по адресу s.
Слайд 35Фрагмент программного кода
{
int s = 2;
cout
"
return 0;
}
Слайд 36модификация программного кода
{
int s = 2;
cout
"
return 0;
}
или ++s; // инкремент с префиксом
Слайд 37Инкремент с постфиксом
{
int s = 2, post_s;
post_s
= s++;
cout
= 3
Слайд 38Инкремент с префиксом
{
int s = 2, pre_s;
pre_s
= ++s;
cout
= 3
Слайд 39Специальные операторы
Пример равнозначных операторов:
s=s+1
s++
++s
s+=1 / / используется для изменения значения переменной.
+= - прибавление числа к переменной
-= - вычитание числа из переменной
*= - умножение переменной на число
/= - деление переменной на число
+=