Разработка алгоритмов
Курсовая работа, 30 Мая 2013, автор: пользователь скрыл имя
Описание работы
Автор поставил перед собой следующую цель:
«Провести исследование на тему Алгоритмы, их способы записи и формы представления».
Исходя из поставленной цели, автор выдвинул следующие задачи:
• Познакомиться с понятием «алгоритм»;
• Узнать о свойствах алгоритма, его виды;
• Узнать где применяются алгоритмы;
• Научить записывать, строить алгоритм, определять наличие алгоритмов;
• Узнать о формах представления алгоритмов;
• Научиться использовать алгоритмы на практике. Для этого выполним практическое задание: написать программу в компиляторе Pascal, используя способы алгоритмизации.
Содержание работы
Введение 3
Глава 1. Представление о алгоритмах 5
1.1 Что такое алгоритм? 6
1.2 Свойства и виды алгоритмов 7
Глава 2. Разработка алгоритмов 8
2.1 ЭВМ - исполнитель алгоритмов 8
2.2 Формы представления 9
2.3 Оптимизация алгоритмов 11
Глава 3. Практическое задание 15
3.1 Описание программы 15
3.2 Код программы 14
Заключение 19
Литература 20
Файлы: 1 файл
курсовая работа.doc
— 189.00 Кб (Скачать файл)Данная форма очень удобна, если нужно приближенно описать суть алгоритма. Однако при словесном описании не всегда удается ясно и точно выразить идею.
2. Для более наглядного представления алгоритма используется графическая форма. Графическая форма - изображение алгоритма в виде последовательности связанных между собой функциональных блоков, каждый из которых соответствует выполнению одного или нескольких действий.(см рис 2).
3. При записи алгоритма в словесной и в графической форме допускается определенный произвол при изображении команд. Вместе с тем такая запись точна на столько, что позволяет человеку понять суть дела и исполнить алгоритм. Однако на практике в качестве исполнителей алгоритмов используются специальные автоматы – компьютеры. Поэтому алгоритм, предназначенный для исполнения на компьютере, должен быть записан на понятном ему языке. Такой язык принято называть языком программирования, а форму представления алгоритма - программной.
То есть программная форма записи алгоритма – это запись на языке программирования.
Рассмотрим пример использования данных форм записи алгоритмов:
Задание: написать алгоритм “Одеться по погоде”. Если на улице температура ниже 0, то необходимо надеть шубу, иначе – куртку.
1. Словесная форма:
Алгоритм ПОГОДА
- Начало
- определить температуру воздуха
- если температура ниже 0, то надеть шубу, иначе надеть куртку
- Конец.
2. Программная форма (Pascal):
- program E3;
- uses crt;
- var t: real;
- begin
- clrscr;
- writeln(‘введите температуру воздуха t=’);
- readln(t);
- if t < 0 then writeln(‘одеть шубу’) else writeln(‘одеть куртку’);
- end.
3. Графическая форма записи:
Рис. 2 Блок схема
Мы рассмотрели на примере алгоритма разветвляющейся конструкции в виде блок-схемы.
Тип алгоритма |
Способы записи алгоритма | ||
Словесная |
Графическая |
Программная | |
Линейный алгоритм – это описание действий, которые выполняются однократно в заданном порядке. |
|
|
program R1; var a,b,c,d,m,n: integer; begin writeln(‘Введите 4 числа’); readln(a,b,c,d); m:=a*d; n:=b*c; writeln(‘числитель=’, m); writeln(‘знаменатель=’, n); readln end. |
Разветвляющийся алгоритм – это алгоритм, в котором в зависимости от условия выполняется либо одна, либо другая последовательность действий. |
1.неполная форма: Если на улице холодно, то нужно одеть шубу.
2.полная форма: Если на улице температура ниже 0, то одеть шубу, иначе – куртку. |
1. 2. |
Program R2; var a: integer; begin writeln(‘Введите число’); readln(a); if a mod 2 = 0 then writeln(‘a-четное’) else writeln(‘a-нечетное’); readln end |
Сравнительная таблица
Для сравнения, рассмотрим в таблице, чем отличается разветвляющийся алгоритм от линейного.
- Оптимизация алгоритмов
Каждую программу можно написать по-разному, исходя из этого, задачу программы можно решить многими способами, разными алгоритмами.
Поэтому в программировании существует такой термин, как «Оптимизация». Программа написанная с оптимизированным алгоритмом будет работать быстрее и занимать меньше места, что не мало важно для объёмных работ.
Оптимизация вычислительных алгоритмов – это выбор оптимального вычислительного алгоритма при решении прикладных задач пли при разработке систем стандартных программ. При решении конкретной задачи оптимальная тактика поведения может состоять в том, чтобы не оптимизировать метод решения, а подключиться к стандартной программе или воспользоваться простейшим методом, составление программы для которого не потребует много усилий.
Рассмотрим одни из самых популярных алгоритмов оптимизации:
1) Пузырьковая сортировка.
Сортировка простыми обменами, сортировка пузырьком — простой алгоритм сортировки. Для понимания и реализации этот алгоритм — простейший, но эффективен он лишь для небольших массивов. Алгоритм считается учебным и практически не применяется вне учебной литературы, вместо него на практике применяются более эффективные алгоритмы сортировки. В то же время метод сортировки обменами лежит в основе некоторых более совершенных алгоритмов, таких как шейкерная сортировка, пирамидальная сортировка и быстрая сортировка.
Алгоритм состоит из повторяющихся проходов по сортируемому массиву. За каждый проход элементы последовательно сравниваются попарно и, если порядок в паре неверный, выполняется обмен элементов. Проходы по массиву повторяются N-1 раз или до тех пор, пока на очередном проходе не окажется, что обмены больше не нужны, что означает — массив отсортирован. При каждом проходе алгоритма по внутреннему циклу, очередной наибольший элемент массива ставится на своё место в конце массива рядом с предыдущим наибольшим элементом, а наименьший элемент перемещается на одну позицию к началу массива («всплывает» до нужной позиции как пузырёк в воде, отсюда и название алгоритма).
begin
for j:=1 to N-1 do
for i:=1 to N-j do
begin
if M[i] > M[i+1] then
begin
t:=M[j];
M[j]:=M[j+1];
M[j+1]:=t;
end;
end;
end;
2) Quick Sort
Быстрая сортировка часто называемая quicksort по имени реализации в стандартной библиотеке языка Си — широко известный алгоритм сортировки, разработанный английским Информатиком Чарльзом Хоаром в 1960 году. Один из быстрых известных универсальных алгоритмов сортировки массивов (в среднем O(n log n) обменов при упорядочении n элементов), хотя и имеющий ряд недостатков.
Краткое описание алгоритма
- Выбор элемента называется опорным
- сравнить все остальные элементы с опорным, на основании сравнения разбить множество на три — «меньшие опорного», «равные» и «большие», расположить их в порядке меньшие – равные - большие.
- повторить рекурсивно для «меньших» и «больших».
Примечание: на практике
обычно разделяют сортируемое
procedure qSort(var ar:array of real; low,high:integer);
var i,j:integer;
m,wsp:real;
begin
i:=low;
j:=high;
m:=ar[trunc((i+j)/2)];
repeat
while(ar[i]<m) do i:=i+1;
while(ar[j]>m) do j:=j-1;
if(i<=j) then begin
wsp:=ar[i];
ar[i]:=ar[j];
ar[j]:=wsp;
i:=i+1;
j:=j-1;
end;
until (i>j);
if(low<j) then qSort(ar,low,j);
if(i<high) then qSort(ar,i,high);
end;
3) Решето Эратосфена
Решето Эратосфена — алгоритм н
Алгоритм:
Для нахождения всех простых чисел не больше заданного числа n, следуя методу Эратосфена, нужно выполнить следующие шаги:
- Выписать подряд все целые числа от двух до n (2, 3, 4, …, n).
- Пусть переменная p изначально равна двум — первому простому числу.
- Считая от p шагами по p, зачеркнуть в списке все числа от 2p до n кратные p (то есть числа 2p, 3p, 4p, …)
- Найти первое не зачеркнутое число, большее чем p, и присвоить значению переменной p это число.
- Повторять шаги 3 и 4 до тех пор, пока p не станет больше, чем n.
Вход: натуральное число n
Пусть A — булевый массив, индексируемый числами от 2 до n,
изначально заполненный значениями true.
для i := 2, 3, 4, ..., пока i^2 ≤ n:
если A[i] = true:
для j := i^2, i^2 + i, i^2 + 2i, ..., пока j ≤ n:
если A[j] = true:
A[j] := false
Теперь все числа i, такие что A[i] = true, являются простыми.
Все вышеописанные
алгоритмы позволяют
Глава 3 Практическая задание
3.1 Описание программы
Программа «Тренажер памяти» в Pascal.
Описание: Программа направлена на тренировку памяти пользователя. Тренажер памяти, который вы видите, примитивно прост, но в этом его сила. Ничто не отвлекает от главной задачи. Только вы и ваша память. Ваша задача запомнить как можно больше символов и воспроизвести их
При запуске данной программы появляется выбор уровня сложности и инструкция. При нажатии на клавишу «ENTER» появляется строка с символами, которая спустя несколько секунд исчезает. Затем вам необходимо ввести как можно больше символов, которые вы запомнили. По окончании игры выводиться результат, и далее меню о продолжении либо о завершении тестирования.
3.2 Код программы
program testmemory;
uses crt,graphabc;
var
n,ball,i,k:integer;
h,l:byte;
s,s1:string[15];
ch:char;
r1:real;
Begin
n:=3;
randomize;
repeat
begin
writeln('Выберете уровень сложности от 2 до 15');
readln(n);
end;
until (n>1) and (n<16);
repeat
begin
ball:=0; {обнуление переменных}
s1:='';
s:='';
for i:=1 to n do {заполнение случаными буквами}
begin
k:=(random(26)+65);
ch:=chr(k);
s:=s+ch;
end;
writeln('Сейчас вам будет показана строка,ваша задача');
writeln('запомнить как можно больше элементов и воспроизвести');
writeln('по нажатию клавиши "ENTER" у вас будет 4 секунды');
readln;
begin
for i:=1 to n do
write(s[i],' ');
delay(4000);
clrscr;
end;
for i:=1 to n do
begin
read(ch);
s1:=s1+ch;
end;
s1:=uppercase(s1);
for i:=1 to n do
begin
for k:=1 to n do
begin
if s1[i]=s[k] then
begin
inc(ball);
break;
end;
end; {Вывод результата}
end;
r1:=ball/(n);
if r1>0.7 then writeln('Молодец! У вас отличная память!');
if (r1<0.7) and (r1>=0.5) then writeln('У вас хорошая память!');
if r1<0.5 then writeln('Вам следовало бы потренировать свою память!');
writeln('Ваш результат ',ball,' из ',n);
writeln;
writeln('если хотите повысить уровень сложности то "u"');
writeln;
writeln('если понизить уровень сложности "l"');
writeln;
writeln('Если хотите поменять уровень сложности нажмите "r" ');
writeln;
writeln('Если вы хотите выйти из игры, то нажмите "g";');
repeat
readln(ch);
until (ch='u') or (ch='l') or (ch='g') or (ch='r');
if ch='u' then n:=n+1;
if (ch='l') and (n>2) then n:=n-1;
if ch='r' then
begin
writeln('введите уровень сложности от 2 до 15');
readln(n);
end;
clrscr;
end;
until ch='g';
End.
Заключение
В заключение проделанной работы можно подвести итоги и сказать что поставленная цель – сформировать представление об алгоритмах, провести небольшое исследование – была достигнута. В связи с этим были достигнуты следующие задачи:
- Изучена, история развития алгоритмов.
- Разобраны способы написания алгоритма, его составляющих.
- Сформировали некоторое представление об алгоритмах в целом.
Алгоритмом, таким образом, называется система четких однозначных указаний, которая определяет последовательность действий над некоторыми объектами и после конечного числа шагов приводит к получению требуемого результата.
Также из всего вышесказанного можно сделать вывод, что знание алгоритмов и их построение является одним из основных понятий в информатике и программисту необходимо знать их и уметь построить необходимый алгоритм для отладки программы.
Литература
- Брудно А. Л., Каплан Л. И. Московские олимпиады по программированию.
- Газета «Информатика», №35, 1997г.
- Гейн А.Г. и др. Основы информатики и вычислительной техники. М., Просвещение, 1994.
- Гейн А. Г., Шолохович В.Ф. Преподавание курса “Основы информатики и вычислительной техники” в средней школе. Руководство для учителя.
- Информатика. Еженедельное приложение к газете “Первое сентября”. 1998.
- Извозчиков В.А. Информатика в понятиях и терминах.
- Каныгин Ю. М., Зотов Б. И. «Что такое информатика?»
- Касаткин В.Н. Информация, алгоритмы, ЭВМ. М., Просвещение, 1991.
- Кузнецов О. П., Адельсон-Вельский Г. М. Дискретная математика для инженера. М., Энергоатомиздат, 1988.
- Нестеренко А. В. ЭВМ и профессия программиста. М., Просвещение, 1990.
- Радченко Н. П. Ответы на вопросы выпускных экзаменов. – Информатика и образование, 1997, №4.7. 8. М., Детская литература, 1989.
- Шауцуков Основы информатики в вопросах и ответах.