Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Методичка Программирование

.pdf
Скачиваний:
35
Добавлен:
13.03.2016
Размер:
3.61 Mб
Скачать

Министерство образования и науки Российской Федерации Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования

«Пермский национальный исследовательский политехнический университет» Березниковский филиал

П.В. Плехов

ПРОГРАММИРОВАНИЕ.

ОСНОВНЫЕ АЛГОРИТМЫ И ИХ РЕАЛИЗАЦИЯ НА ЯЗЫКЕ

OBJECT PASCAL

Учебное пособие для самостоятельной работы студентов

Березники, 2011

УДК 004.432 ББК 22.1 П38

Рецензенты:

Заведующий кафедрой автоматизированных систем управления Обнинского института атомной энергетики – филиала Национального исследовательского ядерного университета «МИФИ»

доктор технических наук, профессор Анохин А.Н.

Профессор кафедры ОНД, Березниковского филиала ПГНИУ Кандидат технических наук, Бильфельд Н.В.

Плехов П.В.

П38 Программирование. Основные алгоритмы и их реализация на языке Object Pascal:учебное пособие / П.В. Плехов. – Пермь: Березниковский филиал Перм. нац. исслед. политехн. ун-та, , 2011.– 111 с.

ISBN

Рассмотрены типовые алгоритмы, используемые в практике программирования, приведены примеры их реализации на языке Object Pascal. Материал дополнен заданиями для самостоятельного выполнения, заданиями для лабораторных работ и требованиями к создаваемым программам.

Предназначено для студентов направления «Информатика и вычислительная техника».

УДК 004.432 ББК 22.1

ISBN

© ПНИПУ, 2011

2

Содержание

 

Введение.......................................................................................................................

5

О содержании самостоятельной работы...................................................................

5

Требования, предъявляемые к создаваемым программам......................................

6

Требования к оформлению.........................................................................................

7

Краткая справка по языку Object Pascal и разработке консольных приложений в

среде Delphi................................................................................................................

10

Тема № 1. Вычисление выражения с использованием стандартных функций...

17

Задание....................................................................................................................

25

Образец выполнения задания...............................................................................

25

Варианты домашних заданий...............................................................................

27

Задания к лабораторной работе № 1....................................................................

37

Тема № 2. Условный оператор.................................................................................

38

Задание....................................................................................................................

39

Образец выполнения задания...............................................................................

39

Варианты домашних заданий...............................................................................

40

Задание к лабораторной работе № 2....................................................................

41

Тема № 3. Построение таблицы значений функции..............................................

42

While и repeat-until..............................................................................................

42

for-to и for-downto...............................................................................................

43

Операторы break и continue...............................................................................

44

Задание....................................................................................................................

45

Образец выполнения задания...............................................................................

45

Варианты домашних заданий...............................................................................

46

Задание к лабораторной работе № 3....................................................................

47

Тема № 4. Рекурсия и организация циклов в программе......................................

48

Задание....................................................................................................................

49

Образец выполнения задания...............................................................................

49

Варианты домашних заданий...............................................................................

50

Задание к лабораторной работе № 4....................................................................

51

Тема № 5. Численные методы..................................................................................

52

Решение уравнений численными методами........................................................

52

Метод дихотомии (деления пополам)..............................................................

53

Метод простой итерации ...................................................................................

54

Метод Ньютона...................................................................................................

55

Образец выполнения задания № 1 .......................................................................

56

Образец выполнения задания № 2 .......................................................................

58

Образец выполнения задания № 3 .......................................................................

59

Задание....................................................................................................................

61

Варианты домашних заданий...............................................................................

61

Задание к лабораторной работе № 5....................................................................

62

Вычисление определенных интегралов...........................................................

62

Задание.................................................................................................................

65

Тема № 6. Массивы...................................................................................................

66

3

Задание....................................................................................................................

70

Образец выполнения задания...............................................................................

70

Варианты домашних заданий...............................................................................

73

Задания к лабораторной работе № 6....................................................................

78

Сортировка массивов.........................................................................................

78

Алгоритмы сортировки......................................................................................

78

Поиск....................................................................................................................

81

Задание....................................................................................................................

82

Варианты заданий...............................................................................................

83

Тема № 7. Строки......................................................................................................

83

Стандартные функции обработки строк..............................................................

85

Образец выполнения задания...............................................................................

86

Варианты домашних заданий...............................................................................

87

Тема № 8. Динамические структуры данных.........................................................

88

Односвязный линейный список........................................................................

89

Двусвязный линейный список ..........................................................................

92

Кольцевые списки ..............................................................................................

93

Очередь................................................................................................................

93

Стек......................................................................................................................

94

Дек........................................................................................................................

95

Задания к лабораторной работе № 7....................................................................

95

Образец выполнения задания...............................................................................

95

Варианты заданий для лабораторной работы...................................................

101

Список литературы .................................................................................................

102

Приложение 1. Функция перекодировки кириллицы..........................................

103

Приложение 2. Приемы, используемые для минимизации объема вычислений

...................................................................................................................................

104

Приложение 3. Отладка программы......................................................................

105

Классификация ошибок.......................................................................................

105

Предотвращение и обработка ошибок...............................................................

106

Приложение 4. Диагностические сообщения компилятора Delphi 7.................

108

4

Введение

Государственный образовательный стандарт третьего поколения предъявляет ряд профессиональных компетенций выпускников направления 230100.62 «Информатика и вычислительная техника», ряд которых может быть получен при изучении дисциплины «Программирование». Данное пособие содержит краткое изложение теоретических вопросов и ряд тематических заданий для их практического приложения, что способствует развитию таких профессиональных компетенций, как освоение методики использования программных средств для решения практических задач (ПК-2) и умение разрабатывать интерфейсы «человек-ЭВМ» (ПК-3).

Процесс изучения дисциплины предусматривает выполнение самостоятельной работы в форме домашних заданий, тематика которых дополняет и расширяет лекционную часть. Выполнение домашних и лабораторных работ, представленных в пособии, необходимо для развития навыков программирования, получения опыта использования типовых и нестандартных языковых конструкций для того, чтобы подготовить студентов к выполнению курсовой работы по программированию. Кроме того, в пособии четко сформулированы требования, предъявляемые к создаваемым программам, выполнение которых прививает навыки аккуратного, продуманного и рационального программирования.

Осодержании самостоятельной работы

Впособии приведены варианты домашних заданий и лабораторных работ, выполняемых студентами первого курса направления «Информатика и вычислительная техника». Номер выполняемого варианта определяется номером по журналу. Если номер по журналу превышает количество приведенных в разделе заданий, то выполняется задание «№ по журналу» минус «количество заданий в разделе». Результатом выполнения задания являются проект, предназначенный для выполнения в среде Borland Delphi 7, и его распечатка.

Файл сдается в электронном и в распечатанном виде, при необходимости работоспособность программы подтверждается при приемке задания. Задание считается принятым, если:

1.В программе отсутствуют принципиальные ошибки, нарушающие работоспособность.

2.Программа удовлетворяет (или в достаточной, с точки зрения преподавателя, степени удовлетворяет) требованиям, изложенным в настоящем пособии.

3.Студент во время защиты отвечает на контрольные вопросы об алгоритмах, приемах программирования, операторах, стандартных и пользовательских функциях, примененных в программе.

4.Во время контрольной проверки программы не выявлены ошибки.

5

5.Лабораторные работы могут быть сданы только в аудитории во время занятий.

Требования, предъявляемые к создаваемым программам

1.Программа должна иметь осмысленное название (слово или словосочетание), не обязательно совпадающее с названием исполняемого файла, которое должно выводиться при запуске программы, а также должно присутствовать в комментарии в начале каждого файла программы.

2.Исходный код программы должен быть в каноническом виде:

2.1.В программе не должно быть лишних операторных скобок (begin и end), при необходимости визуально выделить некоторый блок можно использовать пустую строку.

2.2.Каждый оператор программы должен находиться на отдельной строке.

2.3.Операторные скобки должны располагаться на отдельных строках.

2.4.Необходимо использовать отступы. Текст программы должен начинаться с 1-го символа строки. Все операторы линейной части программы должны иметь слева одно и то же число пробелов (символов табуляции). При определении функции, цикла или условного оператора операторные скобки необходимо располагать на уровне того блока кода, который они содержат, при этом сам блок располагается с соответствующим отступом слева. Если условный оператор или цикл содержат один исполняемый оператор, он размещается на следующей строке с соответствующим отступом слева.

2.5.Для переменных времени компиляции, констант не использовать строчные буквы, а для всех остальных идентификаторов не использовать прописные буквы.

2.6.Программа должна быть снабжена необходимыми комментариями, объясняющими каждое неочевидное действие.

2.7.Строки исходного текста не должны выходить за пределы экрана. Соответственно при распечатке не должно быть никаких переносов в строках программы.

3.Нельзя применять оператор goto и метки. Разрешается использовать оператор goto только для выхода из вложенных циклов вперед на линейную часть программы.

4.Вычисления одних и тех же значений не должны повторяться. Их необходимо оформить либо в виде функции, либо сохранить результат во временную переменную.

5.Значения любого типа, встречающиеся в программе более одного раза, должны быть оформлены в виде констант.

6

6.Компиляция должна проходить без сообщений об ошибках и предупреждений; все возможные сообщения компилятора должны быть размаскированы.

7.Комментарии исходного текста программы и сообщения, выдаваемые программой при работе, не должны содержать грамматических, стилистических и фактографических ошибок, и для них следует использовать только официальную компьютерную терминологию. Не допускается использование жаргонных и нецензурных выражений. Программа должна использовать только один язык (русский, английский, другой) для общения с пользователем, использование языков вперемешку в сообщениях и комментариях не допускается.

8.Программа должна иметь удобный и интуитивно понятный пользовательский интерфейс. При необходимости программа должна выдавать сообщения о необходимых действиях со стороны пользователя.

9.По окончании работы программы вся динамически выделяемая память должна быть освобождена, все открываемые файлы закрыты.

10.Студент должен уметь доказать правильность работы программы. Неоптимальность алгоритма, замеченная преподавателем, должна быть исправлена.

11.Аргументы функций не должны перекрывать глобальные переменные, а локальные переменные не должны перекрывать аргументы функций и глобальные переменные.

12.При наличии в программе отладочного исходного кода, он должен быть оформлен в виде условной компиляции.

Эти требования предъявляются к программам при выполнении:

1.Домашнего задания (семестр 1).

2.Лабораторных работ (семестры 1 и 2).

3.Курсовой работы (семестр 2).

Требования к оформлению

Текст пояснительной записки пишется в безличной форме с соблюдением следующих основных требований: четкости и последовательности изложения; краткости и точности формулировок; конкретности изложения результатов работы; использования только общепринятой терминологии, регламентированной государственными стандартами.

Оформление отчета по проделанной домашней, лабораторной работе:

1.Для всей работы устанавливаются следующие требования к оформлению (если не оговорено другое). Шрифт Times New Roman, размер шрифта 12 пт, стиль «Обычный» (кроме списков), абзацный отступ 1,27 (устанавливается по умолчанию). Номер страницы в правом верхнем углу, на первом листе не указывается. Поля 25 (слева), 20 (сверху и снизу), 15 (справа) мм устанавливаются на весь документ.

7

2.Началом отчета служит заголовок. Абзац 8–10 см. Поясняется тип работы (домашняя или лабораторная), номер работы, номер варианта, фамилия, имя, отчество исполнителя, группа, дата фактической сдачи работы.

3.Полный текст задания для выполняемой работы, с указанием данных конкретного варианта.

4.При необходимости приводится пояснение к методу решения или алгоритм решения поставленной задачи.

5.Исходный текст программы. Шрифт Courier New, размер шрифта 10 пт, выравнивание по левому краю, одинарный интервал. При оформлении исходного текста, также необходимо использовать отступы, как и при написании исходного кода. Многострочные комментарии должны быть выделены курсивом. Ключевые слова необходимо выделить.

6.Результат работы программы. В этом разделе описывается

последовательность действий, необходимых для получения результата, также приводится скриншот1 окна с результатом работы программы. Если в отчете присутствуют несколько рисунков, то каждый из рисунков необходимо снабдить пояснением.

Ниже приведен образец оформления пояснительной записки.

Домашнее задание № 7. Вариант № 26.

Иванов Валерий Николаевич, группа ИВТ-09 у Дата: __________________

Найти количество слов в заданном пользователем предложении. Предложение состоит из слов, разделенных одним или несколькими пробелами (без знаков препинания).

Функция нахождения количества слов в строке:

1.Просматриваем всю строку посимвольно.

2.Если текущий символ пробел (возможно слово закончилось), тогда:

a)если количество букв равно общему количеству символов в слове и количество символов в слове больше нуля (не несколько подряд идущих пробелов);

i)то увеличиваем счетчик слов;

b)обнуляем счетчики букв и символов.

3.Если текущий символ не пробел, тогда:

a)увеличиваем общее количество символов в слове;

b)если текущий символ – буква, увеличиваем количество букв.

4.Пока не обработана вся строка, переходим к пункту 2.

5.После просмотра всей строки необходимо проверить:

1 Необходимо нажать клавишу Print Screen, содержимое экрана будет помещено в буфер обмена, из которого рисунок можно поместить в отчет.

8

a)если количество букв равно общему количеству символов в слове и количество символов в слове больше нуля (не несколько подряд идущих пробелов);

i)то увеличиваем счетчик слов.

6.Возвращаем количество слов.

Исходный код программы.

Function word_count(s:string):integer; Var i,word_cnt,char_cnt,any_cnt:integer; begin

char_cnt:=0;

 

//счетчик букв

any_cnt:=0;

 

//счетчик общего количества символов

word_cnt:=0;

//счетчик слов

for i:=1 to Length(S) do //просматриваем всю строку

begin

 

//если текущий символ пробел

if(S[i]=’ ’) then

begin

 

 

if((char_cnt= any_cnt) and (any_cnt>0)) then //П. 2.а алгоритма

word_cnt:= word_cnt+1;

char_cnt:=0;

 

 

any_cnt:=0;

 

 

end

 

//П. 3 алгортма

else

 

begin

 

 

any_cnt:= any_cnt+1; //увеличиваем счетчик символов if(S[i] in [‘A’..’Z’,’a’..’z’])) then //если это буква то

char_cnt:= char_cnt+1;

end;

//когда строка закончилась

end;

if((char_cnt= any_cnt) and (any_cnt>0)) then //п. 5.а алгоритма word_cnt:= word_cnt+1;

Result:= word_cnt; //возвращаем кол-во слов end;

Var str:string; begin

Write(‘stroka:’) ; Readln(str);

Writeln(‘slov: ’, word_count(str)); Readln;

end.

Результат работы программы.

После запуска программы появляется предложение ввести строку, после ввода строки и нажатия клавиши Enter на экран выводится результат (рис. 1).

Рис. 1. Результат работы программы

9

Краткая справка по языку Object Pascal и разработке консольных приложений в среде Delphi

Среда быстрой разработки приложений Borland Delphi (рис. 2) предоставляет возможность разработки и отладки различных программных продуктов, работающих как с использованием графического интерфейса пользователя, так и в консольном режиме. Последний имеет интерфейс пользователя в виде текстового окна, называемого окном программы, в котором последовательно, строка за строкой, отображаются данные, вводимые пользователем с клавиатуры и выводимые программой. Позицию начала ввода или вывода в окне программы указывает курсор – мигающий символ, имеющий вид подчеркивания в режиме вставки или прямоугольника – в режиме замены. По умолчанию длина строки равна 80 знакам, а количество строк – 25. Изменить эти и другие параметры окна программы позволяет диалоговое окно, открывающееся при вводе команды Свойства в системном меню.

При вводе пользователь имеет возможность редактировать последние вводимые данные, используя символьные клавиши, а также клавиши Backspace (удаление последнего введенного символа), Delete (удаление символа справа от курсора), Insert (переключение режимов вставки и замены), Стрелка вверх (удаление всех введенных символов), Стрелка влево (перемещение курсора в предыдущую позицию), Стрелка вправо (перемещение курсора в следующую позицию). Если в диалоговом окне команды Свойства установить на вкладке Общие флажок Выделение мышью, то становится возможным выделять части текста буксировкой мыши, копировать выделенное в буфер обмена щелчком правой клавиши и затем вставлять в позицию курсора щелчком правой клавиши. Завершается ввод нажатием клавиши Enter, при этом курсор перемещается в начало новой строки. Максимальная длина вводимой последовательности символов равна 254.

Вывод данных из программы выполняется в виде текста, символ за символом при автоматическом перемещении курсора в очередную позицию строки, а при достижении ее конца – в начало новой строки.

Консольный режим обычно используется, когда необходимо минимизировать время счета и расход оперативной памяти. Кроме того, консольный режим удобен для быстрой проверки и отладки отдельных алгоритмов. Так как данный практикум ориентирован на развитие начальных навыков алгоритмизации и отладки небольших программ, предполагается использование консольного режима.

10