Слайд 1Введение в специальность
Алгоритмы и структуры данных
НИЖЕГОРОДСКИЙ
ИНСТИТУТ
УПРАВЛЕНИЯ
Цветкова Ирина Николаевна,
Зав.
кафедрой информатики и ИТ
к. ф.-м.н., доцент
i.tsvetkova@niu.ranepa.ru
http://niu.ranepa.ru/
Слайд 2
"Алгоритмы + структуры данных = программы".
Вирт, Н. Алгоритмы и
структуры данных http://www.iprbookshop.ru/63821.html
Никлаус Вирт - знаменитый швейцарский специалист по программированию,
автор языка Паскаль.
Слайд 3Основы алгоритмики.
Понятие алгоритма - одно из основных понятий программирования и
математики.
Мухаммед ибн Муса аль-Хорезми (Alhorithmi), 783-850 гг., «Книга о сложении
и вычитании»
Алгоритм - это последовательность команд, предназначенная исполнителю, в результате выполнения которой он должен решить поставленную задачу.
Программа - конкретная формулировка абстрактных алгоритмов, основанная на конкретных представлениях и структурах данных.
Слайд 4«Алгоритм — это конечный набор правил, который определяет последовательность операций для
решения конкретного множества задач и обладает пятью важными чертами: конечность,
определённость, ввод, вывод, эффективность».
(Кнут, Д.Э. Искусство программирования. Том 1 : Основные алгоритмы / Д.Э. Кнут; под общей редакцией Ю.В. Козаченко; перевод с английского С.Г. Тригуб, Ю.Г. Гордиенко, И.В. Красикова. - Москва : Вильямс, 2004. - 720 с. - ISBN 5-8459-0080-8)
Слайд 5Конечность. Алгоритм должен всегда заканчиваться после выполнения конечного числа шагов.
Определенность. Действия, которые необходимо произвести на каждом шаге, должны быть
определены строго и недвусмысленно в каждом возможном случае.
Вход (input). Алгоритм всегда имеет некоторое (иногда равное нулю) количество входных данных, то есть величин, передаваемых ему до начала работы.
Выход (output). Алгоритм всегда обязан иметь одну или несколько выходных величин. Алгоритмы, не имеющие выходных данных, бесполезны на практике.
Эффективность. От алгоритма требуется, чтобы он был эффективным. Это означает, что все операции, которые необходимо произвести в алгоритме, должны быть достаточно простыми, чтобы их в принципе можно было выполнить точно и за конечное время.
Слайд 6Формы представления алгоритмов:
словесная - запись на естественном языке;
псевдокоды
- полуформализованные описания алгоритмов на условном алгоритмическом языке, включающие в
себя как элементы языка программирования, так и фразы естественного языка, общепринятые математические обозначения и др.;
графическая – блок-схемы (текст и графика);
программная - тексты на языках программирования.
Слайд 7Словесный способ. Алгоритм может быть следующим:
задать любое целое число;
задать счетчик,
равный 1;
задать число для хранения произведения, равное 1;
заменить произведение, умножив
произведение на счетчик;
если значения счетчика и целого числа равны, то взять произведение в качестве ответа и остановиться, в противном случае продолжить выполнение алгоритма;
увеличить счетчик на 1;
повторить алгоритм с шага 4.
Слайд 8Псевдокод. Общий вид алгоритма:
алг название алгоритма (аргументы и результаты)
дано условия
применимости алгоритма
надо цель выполнения алгоритма
нач описание промежуточных величин
|
последовательность команд (тело алгоритма)
кон
алг Факториал (арг цел N, рез цел F)
дано | N
надо | F = 1*2*3* ...*N
нач цел i
ввод N; F:=1
нц для i от 1 до N
F:=F*i
кц
вывод "F = ", F
кон
Слайд 9Алгоритм присвоения переменной
демонстрирует блок-схема программы
(графическая форма)
Слайд 10Пример программы вычисления факториала числа N на языке С#:
using System;
namespace
Factorial
{
class Program
{
static void Main(string[] args)
{
int N, F = 1, i;
Console.WriteLine("Расчет факториала. Введите число N = ");
N = Convert.ToInt32(Console.ReadLine());
for (i = 2; i <= N; i++)
F = F * i;
Console.WriteLine("F = " F);
Console.ReadKey();
}
}
}
Слайд 11ГОСТ 19.701-90 (переиздан в 2010г). Схемы алгоритмов, программ, данных и
систем. Условные обозначения и правила выполнения
Блок-схема – совокупность символов, соответствующих
этапам работы алгоритма и соединяющих их линий.
Слайд 142. Базовая структура "ветвление".
1) если-то
Слайд 15i=3
string1:= ‘очная форма обучения’
если i=3
то string1:= ‘очная форма обучения’
все
Пример. Формирование
1 цифры в нумерации групп
Да
Нет
Слайд 162. Базовая структура "ветвление".
2) если-то-иначе
Слайд 17Пример. Формирование 1 цифры в нумерации групп
если i>0
то string2:= ‘высшее
образование’
иначе string2:= ‘среднее профессиональное образование’
все
i>0
string1:= ‘очная форма обучения’
Да
Нет
string1:= ‘среднее профессиональное
образование’
Слайд 182. Базовая структура "ветвление".
3) выбор
Слайд 19Пример. Формирование 2 цифры в нумерации групп
выбор
при j=1 string3:=‘первый курс’
при
j=2 string3:=‘второй курс’
при j=3 string3:=‘третий курс’
при j=4 string3:=‘четвертый курс’
все
Нет
Слайд 202. Базовая структура "ветвление".
3) выбор-иначе
Слайд 21Пример. Формирование 2 цифры в нумерации групп
выбор
при j=1 string3:=‘первый курс’
при
j=2 string3:=‘второй курс’
при j=3 string3:=‘третий курс’
при j=4 string3:=‘четвертый курс’
иначе string3:=‘пятый
курс’
все
Нет
String:3:=‘пятый курс’
Слайд 223. Базовая структура "цикл". Обеспечивает многократное выполнение некоторой совокупности действий,
которая называется телом цикла
1) Цикл типа пока. Предписывает выполнять тело
цикла до тех пор, пока выполняется условие, записанное после слова «пока».
Слайд 243. Базовая структура "цикл".
2) Цикл типа для. Предписывает выполнять тело
цикла для всех значений некоторой переменной (параметра цикла) в заданном
диапазоне.
Слайд 25нц для i от 1 до 5
X[i]:=i*i
Y[i]:=X[i]/2
кц
i=1,5
X[i]:=i*i
Y[i]:=X[i]/2
Слайд 26Условие1 в приведенном ниже алгоритме задает ...
полное ветвление;
цикл с предусловием;
цикл
с постусловием;
цикл с заданным числом повторений.
Слайд 27Приведенной блок-схеме соответствует фрагмент программы ...
если условие 1 то
оператор 1
оператор
2
оператор 3
если условие 2 то оператор 4
иначе оператор 5
если условие
1 то
если условие 2 то оператор 4
иначе
начало
оператор 1
оператор 2
оператор 3
конец
иначе оператор 5
если условие 1 то
начало
оператор 1
оператор 2
оператор 3
конец
иначе
если условие 2 то оператор 4
иначе оператор 5
Слайд 28При выполнении приведенного ниже алгоритма с исходными данными х =
14, y = -5 значение переменной z будет равно ...
Слайд 29При выполнении приведенного ниже алгоритма с исходными данными n =
6 значение переменной s будет равно ...
Слайд 30Структура данных — множество элементов данных и множество связей между
ними.
Структура данных — программная единица, позволяющая хранить и обрабатывать множество
однотипных и/или логически связанных данных.
Понятие структуры данных
Для добавления, поиска, изменения и удаления данных структура данных предоставляет некоторый набор функций, составляющих её интерфейс.
Слайд 31Способ представления структур данных
Слайд 33ОПЕРАЦИИ НАД СТРУКТУРАМИ ДАННЫХ
Создание – выделение памяти для структуры
данных.
Уничтожение – противоположна по своему действию операции создания.
Выбор
– обеспечивает доступ к данным внутри самой структуры.
Обновление – позволяет изменять значения данных в структуре и добавлять (удалять) выбранные данные.
Слайд 34Как бы сложна ни была задача, блок-схема соответствующей программы (алгоритма)
всегда может быть представлена с использованием ограниченного числа элементарных управляющих
структур (последовательность, ветвление, цикл).
Идея доказательства этого утверждения:
преобразование каждой части алгоритма в одну из трех основных структур или их комбинацию;
после достаточного числа таких преобразований оставшаяся неструктурированной часть либо исчезнет, либо станет ненужной;
в результате получится алгоритм, эквивалентный исходному и использующий лишь 3 управляющие структуры.
Слайд 35Спасибо за внимание!
http://niu.ranepa.ru
i.tsvetkova@niu.ranepa.ru