V Выбирать тип переменных с учетом диапазона и требуемой точности представления данных.
V Давать переменным имена, отражающие их назначение.
v Ввод с клавиатуры предварять приглашением, а выводимые значения – пояснениями. Для контроля сразу же после ввода выводить исходные данные на дисплей (по крайней мере, в процессе отладки).
V До запуска программы подготовить тестовые примеры, содержащие исходные данные и ожидаемые результаты. Отдельно проверить реакцию программы на неверные исходные данные.
V При записи выражений обращать внимание на приоритет операций.
V Разделять данные при вводе пробелами, символами перевода строки или табуляции.
V Тщательно форматировать текст программы и снабжать его содержательными комментариями.
ИНДИВИДУАЛЬНЫЕ ЗАДАНИЯ
Составить алгоритм и программу для предложенного варианта. Исходные данные необходимо подобрать самостоятельно, исходя из допустимой области значений исследуемой функции. (Теоретический материал по данной теме изложен в лекциях № 6, 13 и 14).
Номер варианта | ЗАДАНИЕ |
1. | |
2. | |
3. | |
4. | |
5. | |
6. | |
7. | |
8. | |
9. | |
10. | |
11. | |
12. | |
13. | |
14. | |
15. | |
16. | |
17. | |
18. | |
19. | |
20. | |
21. | |
22. | |
23. | |
24. | |
25. |
<p>Приложение № 1.
СТИЛЬ И ЗАПИСИ ПРОГРАММ НА ЯЗЫКЕ ПАСКАЛЬ
Программа должна быть правильной и эффективной. Это определяется стилем программирования и записи программы. Чтобы легко было понимать программы и вносить в них необходимые изменения, они должны быть написаны просто и ясно. Для написания наглядных и легко читаемых программ необходимо выполнять следующие рекомендации:
uСтандартизация стиля программирования. Если существует более одного способа реализации программы, то необходимо остановиться на каком-то одном способе (лучше всего общепринятом) и всегда его придерживаться. Это позволит избежать ошибок и путаницы и будет понятно другим.
uРазмещение текста программы. Не следует операторы программы писать сплошным текстом. Программу необходимо размещать структурировано:
oконструкции языка (описания, операторы, блоки) более глубоких уровней вложенности сдвигать от начала строки вправо;
oконструкции языка одинаковых уровней располагать друг под другом;
oкаждое описание и каждый оператор писать с новой строки;
oпродолжение описаний и операторов в следующих строках сдвигать вправо относительно начала;
oизбегать слишком длинных строк.
Под уровнем вложенности понимается расположенность конструкций внутри других. Уровень Program принимается за нулевой, конструкции Label, Const, Type, Var, описания процедур и функций, а также составной оператор, заключенный в операторные скобки Begin и End, имеют уровень 1, все операторы составного оператора – уровень 2.
uКомментарии. Комментарии – это пояснительные тексты в фигурных скобках { }. Они могут вставляться в любое место программы, где допустимо размещение пробела. Выбор комментариев полностью зависит от программиста. Однако не следует ими слишком увлекаться. Рекомендуется любую программу сопровождать вводными комментариями, поясняющими назначение программы и сообщающими некоторые сведения о программисте. После служебных слов Begin и End рекомендуется указывать в качестве комментариев имя программы.
uВыбор имени. Имена надо выбирать так, чтобы они наилучшим образом соответствовали тем величинам, которые они представляют.
uУпорядочение списков. Во всех списках (например, в описаниях) числа следует располагать в порядке роста их значений, а имена – по алфавиту.
uПрограммирование «сверху вниз». Вначале строится общая схема алгоритма, где описываются этапы решения задачи в общем виде. Затем уточняются и детализируются отдельные ее блоки.
uЭхо-печать исходных данных. Контрольный вывод исходных данных (эхо-печать) целесообразно производить в начале программы, сразу же после оператора ввода этих данных.
Приложение № 2.
ПРИМЕР СОСТАВЛЕНИЯ ПРОГРАММЫ
Пусть требуется составить программу вычисления общей поверхности и объема конуса по заданным радиусу основания R и длине образующей L. При вычислениях использовать равенства:
,
где H – высота конуса, определяемая по формуле:.
Общий вид схемы алгоритма для рассматриваемого примера показан ниже:
Рис.1. Алгоритм вычисления площади и объема конуса
Программа на языке Турбо Паскаль в общем случае содержит вводные комментарии, заголовок, раздел определения констант, раздел описания переменных, раздел операторов. Определение исходных данных может быть осуществлено с помощью операторов присваивания либо с помощью специальных операторов ввода. Вычисления по формулам реализуются в порядке определения числовых значений переменных H, S и V соответственно, после чего значения S и V выводятся на экран дисплея.
Для удобства пользования следует ввести комментарии, которые позволяют записать нужную учетную и поясняющую информацию (фамилию студента, номер группы и выполняемого варианта, фамилию преподавателя и цель написания программы).
При вычислениях будет использована константа, которой в Турбо Паскале соответствует имя PI. В качестве имен переменных следует использовать переменные, обозначения которых максимально совпадают с именами и обозначениями переменных самой задачи.
Программа на языке Турбо Паскаль будет иметь вид:
{***************************************************}
{Программа: CONUS. }
{Цель: вычисление площади и объема конуса. }
{Описание параметров и переменных: }
{ R – радиус; L – длина образующей; }
{ H – высота; S – площадь поверхности; }
{ V – объем. }
{Требуемые подпрограммы: нет. }
{Метод: вычисление по формулам. }
{Программист: Иванов И.И. }
{Дата выполнения: 10 апреля 2006 г. }
{***************************************************}
ProgramCONUS;
Var H, L, R, S, T, V : real;
Begin
Writeln(‘Введите радиус и длину образующей’);
Read(R,L);
Wriyeln(‘R=’, R, ’L=’, L);
H:=Sqrt(L*L-R*R);
T:=PI*R*R;
S:=T+PI*R*L;
V:=T*H/3;
Writeln(‘Параметры конуса:’);
Writeln(‘H=’, H, ‘V=’, V, ‘S=’, S)
End.{CONUS}
Исходные данные для просчета контрольного варианта выбираются таким образом, чтобы вычисления были достаточно простые и в то же время обеспечивали полные вычисления по всем формулам. Примем R=3 см, L=5 см. Тогда получим: H=4 см, S=75,36 см2, V=37,68 см3.
Результаты просчета контрольного варианта на ЭВМ дают следующие значения:
параметры конуса:
R=3.000000E+00 L=5.000000E+00 H=4.000000E+00
V=3.767990E+01
S=7.539820E+01
Откуда видно, что они совпадают с результатами ручного просчета.
Приложение № 3.
ПОНЯТИЕ ОБ ОТЛАДКЕ ПРОГРАММЫ
Отладка программы является итеративным процессом обнаружения и исправления ошибок, обычно требует последовательного выполнения четырех этапов:
Oвыявление ошибки;
Oлокализация ошибки в тексте программы;
Oустановление причины ошибки;
Oисправление ошибки.
Процесс поиска ошибок в программе называется тестированием. Некоторые ошибки проявляются после первого же запуска программы на выполнение, и для их обнаружения не надо прибегать ни к каким специальным средствам. Некоторые ошибки проявляются в случайные моменты работы программы. С такими ошибками справиться труднее всего – зафиксировать условия возникновения ошибки, понять причину ошибки и устранить ее. С целью обнаружения подобных ошибок осуществляется тестирование – выполнение программы для специально подобранных представительных контрольных примеров – тестов. Тест – это такой набор исходных данных, для которого вручную или другим способом просчитаны промежуточные и конечные результаты и который может быть использован для получения информации о надежности проверяемой программы. Тестирование программы должно включать в себя прогон трех видов контрольных примеров: нормальных ситуаций, граничных ситуаций и случаев неправильных данных. Нормальные случаи – это примеры с правильными входными данными. Если программа не работает в подобных случаях, она требует серьезных переделок. Граничные контрольные примеры помогают установить, способна ли программа нормально реагировать на особые случаи во входных данных. Граничные примеры представляют собой данные, которые, будучи математически корректными, приводят программу к необходимости работать особым образом. Неправильными являются такие данные, которые расположены вне допустимого диапазона. Примеры с неправильными данными должны быть обработаны соответствующим образом, поскольку в повседневной эксплуатации программе придется иметь дело и с неверными входными данными.
После того как ошибка обнаружена, необходимо найти в исходном тексте программы то место, в котором она возникла, – локализировать ошибку. Можно использовать ряд различных методов отладки, позволяющих обнаружить расположение ошибки; выбор существенно зависит от особенностей ситуации. Большинство программистов начинают с неформального метода, известного под названием проверка за столом. Используя контрольный пример, который привел к ошибке в программе, программист аналитически трассирует листинг программы в надежде локализовать ошибку. Проверка за столом – это хороший метод, поскольку он заставляет программиста детально понять работу программы. Если применение метода проверки за столом оказалось бесплодным, нужно использовать специальные методы и способы отладки, позволяющие наблюдать за передачей управления в программе и за изменением значений наиболее важных переменных. Полученная отладочная информация позволит локализовать подозрительные ситуации, провести анализ и выявить причину ошибки, устранить ее, а затем продолжить поиск других ошибок.
ПРИЧИНЫ И ТИПЫ ОШИБОК
В общем случае ошибки могут возникать на любом этапе разработки программы, причина ошибок может быть связана с недопониманием сути задачи, недостатками проектирования алгоритма, неправильным использованием языковых средств. При выполнении программы ошибки разного типа проявляют себя различным образом, и их принято подразделять на следующие группы:
Oсинтаксические ошибки;
Oсемантические ошибки;
Oлогические ошибки.
Синтаксические ошибки – это ошибки, проявляющиеся на этапе компиляции программы и возникающие в связи с нарушением синтаксических правил написания предложений используемого языка программирования (к таким ошибкам относятся пропущенные точки с запятой, ссылки на неописанные переменные, присваивание переменной значений неверного типа и т.д.). Если компилятор встречает в тексте программы оператор или описание, которые он не может интерпретировать, то он позиционирует курсор на место обнаруженной ошибки и в строку статуса выводит сообщение, содержащее номер ошибки и ее краткое описание.
Семантические ошибки – это ошибки, проявляющиеся на этапе выполнения программы при ее попытке вычислить недопустимые значения параметров или выполнить недопустимые действия. Причина возникновения ошибок данного типа связана с нарушением семантических правил написания программ (примером является ситуация, когда программа пытается открыть несуществующий файл для ввода или выполнить деление на нуль). Если программа обнаруживает ошибку такого типа, то она завершает свое выполнение и выводит сообщение:
Run-time errorat
Это значит: «Ошибка времени выполнения nnn по адресу xxxx : yyyy», где nnn – номер ошибки, а xxxx : yyyy –адрес ошибки (сегмент : смещение) в загрузочном модуле. При выполнении программы из Турбо-среды далее автоматически выбирается соответствующий исходный файл и в нем находится местоположение ошибки. Если же программа выполнялась вне Турбо-среды и в ней появилась ошибка данного типа, то необходимо запустить Турбо Паскаль и найти вызвавший ошибку оператор, используя команду Search/Find Error (после того как активизируется команда Search/Find Error, она запросит адрес сегмента и смещения оператора, вызвавшего ошибку). При этом опция Destination должна быть установлена как Disk.
Логические (смысловые) ошибки – самые сложные и трудноуловимые, связанные с неправильным применением тех или иных алгоритмических конструкций. Эти ошибки при выполнении программы могут проявиться явно (выдано сообщение об ошибке, нет результата или выдан неверный результат, программа «зацикливается»), но чаще они проявляют себя только при определенных сочетаниях параметров или вообще не вызывают нарушения работы программ, которая в этом случае выдает правдоподобные, но неверные результаты.
Ошибки первого типа легко выявляются с помощью компилятора. Обычно устранение синтаксических ошибок не вызывает особых трудностей. Более сложно выявить ошибки второго и особенно третьего типа. Для обнаружения и устранения ошибок второго и третьего типа обычно применяют специальные способы и средства отладки программ. Выявлению ошибок второго типа часто помогает использование контролирующих режимов компиляции с проверкой допустимых значений тех или иных параметров (границ индексов элементов массивов, значений переменных типа диапазона, ситуаций переполнения, ошибок ввода-вывода). Устанавливаются эти режимы с помощью ключей компилятора, задаваемых либо в программе, либо в меню Options/Compiler.
СПОСОБЫ И СРЕДСТВА ОТЛАДКИ
В ходе отладки программа должна быть проверена в двух измерениях: в пространстве и во времени. Первое представляет собой контроль содержимого памяти в конкретные моменты работы программы, отслеживание текущих значений всех или выбранных групп переменных, проверку на соответствие их значений декларированным диапазонам (типам). Второе – это отслеживание хода выполнения алгоритма для проверки правильности заданной последовательности операций и передач управления при различных значениях параметров. Самым распространенным и полезным приемом отладки, позволяющим объединить обе формы контроля, являются отчеты о трассировке. Трассировка программы – это регистрация логического пути выполнения программы – последовательности выполнения ее операторов/блоков с контрольной выдачей информации о результатах каждого шага – обо всех изменениях значений рабочих переменных и параметров связи. Сам принцип трассировки – слишком общий. На практике реализуют трассировку программы в том или ином объеме, используя различные способы и средства отладки.
Самый простой способ отладки – это расстановка в тексте программы отладочных печатей, позволяющих проследить логический и арифметический следы программы, т.е. каким образом она выполнялась и что она вычисляла. Отладочные печати ставятся в узловых/ключевых точках программы, позволяющих контролировать ошибки ввода (эхо-печать введенных данных), результаты вычислительных операций и логику работы программы или отдельных ее частей. Отладочные операторы оформляются в отдельные строки, выделяются особым образом (например, сдвигом влево или вправо) и в зависимости от цели контроля могут содержать вывод значений контролируемых переменных, проверку условий или идентифицирующее сообщение (комментарий) о прохождении заданной точки программы, о начале или завершении работы определенного участка/блока. Средства для отладки могут быть вставлены в программу еще при ее разработке. В ходе отладки количество и место расположения отладочных операторов меняется, но их лучше не удалять, а превращать в комментарии. Такой способ отладки весьма трудоемок и может сам служить источником ошибок.
Процесс отладки значительно облегчается, сели использовать для этого системные средства отладки – специальные программы-отладчики, имеющиеся в программном обеспечении ПЭВМ. В составе программного пакета Турбо Паскаль имеются отладочные средства двух уровней: встроенный отладчик, являющийся составной частью интегрированной среды программирования, и автономный отладчик, запускаемый автономно, имеющий собственную среду и обладающий собственным оконным интерфейсом, в котором используются те же приемы, что и при работе с интегрированной средой Турбо Паскаль.
Встроенный отладчик Турбо Паскаля (Debugger) позволяет контролировать ход выполнения программы – выполнять трассировку программы без изменения самой программы с помощью следующих действий:
§выполнение программы построчно/по шагам;
§остановки выполнения программы в заданной точке – точке останова;
§перезапуска программы, не закончив ее выполнение;
§получения, назначения и модификации значений любых переменных и параметров программы, а также получения некоторых дополнительных сведений о программе, например списка активных процедур. Эти возможности позволяют, отследив выполнение каждого оператора/операции, определить местоположение ошибки и понять ее причину.
Автономный отладчик (Turbo Debugger – файл td.exe) предоставляет большие возможности: позволяет осуществить трассировку программу/блока на уровне ассемблерных и машинных инструкций, просмотреть содержимое/дамп памяти и пр., что требует особого режима компиляции исходного текста. Использование дополнительных возможностей автономного отладчика целесообразно при отладке и тестировании больших по объему и сложных программ и при наличии у программиста достаточно высокого уровня квалификации. (В данном курсе автономные средства отладки не рассматриваются).
СООБЩЕНИЯ ОБ ОШИБКАХ
СИНТАКСИЧЕСКИЕ ОШИБКИ
НОМЕРОШИБКИ | НАИМЕНОВАНИЕОШИБКИ | КОММЕНТАРИЙ |
Out of memory | Компиляторуне хватает памяти | |
Identifier expected | Ожидаетсяидентификатор. Возможно, что вы пытаетесь неправильно использовать зарезервированноеслово. | |
Unknown identifier | Идентификаторне описан. | |
Duplicateidentifier | Данныйидентификатор уже использован. | |
Syntax error | Недопустимыйсимвол. Возможно, строка не ограничена апострофами. | |
Error in realconstant | Ошибкав константе вещественного типа. | |
Error in integerconstant | Ошибкав константе целого типа. | |
String constantexceeds line | Выходстроки за допустимые границы. Возможно не закрыт апостроф строки. | |
Unexpected end offile | Неожиданныйконец. Возможно, несбалансированны операторные скобки BEGIN и END или не закрыт комментарий. | |
Line too long | Слишкомдлинная строка программы. | |
12,33 | Type identifierexpected | Ожидаетсятип идентификатора. |
Variable identifierexpected | Ожидаетсяидентификатор переменной. | |
Error in type | Ошибкав указании типа. | |
Type mismatch | Несоответствиетипов: переменной и выражения в операторе присваивания, фактического и формальногопараметров в обращении к подпрограмме, операндов в выражении. | |
Ordinal typeexpected | Ожидаетсяпорядковый номер. | |
30.. 32 | Constant expected | Ожидаетсяконстанта. |
Invalid functionresult type | Недопустимыйтип функции. | |
36,37 | Begin (End)expected | ОжидаетсяBEGIN (END). |
38.. 40 | Integer (ordinal,Boolean) expression expected | Данноевыражение должно быть целого (порядкового, логического) типа. |
Operand types donot match operator | Типоперандов не соответствует типу знака операции. | |
Error in expression | Ошибкав выражении. | |
IIIegal assignment | Неправильноеупотребление присваивания. | |
50,54, 57, 58 | DO (OF, THEN, TO,DOWNTO) expected | Ожидаетсязарезервированное слово DO(OF,THEN,TO,DOWNTO). |
Division by zero | Делениена нуль. | |
Cannot Read orWrite variables of type | Нельзявводить или выводить переменные этого типа. | |
Constant and casetypes do not match | Константаи тип селектора в операторе CASEнесовместимы. | |
Constant out ofrange | Константавыходит за границы допустимого диапазона. | |
Integer or realexpression expected | Данноевыражение должно быть типа INTEGERили REAL. | |
85.. 95 | “;”, “:”, “,”, “=”,“:=”, “[“ or “(.”, “]” or “).”, “.”, “..” expected | Ожидаетсяуказанный знак препинания. |
Invalid FOR controlvariable | Неправильныйпараметр в операторе FOR. | |
98, 102, 103, 104,106 | Integer (String,Real, Ordinal, Character) variable expected | Данная переменная должна быть целой (типа STRING, типа REAL, порядкового типа, типа CHAR). |
Overflow inarithmetic operation | Переполнение.Результат выходит за границы типа LONGINT. | |
Case constant outof range | Константаоператора CASEвыходит за границы целого типа. | |
Error in statement | Сданного символа оператор начинаться не может. | |
Invalid floatingpoint operation | Даннаяоперация над вещественными величинами привела к переполнению или делению нануль. | |
Invalid procedureor function reference | Неправильноеобращение к подпрограмме. |
АЛГОРИТМИЧЕСКИЕ ОШИБКИ
НОМЕР ОШИБКИ | НАИМЕНОВАНИЕОШИБКИ | КОММЕНТАРИЙ |
Invalid numericformat | Введенноезначение не соответствует правильному числовому формату. | |
Division by zero | Делениена нуль. | |
Range check error | Выходзначения за границы диапазона. | |
Floating pointoverflow | Переполнение.При операции с вещественными числами возникает чересчур большое число. | |
Invalid floatingpoint operation | Неправильнаяоперация с вещественным числом. | |
Arithmetic overflowerror | Выходрезультата целочисленной арифметической операции за допустимые границы. |
СПИСОК ЛИТЕРАТУРЫ
1.Аболрус С. Программирование на Pascal, 3-е издание. – Пер. с англ. – СПб.: Символ-Плюс, 2003. – 328 с.
2.Адаменко А.Н. Pascal на примерах из математики. – СПб.: БХВ-Петербург, 2005. – 416 с.
3.Глинський Я.М., Анохін В.Є., Ряжська В.А. Паскаль. Turbo Pascal і Delphi. 3-є вид. – Львів: «Деол», 2002. – 144 с.
4.Культин Н.Б. Программирование в Turbo Pascal 7.0 и Delphi. – СПб.: BHV – Санкт-Петербург, 1997. – 240 с.
5.Новиков В.С., Парфилова Н.И., Пылькин А.Н. Алгоритмизация и программирование на Турбо Паскале: Учебное пособие. – М.: Горячая линия – Телеком, 2005. – 438 с.
6.Павловская Т.А. Паскаль. Программирование на языке высокого уровня: Учебник для вузов. – СПб.: Питер, 2003. – 393 с.
7.Павловская Т.А. Паскаль. Программирование на языке высокого уровня: Практикум. – СПб.: Питер, 2006. – 317 с.
8.Попов В.Б. Turbo Pascal для школьников. Версия 7.0: Учеб. Пособие. – М.: Финансы и статистика, 1996. – 464 с.
9.Решение задач средствами языка Turbo Pascal 7.0 / А.Н. Моргун – К.: Юниор, 2002. – 216 с.
10. Турбо Паскаль 7.0 / Е.Р.Алексеев и др. – М.: ООО «Издательство АСТ»: Издательство «НТ Пресс», 2004. – 270 с.
Статьи к прочтению:
Разработка MVC приложения на Java за два часа | Компьютерная школа Hillel
Похожие статьи:
-
Пошаговое выполнение программы
Контроль программы до ввода. Чтобы ускорить процесс создания проекта, рекомендуется проконтролировать программу еще до ввода в компьютер с помощью…
-
Структура программы на паскале
Программы, написанные на языке программирования Турбо Паскале, строятся в соответствии с правилами, представляющими собой несколько расширенные и…