Использование средств отладки
Содержание
Введение. 4
Лабораторная работа № 1. Интерфейс среды программирования Borland Pascal 7.0. 5
Лабораторная работа № 2. Линейные структуры.. 12
Лабораторная работа № 3. Структуры ветвления. 18
Лабораторная работа № 4. Введение в циклы.. 27
Лабораторная работа № 5. Циклические структуры.. 33
Лабораторная работа № 6. Одномерные массивы.. 39
Лабораторная работа № 7. Многомерные массивы.. 44
Лабораторная работа № 8. Обработка символьных строк. 50
Лабораторная работа № 9. Функции и процедуры.. 55
Список литературы.. 59
Введение
Методические указания подготовлены в соответствии с учебно-методическим комплексом по дисциплине «Программирование», входящей в базовую часть профессионального цикла подготовки бакалавров по направлению подготовки 230100 «Информатика и вычислительная техника» профиль подготовки «Автоматизированные системы обработки информации и управления».
Так же они могут быть использованы для изучения дисциплины «Программирование и основы алгоритмизации» при подготовке бакалавров по направлению подготовки 220400 «Управление в технических системах» профиль подготовки «Управление и информатика в технических системах» и других смежных дисциплин и направлений подготовки.
В методических указаниях отражены вопросы получения практических навыков в программировании. Применение структур данных и алгоритмов показано в среде программирования Borland Pascal 7.0.
Данные методические указания содержат:
¾ ссылки на литературные источники по программированию, изучение которых позволит на высоком уровне получить теоретические знания по программированию и основам алгоритмизации;
¾ комплекс разобранных задач, позволяющих закрепить на практике полученные теоретические знания;
¾ список заданий для самостоятельного выполнения, проработка которых гарантирует получение практических навыков в области программирования.
Программирование – это творческий процесс, поэтому экспериментирование и создание своих алгоритмов решения задач приветствуется. Чем большую работу учащийся проделает самостоятельно – тем большему научится.
Есть только один способ научиться программировать – это программировать.
Лабораторная работа № 1. Интерфейс среды программирования Borland Pascal 7.0
Цель работы: выработка навыков подготовки и трансляции программ на языке Pascal в интегрированной среде программирования Borland Pascal 7.0.
Задачи:
¾ познакомиться с интерфейсом среды программирования Borland Pascal 7.0;
¾ научиться создавать и сохранять новую программу;
¾ получить навыки трансляции и запуска программы на выполнение.
Внимание: для успешного выполнения данной лабораторной работы необходимо внимательно изучить представленный теоретический материал, более полную информацию по данной теме можно найти в: [4: Тема 2.1, 2.2], [9: Параграф 2.1], [10: Глава 1, Приложение 1.2].
Установка и запуск системы
Среда программирования (СП) Borland Pascal по умолчанию устанавливается в каталог «BP». Этот каталог содержит, по меньшей мере, следующие подкаталоги:
BIN – файлы исполняемых модулей,
UNITS – файлы библиотечных модулей,
BGI – драйверы обеспечивающие графические режимы для различный типов видеокарт,
DOC – файлы справочной подсистемы и документации,
EXAMPLES – файлы примеров,
SOURCE – файлы исходных тестов библиотечных модулей.
Интерфейс системы
Для запуска системы необходимо войти в каталог с Borland Pascal (например, C:\BP\BIM или D:\BP\BIN) и запустить файл BP.EXE.
Интерфейс среды содержит пункты и подпункты меню, представленные на рисунке 1. Доступ к меню осуществляется нажатием клавиши F10.
Меню и команды
Ниже описаны только некоторые, наиболее часто используемые, пункты меню и команды. Доступ ко всем командам возможен посредством главного меню системы. Наиболее часто используемые команды можно инициировать не только через выбор пунктов меню, но и нажатием горячих клавиш.
Рисунок 1. Основное окно СП Borland Pascal
Пункт File:
New – создание нового файла в новом окне редактирования (файл получает имя NONAMExx.PAS, где xx – порядковый номер окна).
Open (F3) – открытие существующего файла и загрузка его в активное окно редактирования.
Save (F2) – сохранение текста из активного окна в файл на диске.
Save all – сохранение текстов из всех окон в файлы на диске.
Change dir – смена текущего устройства и текущего каталога.
Exit – выход из среды разработки.
Пункт Edit:
Undo (Alt+BackSpace) отменяет последнюю команду редактирования текущей строки активного окна.
Cut (Shift+Del) удаляет и запоминает в буфере обмена выделенный фрагмент текста. Текст должен быть предварительно выделен при помощи мыши или клавиш со стрелками при нажатой клавише Shift.
Copy (Ctrl+Ins) запоминает в буфере обмена без удаления выделенный фрагмент текста.
Paste (Shift+Ins), начиная с позиции курсора, вставляет в текст фрагмент из буфера обмена.
Clear (Ctrl+Del) удаляет выделенный фрагмент текста.
Замечание. Поскольку комбинации клавиш, закрепленные за указанными пунктами меню, имеют такие же функции и в большинстве других программных систем, то их желательно запомнить.
Пункт Search
Find – поиск фрагмента текста в активном окне.
Replace – поиск фрагмента текста в активном окне и его замена другим фрагментом.
Search again – повторяет последнюю команду Find или Replace.
Пункт Run
Run (Ctrl+F9) – запуск на выполнение программы из активного окна.
Step over (F8) – пошаговое выполнение программы без пошаговой обработки процедур и функций.
Tarce into (F7) – пошаговое выполнение программы, а так же всех процедур и функций.
Go to cursor (F4) – запуск программы на выполнение от момента останова до строки, в которой находится курсор.
Program reset (Ctrl+F2) – прерывание выполнения приостановленной программы.
Parameters – задание командной строки, передаваемой программе при запуске.
Пункт Compile
Compile (Alt+F9) – компиляция текста программы в активном окне.
Make (F9) – создает exe-файл программы с перекомпиляцией используемых ею модулей, если они претерпели изменения с момента последней компиляции.
Build – создает exe-файл, перекомпилируя все используемые программой модули.
Primary file – задает имя файла, с которого начинается компиляция по командам Make и Build.
Пункт Debug
Breakpoints – создание, удаление и редактирование точек останова.
Call stack (Ctrl+F3) – просмотр списка вызванных к моменту останова программы процедур или функций.
Register – просмотр содержимого регистров процессора.
Watch – открывает окно просмотра переменных.
Output открывает окно вывода текста из программы.
User screen (Alt+F5) – открывает окно пользователя, в котором отображаются не только текстовые, но и графические данные, выводимые программой.
Evaluate/modify (Ctrl+F4) – просмотр/модификация значений переменных.
Add watch (Ctrl+F7) – добавление переменной/выражения в окно Watch.
Add breakpoint – установить новую точку останова.
Пункт Options
Compiler – установка параметров компилятора.
Linker – установка параметров компоновщика.
Debugger – установка параметров встроенного отладчика.
Directories – задание каталогов, с которыми работает СП Pascal.
Browser – установка параметров для окна просмотра Browse.
Environment – установка параметров интерфейса системы.
Open – загрузка параметров среды из файла.
Save – запись параметров среды в файл, из которого они были загружены.
Save as – запись параметров среды в новый файл.
Пункт Window
Size/Move (Ctrl+F5) – управление величиной и расположением активного окна.
Zoom (F5) – управление величиной окна.
Next (F6) – смена активного окна на следующее.
Previos (Shift+F6) – смена активного окна на предыдущее.
Close (Alt+F3) – закрыть активное окно.
List (Alt+0) – выводит список активных окон.
Пункт Help
Contents – вывод подсказки по названиям разделов.
Index (Shift+F1) – вывод подсказки по ключевым словам.
Topic search (Ctrl+F1) – выдача подсказки о слове, на котором находится курсор.
Создание новой программы
Для создания новой программы необходимо выполнить следующую последовательность действий:
1. Запустить среду разработки Borland Pascal.
2. Установить текущим ваш рабочий каталог (команда File -> Change dir).
3. Выполнить команду File -> New, после чего появляется новое окно редактирования, и курсор устанавливается в его начало.
4. Набрать текст программы.
5. Сохранить набранный текст в новом файле на диске (команда File -> Save as), введя на запрос системы имя файла.
6. Запустить программу на исполнение (команда Run -> Run (Ctrl+F9)) для того, чтобы проверить наличие синтаксических ошибок в ней.
7. При обнаружении ошибки (см. рисунок 2) исправить ее. С этой целью следует прочитать сообщение об ошибке (выделено красным цветом), проанализировать строку программы, на которой остановился курсор (именно там находится искомая ошибка), найти и исправить ошибку, снова запустить программу на выполнение.
Рисунок 2. Пример обнаружения ошибки в программе
Замечание. Только в случае ошибки Error 85: “;” expected. (; ожидается) курсор останавливается не в строке с ошибкой, а на следующей строке.
8. После того, как в программе исправлены все ошибки, сохранить исправленный текст в файл (File -> Save).
9. Запустить программу на выполнение (команда Run -> Run) и проверить правильность ее работы.
10. В том случае если в программе не установлена «задержка», по завершении работы программы просмотреть результаты, выведенные ею на экран (команда Debug -> User screen).
Замечание. Если программа запустилась и выдала на экран результаты своей работы, это не означает, что программа работает правильно! Правильность ее работы может доказать только серия тестовых запусков на данных для которых известны правильные результаты работы программы.
11.Если логика программы оказалась неверной, устранить логические ошибки и повторить пункты 6-10.
12.Сохранить окончательный вариант программы в файл (команда File -> Save).
13.Выйти из системы (команда File -> Quit).
Порядок выполнения работы
1. Внимательно изучить пункты меню среды программирования Borland Pascal 7.0.
2. Набрать программу-пример (задача 1) и выполнить с ней все описанные выше приемы работы, изучить все сообщения о синтаксических ошибках и устранить их.
Задача 1.Поменяйте между собой значения двух переменных X и Y.
program X_Y;
var
x, y, z : integer;
begin
writ('введите X');
read(x);
write('введите Y');
readln(y)
z:=x;
x:=y;
y = z;
writeln('Новые значения x и y );
write ('x=' , x 'и y=' Y );
Readln;
Readln;
End
Замечание. При наборе текста программы, важно приучить себя делать отступы в строках программы, выделяя тем самым основные блоки в программе. Структурированный таким образом текст программы легче читается и анализируется.
3. На примере решения задачи 2 закрепить навыки работы со средствами редактирования текста программы, так же поиска и устранения синтаксических ошибок.
Задача 2. Вычислить расстояние между двумя точками с координатами X1, X2 и Y1, Y2.
program Len
var
s, x1, y1, x2, y2: integer;
begin
writeln('введите x1,y1');
readln(x1, y1);
write('введите x2, y2);
readln(x2,y2) ;
s =sqrt((x2-x1)*(x2-x1+(y2-y1)*(y2-y1);
writln('Расстояние: S = ,s );
Readlm
Readln;
End.
Контрольные вопросы:
1. Как запустить среду программирования Borland Pascal.
2. Назовите клавишу, делающую активным меню программы.
3. Объяснить назначение основных команд пункта меню File.
4. Объяснить назначение основных команд пункта меню Edit.
5. Объяснить назначение основных команд пункта меню Search.
6. Объяснить назначение основных команд пункта меню Run.
7. Объяснить назначение основных команд пункта меню Compile.
8. Объяснить назначение основных команд пункта меню Debug.
9. Объяснить назначение основных команд пункта меню Options.
10. Объяснить назначение основных команд пункта меню Window.
11. Перечислить порядок создания и запуска на выполнения новой программы.
Лабораторная работа № 2. Линейные структуры
Цель работы:Знакомство с программированием на языке Pascal: работа с переменными, ввод-вывод, выражения, линейные алгоритмы.
Задачи:
¾ научиться объявлять переменные;
¾ познакомиться с числовыми типами данных и арифметическими функциями работы с ними;
¾ изучить команды ввода-вывода данных на экран и их особенности;
¾ получить навыки создания программ с линейной структурой.
Порядок выполнения работы:
1. Перед выполнением работы, обязательно, прочитать конспект лекций по данной теме.
2. Ознакомиться с представленными в лабораторной работе теоретическими сведениями.
3. Получить дополнительные теоретические знания из источников: [4: Тема 4], [7: Занятие 1 - 3], [9: Параграф 1], [10: Глава 3].
4. Реализовать на ЭВМ разобранные примеры;
5. Самостоятельно выполнить предложенные задачи.
Внимание: переходить к выполнению пунктов 4 и 5 только после тщательной проработки пунктов 1 – 3.
Основные теоретические сведения:
- каждая переменная программы должна быть объявлена;
- объявляемые переменные помещают в раздел, который начинается словом var;
- в имени переменной можно использовать буквы латинского алфавита и цифры, но первым символом обязательно должна быть буква;
- основными числовыми типами языка Pascal являются integer (целый) и real (вещественный);
- инструкция присваивания ( := ) используется для изменения значений переменных, в том числе и для вычислений по формулам;
- тип выражения, находящегося в правой части инструкции присваивания, должен соответствовать типу переменной, имя которой стоит слева от символа инструкции присваивания (при нарушении соответствия типа переменной и выражения компилятор выводит сообщение об ошибке Type miss match — несоответствие типов;
- инструкции write и writeln предназначены для вывода на экран монитора сообщений и значений переменных;
- инструкция writeln без параметров переводит курсор в начало следующей строки экрана;
- для ввода с клавиатуры во время работы программы исходных данных (значений переменных) предназначена инструкция readилиreadln;
- в случае несоответствия типа введенных данных типу переменной, значение которой вводится с клавиатуры, программа завершает работу и на экран выводится сообщение Error: invalid numeric format;
- текст, заключенный в скобки {…..} является комментарием.
Числовые типы данных:
1. Целые типы данных:
Название | Длина в байтах | Диапазон значений |
Byte | 0 ... 255 | |
ShortInt | -128 ... 127 | |
Word | 0 ... 65535 | |
Integer | -32768 ... 32767 | |
LongInt | -2147483648 ... 2147483647 |
Над целыми типами определены операции:
1. "+" - сложение;
2. " * " - умножение;
3. " - " вычитание;
4. div- целочисленное деление;
5. mod- получение остатка от целочисленного деления.
2. Вещественные типы:
Вещественные типы представляются с некоторой точностью, которая зависит от компьютера. Необходимо знать, что вещественный тип разделяется на несколько типов, но в данных примерах использоваться будет тип Real, которые занимают 6байт, имеют диапазон возможных значений модуля от 2.9Е-39 до 1.7Е+38 и точность представления данных – 11...12 значащих цифр.
В языке Паскаль числа могут быть представлены в двух видах: с фиксированнойточкой и плавающей запятой.
Числа с фиксированной точкой изображаются десятичным числом с дробной частью, которая может быть и нулевой. Например, 27.9, 5.00
Числа с плавающей точкой имеют вид mEp, где m - мантисса; E - признак записи числа с десятичным порядком; p - степень числа 10. Таким образом, например, число 3,65*10-5 в формате с плавающей точкой представляется как 3.65Е-5.
Еще несколько примеров:
Математическая запись: | Запись на Паскале: |
4E -4 | |
0.62E+5 | |
-10.88E12 |
3. Стандартные арифметические функции:
Функция | Описание | Тип результата |
abs(x) | Абсолютное значение (модуль) числа | Совпадает с типом аргумента |
arctan(x) | Арктангенс (в радианах) | Вещественный |
cos(x) | Косинус (в радианах) | Вещественный |
sin(x) | Синус (в радианах) | Вещественный |
exp(x) | Экспонента (ex) | Вещественный |
ln(x) | Натуральный логарифм (по основанию e) | Вещественный |
frac(x) | Взятие дробной части числа | Вещественный |
int(x) | Взятие целой части числа | Целый |
odd(x) | Проверка нечетности числа | boolean |
pi | Значение числа p | Вещественный |
round(x) | Округление к ближайшему целому round(3.5) = 4 | Целый |
trunc(x) | Округление к ближайшему меньшему целому trunc(3.5) = 3 | Целый |
sqr(x) | Возведение в квадрат | Вещественный |
sqrt(x) | Извлечение квадратного корня | Вещественный |
Примеры выполнения задач
Задача 1. Координаты вершин треугольника (X1,Y1); (X2,Y2); (X3,Y3) вводятся с клавиатуры. Найти периметр треугольника.
Напоминание:Расстояние между двумя точками на плоскости вычисляется по формуле S=
Тестовые данные:
№ | X1 | Y1 | X2 | Y2 | X3 | Y3 | Результаты |
-4 |
Решение задачи:
Program Perimetr_treugoln; {Заголовок программы}
Var {Объявляем переменные}
a,b,c, {Стороны треугольника}
x1, y1, x2, y2, x3, y3, p:real; {Координаты вершин}
Begin {Начало команд}
Writeln( ‘Введите координаты – x1, y1, x2, y2, x3, y3’);
{Вывод на экран сообщения}
Readln(x1, y1, x2, y2, x3, y3); {Читаем координаты}
a:=sqrt((x2-x1)* (x2-x1)+ (y2-y1)* (y2-y1)); {Находим стороны}
b:=sqrt((x3-x1)* (x3-x1)+ (y3-y1)* (y3-y1));
c:=sqrt((x3-x2)* (x3-x2)+ (y3-y2)* (y3-y2));
P=a+b+c; {Находим периметр}
Writeln(P); {Выводим на экран}
Readln;
Readln; {Задержка программы}
End. {Остановка работы}
Задача 2. Найти среднее арифметическое кубов и квадратов двух чисел, вводимых с клавиатуры.
Решение задачи:
Program Srednee;
Var
A,b:real;
Begin
Writeln(' Введите два числа - a, b');
Readln(a,b);
Writeln((a*a*a+b*b*b)/2);
Writeln((a*a+b*b)/2);
Readln;
Readln;
End.
Задача 3. С клавиатуры вводится трехзначное целое число, найти сумму цифр этого числа.
Решение задачи:
Program Summa_cifr;
Var
a, x, S :integer;
Begin
Writeln(' Введите целое трехзначное число! ');
Readln( x); {Пусть X=432. тогда }
S:=0; {Важно обнулить сумму!}
a:=x mod 10; {a=2}
S:=S+a; {S=2}
x:=x div 10; {x=43}
a:= x mod 10; {a=3}
S:=S+a; {S=5}
a:=x div 10; {a=4}
S:=S+a; {S=9}
Writeln(' S= ',S); {На экран: S= 9 }
Readln;
Readln;
End.
Задания для самостоятельного выполнения
1. По двум данным катетам найти гипотенузу, периметр и площадь прямоугольного треугольника.
2. Найти площадь грани, площадь поверхности и объем куба, длина ребра которого вводится с клавиатуры.
3. Задается длина окружности. Найти площадь круга, шара, ограниченного этой окружностью, и квадрата, вписанного в эту окружность.
4. В треугольнике известны две стороны A,B и угол c, между ними; найти сторону C, углы a,b.
5. Найти площадь кольца, внутренний и внешний радиус которого вводятся с клавиатуры.
6. Три сопротивления R1, R2 и R3 соединены параллельно. Найти сопротивление соединения.
7. Поменять между собой значения двух переменных X и Y.
8. Поменять местами значения переменных x=>y, y=>z, z=>x.
9. Ввести 4-значное число. Превратить его в 2-значное, отбросив первую и последнюю цифру.
10. С клавиатуры задается число К. Выбросить из записи К цифру, обозначающую сотни. Вывести полученное число на экран.
11. С клавиатуры вводится трехзначное целое число, поменять местами первую и последнюю цифры в числе.
12. Выведите на экран
***** S = (x + y ) / 2 =12 *****
13. Выведите на экран
+**********************+
| *** _______ *** |
+**********************+
Лабораторная работа № 3. Структуры ветвления
Цель работы: познакомитьсясалгоритмами разветвленной структуры.
Задачи:
¾ изучить принципы работы оператора if;
¾ закрепить навыки работы в среде программирования;
¾ научиться пользоваться средствами отладки;
¾ научиться выполнять программу в пошаговом режиме.
Порядок выполнения работы:
1. Перед выполнением работы, обязательно, прочитать конспект лекций по теме «Структуры ветвления».
2. Ознакомиться с представленными в лабораторной работе сведениями по отладке программ.
3. Получить дополнительные теоретические знания из источников: [2: стр. 126 - 128], [4: Тема 2.4, 5], [7: Занятие 5], [9: Параграф 4].
4. Реализовать на ЭВМ разобранные примеры;
5. Самостоятельно выполнить предложенные задачи.
Внимание: переходить к выполнению пунктов 4 и 5 только после тщательной проработки пунктов 1 – 3.
Основные теоретические сведения:
- инструкция if используется для выбора одного из двух направлений дальнейшего хода программы (последовательности инструкций, которые должны быть выполнены);
- условие — это выражение логического типа, которое может принимать одно из двух значений: true (истина — условие выполняется) или false (ложь — условие не выполняется);
- при помощи логических операций аnd (логическое "И") и or (логическое "Или") из простых условий можно строить сложные.
- текст программы должен содержать отступы в строках кода, отражающие структуру программы или ветви ее исполнения.
Использование средств отладки
Средства отладки, предоставляемые системой, используются для поиска логических ошибок (программа запускается, но выдает неверные результаты на тестовых примерах) в программе и контроля за ходом ее выполнения. Работу с ними рассмотрим на примере следующей программы.
program Primer;
var a, b:real;
i, j :integer;
begin
a:=6.2;
b:=4.5;
if a>b then
begin
i:=2;
j:=8
end
else
begin
i:=6;
j:=3
end;
writeln('i= ', i, ' j= ',j)
Readln;
Readln;
end.