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

Предоплата всего

Подписываем
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Предоплата всего
Подписываем
Приобретение навыков по работе с системой Turbo Pascal. Приобретение навыков определения типов переменных в зависимости от характеристик данных и разработки линейной программы на языке Pascal с вводом и выводом данных.
1. Освоить функции интегрированной среды Turbo Pascal для подготовки текста программы, компиляции и запуска на выполнение (п. 1.5.1 - 1.5.2).
2. Составить программу по заданному варианту.
Программа должна выводить:
сообщения о разработчике программы;
сообщения-подсказки перед вводом данных;
сообщение о выводе результатов;
результаты должны выводиться в следующем виде: <Имя_переменной> = <Значение_переменной>, значение переменной должно быть в отформатированном виде.
1. Получить вариант задания (п. 1.9).
2. Изучить функции системы Turbo Pascal для подготовки текста программы, компиляции и запуска на выполнение. Освоить функции редактора для подготовки текста программы (п. 1.5.1 - 1.5.2).
3. Изучить структуру Pascal-программы, операторы определения переменных стандартных типов и операторы ввода-вывода значений переменных указанных типов (п. 1.6 - 1.7).
4. Подготовить файл с исходным текстом программы и отладить программу с использованием среды Turbo Pascal (п. 1.5, 1.8).
5. Устно ответить на контрольные вопросы (п. 1.11).
6. Оформить отчет (п. 1.10).
При выполнении лабораторных работ используется интегрированная система (среда) «Turbo Pascal», которая позволяет выполнять все функции, необходимые для создания программы:
подготовку текста программы;
компиляцию (перевод исходного текста программы в машинный код);
отладку;
выполнение;
формирование исполняемого (загрузочного) модуля.
Далее даны справочные сведения о том, как выполнять указанные действия.
Переход в каталог, содержащий файл turbo.exe и его запуск: найти на диске файл turbo.exe (см. организацию каталогов) и запустить его нажатием клавиши ввод или просто набрать на клавиатуре TURBO и нажать клавишу ENTER.
При входе в интегрированную среду Turbo Pascal на экране появляется окно, в верхней части которого находится главное меню функций (рисунок 1.1), в нижней строка подсказок (помощи).
File Edit Search Run Compile Debug Tools Options Window Help |
Рисунок 1.1 Главное меню
Назначение функций:
File выполнение операций с файлами в целом (открыть, сохранить
и др.);
Edit команды редактирования текста (копировать блок или фрагмент текста, переместить блок текста и др.);
Search поиск;
Run выполнение программы;
Compile компиляция программы;
Debug отладка программы;
Tools использование инструментальных программных средств (Turbo Debugger, TurboAssembler и др.);
Options "опции" или возможности для различных режимов (компиляции, отладки, использования каталогов, установка цветов и др.);
Window команды управления окнами;
Help использование помощи программисту.
Для выполнения требуемой функции можно:
нажать клавишу F10, затем, перемещая клавишами <--, --> курсор меню (выделенный прямоугольник), выбрать нужный пункт и нажать клавишу Enter,
одновременно нажать клавишу Alt и клавишу с выделенной буквой в нужном пункте меню; например, для выполнения функции File следует нажать Alt +F.
В последующем тексте нажимаемых клавиш и выбираемых пунктов меню перечисляются последовательно через запятую или через знак "/".
После выбора пункта главного меню на экран выводится подчиненное вертикальное меню, позволяющее выбрать нужную операцию; выбор производится перемещением курсора меню вверх или вниз клавишами со стрелками и последующим нажатием клавиши Enter.
Подготовка нового текста программы: F10, File, New; откроется новое окно, которое можно использовать для набора текста программы.
Набор или редактирование исходного текста программ происходит в окне редактирования. При этом используются приемы, принятые во многих других редакторах (Works, Lexicon, Word и др.). Интегрированная среда поддерживает функции работы с блоками, строками, со словами и с отдельными символами. Подробнее об этом можно узнать в разделе помощи. Для этого нажмите F1 и в появившемся окне помощи выберите пункт Using the editor. Далее выберите из списка нужную группу команд. Примеры использования клавиш редактирования текста:
Ins включение/выключение режима вставки/замены символа в позиции курсора;
клавиши со стрелками сдвиг курсора в соответствующем направлении;
End перемещение курсора в конец строки;
Home перемещение курсора в начало строки;
PgUp сдвиг текста программы на страницу назад;
PgDn сдвиг текста программы на страницу вперед;
Ctrl+W сдвиг строк текста программы вниз;
Ctrl+Z сдвиг строк текста программы вверх;
Ctrl+стрелка вправо перемещение курсора на слово вправо;
Ctrl+стрелка влево перемещение курсора на слово влево;
(BackSpace) удаление символа слева от курсора;
Del удаление символа над курсором;
Ctrl+Y удаление строки;
Ctrl+Q,Y удалить символы от курсора до конца строки;
Ctrl+N вставка строки.
Имеются и другие возможности для редактирования текста (см. Help).
После подготовки текста или перед окончанием работы следует текст программы сохранить:
F10\File\Save, ввести имя файла в поле Save file as (по умолчанию Turbo Pascal устанавливает имя NONAMExx.PAS (предпочтительно использование оригинальных имен, задаваемых пограммистом),
F2 (текст будет сохранен с именем по умолчанию или с заданным именем).
Загрузка текста программы с диска:
F10\ File\ Open; откроется окно с приглашением ввода имени программы (это окно можно вызвать также и путем нажатия клавиши F4); нажмите Tab для перехода в режим выбора каталогов и файлов. Выберите нужный вам каталог и файл и нажмите ввод. Откроется новое окно, содержащее текст выбранного файла.
Компиляция программы в исполняемый модуль (создание исполняемого модуля):
F9, появится окно, информирующие о ходе компиляции. В строке Destination указывается место размещения исполняемого модуля. При значении Destination: "Memory" исполняемый модуль размещается в оперативной памяти и в дальнейшем будет потерян. Для сохранения исполняемого модуля на диске в главном меню в пункте Compile выберите пункт Destination и нажмите ввод.
Повторите компиляцию. После успешной компиляции на диске в установленном программистом каталоге (F10\Options\Directories) появляется новый файл xxxххх.exe, где xxxххх это имя файла с исходным текстом, расширение исполняемого модуля. При наличии синтаксических ошибок выводится сообщение об ошибке, и курсор указывает место, куда нужно внести изменения (см. п. 1.8).
Выполнение программы:
находясь в окне с исходным текстом программы, нажмите одновременно Ctrl и F9. Появится окно компиляции. После прохождения процесса компиляции программа будет выполнена.
Выход из среды Turbo Pascal выполняется с помощью одновременного нажатия клавиш Alt и X или выбора пункта меню F10\File\Quit. Если программа не была ранее сохранена, то появится окно, аналогичное окну загрузки, с приглашением ввести имя программы. После ввода имени нажмите ввод. Программа сохранится в файле с заданным именем.
Для помощи программисту в интегрированной среде Turbo Pascal предусмотрена обширная система помощи (пункт Help главного меню) Меню Help (справочной информации) дает доступ к встроенной справочной информации в специальном окне. Справочная информация имеется по всем аспектам интегрированной среды Turbo Pascal. Кроме того, в нижней строке экрана (строке статуса или состояния) выводятся подсказки для меню в одну строку и диалоговых окон.
Для открытия окна Help можно:
нажать F1 в любой момент времени (находясь в любом диалоговом окне или при выборе любой команды меню),
когда окно редактора активно, а курсор стоит под словом, нажмите Ctrl-F1 для получения справочной информации по языку и по текущему выбранному элементу, если слово не найдено, выполняется поиск вперед по оглавлению и показывается ближайший соответствующий текст.
Для закрытия окна Help нажмите Esс.
Экраны Help часто содержат ключевые слова (выделенный текст), которые можно выбрать для получения более подробной информации. Нажмите Tab для перехода к ключевому слову, затем - Enter для получения более подробной справочной информации. (Альтернативным способом является подведение курсора к высвеченному ключевому слову и нажатие Enter).
Previous Topic (предыдущий раздел) или Alt-F1: Help/Previous Topic команда открывает окно Help и вновь показывает текст, который вы просматривали последний раз. Turbo Pascal позволяет просмотреть 20 предыдущих экранов подсказки. Можно также отметить строку статуса для просмотра последнего экрана справочной информации.
При выполнении данной работы рекомендуется использовать программу со следующей структурой:
Program <имя_программы>;
{----------------раздел определения переменных--------------------}
var
< имя _переменной, имя_переменной, ... > : <тип _переменных>
< имя _переменной, имя_переменной, ... > : <тип переменных>
..............................................
{-------------------------- блок операторов-----------------------}
Begin
Writeln('Сообщение о начале работы программы') ;
{---ввод данных---}
Writeln ('Введите ... ');
Readln (<список_переменных> ;
{---операторы вычисления значений---}
.............................
{---вывод_результатов---}
Writeln('Сообщение о выводе результатов');
Writeln(<список_переменных>);
Writeln(<список_переменных>);
........................................................
End.
Разновидности данных целого типа даны в таблице 1.1.
Таблица 1.1
Целый тип |
Диапазон значений |
Размер памяти |
Shortint |
-128 … 127 |
1 байт |
Integer |
-32768 ... 32767 |
2 байта |
Longint |
-2147483648 ...2147483647 |
4 байта |
Byte |
0 ... 255 |
1 байт |
Word |
0 ... 65535 |
2 байта |
Для вывода поясняющего текста (подсказок оператору ЭВМ) можно использовать операторы типа:
Write('Сообщение о вводе данных');
Writeln('Сообщение о выводе результатов');
Для ввода данных можно использовать операторы типа:
Read(A,B,C);
Readln(S1);
При вводе числа разделяются пробелом, символы вводятся без разделителя.
Для вывода результатов можно использовать операторы типа:
Write(Result:7:2);
где «7» общее количество разрядов результата (включая знак числа, целую часть, десятичную точку и дробную часть), «2» количество разрядов после десятичной точки.
Writeln(Result:7:2);
Арифметические выражения на языке Turbo Pascal:
A + B сложение вещественных или целых чисел,
A - B вычитание вещественных или целых чисел,
A * B умножение вещественных или целых чисел,
A / B деление вещественных чисел,
A div B деление целых чисел (целая часть частного).
Порядок выполнения действий определяется рангом (старшинством) операций или скобками по правилам алгебры.
Оператор присваивания выполняется следующим образом:
а) вычисляется значение выражения, записанного в правой части оператора;
б) полученное значение присваивается переменной, имя которой записано в левой части оператора;
<переменная> : = <арифметическое_выражение> или <константа>;
например, Result : = (A + B) / X;
B1 : = true;
После загрузки среды Turbo Pascal нажмите F10 и выберите File\ New для создания нового окна. После этого можно приступить к набору текста программы, нажимая Enter в конце каждой строки. Например:
{Программа вычисления суммы двух чисел}
program First_Program;
uses crt; {USES-раздел объявления внешних модулей}
{СRT-модуль работы с экраном}
var
A,B : Real; {вводимые данные}
S: Real; {сумма чисел }
begin
clrscr; {вызов процедуры очистки экрана}
Writeln (' Программа вычисления суммы двух чисел ');
Writeln ('---------------------------------');
Write ('Введите два любых числа : ');
Readln (A,B);
S:=a+b;
Writeln(S=,S:8:2);
Writeln(Нажмите ENTER для продолжения работы);
Readln {ожидание нажатия клавиши Enter}
end.
Для сохранения программы выберите команду Save из меню File (или F2).
Для компиляции программы нажать F9.
Turbo Pascal компилирует программу, переводя ее с языка Pascal (который можно читать) на машинный код для микропроцессора (который может выполнить ваш компьютер).
При наличии ошибки см. п. 1.8.
Для выполнения программы следует выбрать Run/Run в главном меню (или нажать Ctrl-F9).
Пример работы описанной выше программы
1. На экран выводятся сообщения, которые заданы в операторах Writeln вашей программы:
«Программа вычисления суммы двух чисел»
«Введите два любых числа:»
2. Ввод двух любых чисел с пробелом между ними.
3. На экран выводится следующее сообщение:
S= ,
а за ним вычисленная сумма двух введенных чисел.
4. В следующей строке выводится сообщение "Нажмите Enter для продолжения работы". Программа будет ждать нажатия клавиши Enter.
Чтобы посмотреть результаты работы программы, выберите Window/User Screen (или нажмите Alt+F5). Если во время выполнения программы произошла ошибка, то на экране появится сообщение, которое выглядит следующим образом:
Run-time error <errnum> at <segment>:<offset> ,
где <errnum> это соответствующий код ошибки,
<segment>:<offset> это адрес в памяти, где произошла ошибка. Вы окажетесь в точке расположения ошибки в своей программе с описательным сообщением об ошибке. Пока сообщение находится в строке статуса редактора, можно нажать F1 для получения справочной информации по конкретной ошибке. Нажатие любой другой клавиши приводит к исчезновению сообщения об ошибке.
Какие ошибки компиляции вероятнее всего вы получите? Наиболее возможными ошибками для начинающего программиста на языке Паскаль будут:
Error 2: Identifier expected {Ожидается идентификатор}
Error 3: Unknown identifier {Неизвестный идентификатор}
Error 4: Duplicate identifier {Копия идентификатора}
Error 12: Type identifier expected {Ожидается тип
идентификатора}
Error 26: Type mismatch {Несоответствие типов}
Error 36: BEGIN expected {Ожидается BEGIN}
Error 37: END expected {Ожидается END }
Error 62: Division by zero {Деление на 0}
Error 85: ";" expected {Ожидается ";"}
Error 86: ":" expected {Ожидается ":"}
Error 87: "," expected {Ожидается ","}
Error 88: "(" expected {Ожидается "("}
Error 89: ")" expected {Ожидается ")"}
Error 90: "=" expected {Ожидается "="}
Error 91: ":=" expected {Ожидается ":="}
Error 92: "[" or "(." expected {Ожидается "[" или "(."}
Error 93: "]" or ".)" expected {Ожидается "]" или ".)"}
Error 94: "." expected {Ожидается "."}
Error 113: Error in statement {Ошибка в операторе}
Turbo Pascal требует, чтобы вы объявили все переменные, типы данных, константы и подпрограммы (все идентификаторы) перед их использованием. Если вы обратитесь к необъявленному идентификатору или пропустите его, то при компиляции будет обнаружена ошибка. Другой частой ошибкой является несоответствие пар begin..end; использование несовместимых типов в операторе присваивания (например, присваивание действительного числа переменной целого типа); несоответствие количества и типа параметров в вызовах процедур и функций и в их объявлении т.д.
Когда вы начинаете компиляцию, в центре экрана появляется окно, содержащее информацию о данной компиляции. Если во время компиляции не выявлено никаких ошибок, то в этом окне появится сообщение "Compilation successful: press any key" (компиляция успешна: нажмите любую клавишу). Окно остается на экране до тех пор, пока вы не нажмете любую клавишу.
Если во время компиляции обнаружена ошибка, Turbo Pascal останавливается, устанавливает курсор на ошибку в редакторе и показывает сообщение об ошибке вверху редактора. (Первое нажатие клавиши очистит это сообщение, а при нажатии Ctrl+Q W будет показывать его снова до тех пор, пока вы не измените файл или не перекомпилируете его). Сделайте исправления, сохраните обновленный файл и компилируйте снова.
1. Вычислить площадь треугольника.
2. Вычислить площадь круга.
3. Вычислить площадь трапеции.
4. Вычислить площадь квадрата.
5. Вычислить объем куба.
6. Вычислить среднее арифметическое трех чисел.
7. Вычислить квадрат числа.
8. Вычислить периметр треугольника.
9. Вычислить периметр прямоугольника.
10. Вычислить квадрат разности двух чисел.
11. Вычислить квадрат суммы двух чисел.
12. Вычислить объем шара.
13. Вычислить длину средней линии трапеции.
14. Вычислить процент от заданного числа.
15. Вычислить куб разности двух чисел.
16. Вычислить объем цилиндра.
17. Вычислить объем конуса.
18. Вычислить объем треугольной пирамиды.
19. Вычислить разность квадратов двух чисел.
20. Вычислить длину радиуса окружности заданной площади.
Примечание: исходные данные вводятся в диалоговом режиме.
1. Каков порядок создания программы в интегрированной среде Turbo Pascal?
2. Какие основные функции выполняет система Turbo Pascal (по главному меню)?
3. Какие операции позволяет выполнять текстовый редактор Turbo Pascal при подготовке программы? Примеры операций редактирования?
4. Как выполнить компиляцию программы с сохранением исполняемого модуля?
5. Как сохранить программу под другим именем?
6. Как открыть окно?
7. Какими способами можно выйти из среды?
8. Как создать исполняемый модуль?
9. Как вызвать контекстную помощь?
10. Какова структура Pascal-программы?
11. Какие операторы используются для ввода (вывода) значений переменных?
Приобретение навыков в составлении и отладке программ на языке Turbo Pascal с использованием операторов: условного перехода if, разветвления case, безусловного перехода goto.
1. Освоить функции системы Turbo Pascal по отладке программы (п. 2.5).
2. Составить программу, работающую в диалоговом режиме (диалог организовать с помощью оператора Case).
Программа должна выполнять следующие действия:
вывод меню;
вывод сообщения о назначении программы;
ввод данных;
вычисления и вывод результатов.
Результаты работы выводятся в отформатированном виде.
1. Получить вариант задания (п. 2.8).
2. Изучить функции Turbo Pascal по отладке программы (п. 2.5).
3. Подготовить текст программы и отладить её с использованием интегрированной среды программирования Turbo Pascal (п. 2.5, 2.6, 2.7).
4. Во время отладки использовать не менее двух контрольных точек останова (п. 2.5). Проверить работу программы при различных значениях исходных данных, требующих использования разветвленного алгоритма.
5. Устно ответить на контрольные вопросы (п. 2.10).
6. Оформить отчёт (см. п. 1.10)
При выполнении лабораторной работы описание этапов подготовки текста программы, компиляции и запуска на выполнение смотрите в лабораторной работе №1 (п. 1.5, 1.7, 1.8).
Если программа успешно откомпилирована и выполнена, но результаты работы не будут правильными, это значит, что программа содержит одну или несколько логических ошибок, то есть полученные после выполнения программы результаты не совпали с ожидаемыми.
Возможно, неправильно обрабатывается ввод данных или допущена ошибка в вычислениях, или допущена ошибка при программировании вывода данных.
Отладка в интегрированной среде программирования заключается в просмотре промежуточных результатов и анализе их, просмотре промежуточных значений переменных во время останова программы.
С этой целью в Turbo Pascal обеспечивается возможность трассировки, то есть выполнение программы «по шагам».
Чтобы начать сеанс отладки, выберете команду Run/Trace Info или нажмите F7. Первое утверждение begin в теле исполняемой программы будет выделено на экране подсвеченной строкой зеленого цвета. С этого момента мы будем называть эту полосу полосой запуска. Первое нажатие F7 запускает сеанс отладки. Отладчик выполнит невидимый код запуска. Следующая выполняемая строка программы первый оператор из блока программы. Каждое нажатие F7 вызывает выполнение подсвеченного оператора.
Примечание. Для выполнения оператора Readln необходимо ввести запрашиваемые данные в соответствии с их объявлением.
Использование окна Watch (окна наблюдения). Чтобы посмотреть значение переменных, необходимо выполнить следующие действия:
нажать Ctrl-F7 или выбрать пункт меню Debug/Add watch;
ввести имя просматриваемой переменной.
В окне Watch заданная переменная появится со своим текущим значением.
Добавление других переменных или выражений выполняется аналогично.
Для выполнения следующего шага программы нажмите F7 или выберите Run/Trace Info.
Прервать пошаговое выполнение программы можно нажатием Ctrl-F2 или выбором команды Run/Program reset.
Контрольные точки останова. Для отладки больших программ, чтобы не просматривать весь текст в поиске нужного места, можно установить контрольную точку точку останова. Она похожа на сигнал «стоп» для программы. Для задания точки останова нужно выполнить следующие действия:
установить курсор в нужной строке,
нажать Ctrl-F8 или выбрать пункт меню Debug\Add breakpoint. После этого выбранная строка становится красной в ней устанавливается точка останова. Если там уже имеется точка останова, то она отменяется.
После того как вы установите все контрольные точки останова, запустите программу на выполнение. Программа будет выполняться до первой точки останова. После останова программы вы можете просмотреть текущие значения переменных и продолжить выполнение программы нажатием F7 или F8.
По окончании отладки необходимо удалить все точки останова. Для этого нужно выбрать Debug\Breakpoints. На экране будет выведено окно списка точек останова. Для удаления всех точек нужно выбрать Clear All.
Часто просмотр значений переменных в конкретном месте программы осуществляется следующим образом:
установить курсор в нужную строку,
нажать F4 или выбрать команду Run\Go to.
Произойдет запуск программы на выполнение с остановом в строке, на которой установлен курсор.
Чтобы закрыть окно просмотра, необходимо сделать его текущим (переход из одного окна в другое выполняется при помощи F6) и нажать Alt-F3.
Основным средством разработки разветвленных структур алгоритмов в Turbo Pascal являются условные операторы if и case. С их помощью можно влиять на последовательность выполнения операторов программы.
Оператор if предназначен для выполнения одного из двух возможных действий (операторов) в зависимости от некоторого условия (при этом одно из действий может быть пустым, то есть отсутствовать).
В качестве условия выбора должно быть логическое выражение; Например, A>B; (A+X)<>N; (A>B) and (B>C).
Оператор if может принимать одну из следующих форм:
1. if <условие> then <оператор 1> else <оператор 2>;
{если <условие> то <оператор 1> иначе <оператор 2>;}
2. if <условие> then <оператор 1>;
{если <условие> то <оператор 1>;}
Оператор if выполняется следующим образом. Сначала вычисляется выражение, записанное в условии. В результате его вычисления получается значение булевского типа. В первом случае, если значение есть true (истина), то выполняется <оператор 1>, указанный после ключевого слова then, иначе выполняется <оператор 2>, указанный после ключевого слова else. Во втором случае, если результат вычисления выражения есть false (ложь), то выполняется оператор, следующий за оператором if.
Например:
·····························
if x>y then max:=x else max:=y;
·····························
При x>y выполняется оператор max:=x, при xy выполняется оператор max:=y
Пример оператора if без else:
·····························
if x>y then writeln(x);
·····························
При x>y выполняется оператор writeln(x), иначе выполняется оператор, следующий за оператором if.
Часто возникает необходимость выполнять в одной из ветвей (или в обеих ветвях) условного оператора несколько команд. В этом случае используется составной оператор.
Составной оператор группа операторов, помещенных между ключевыми словами begin и end.
Например:
if x>y then
begin { начало составного оператора }
max:=x;
writeln(max=, max);
end { конец составного оператора }
else
x:=x+1;
В качестве оператора в одной ветви или в обеих ветвях могут быть использованы условные операторы. Такие операторы называются вложенными.
Например:
if x< -3 then y:=x+1 else
if x>3 then y:=x*x else y:=y*y;
Примечание. Служебное слово else всегда ассоциируется с ближайшим по тексту if.
Оператор case позволяет сделать выбор из произвольного числа имеющихся вариантов. С его помощью можно сопоставить различным значениям некоторого выражения, называемого селектором (от selection выбор), соответствующие им операторы.
Оператор case имеет следующий формат:
case <выражение-селектор> of
константа или список констант №1 : <оператор 1>;
константа или список констант №2 : <оператор 2>;
·····························
константа №N : <оператор N>
else <альтернативный оператор>
end;
Оператор case работает следующим образом. Сначала вычисляется значение выражения селектора, затем выполняется тот оператор, константа выбора которого равна текущему значению селектора. Если ни одна константа не равна значению селектора, то выполняется альтернативный оператор, стоящий за словом else. Альтернативный оператор можно не писать.
Например:
write(Введите значение n =);
readln(n);
case n of
1 : y:=x;
2 : y:=x*x;
3 : y:=x*x*x
else y:=0
end;
writeln(y=, y);
При n=1 выполняется оператор y:=x.
При n=2 выполняется оператор y:=x*x.
При n=3 выполняется оператор y:=x*x*x.
При любых других значениях n выполняется оператор y:=0.
После завершения оператора case выполняется оператор writeln(y=, y). Кроме одиночных констант могут быть заданы списки и/или диапазоны значений.
Например:
case n of
0,1..4 : y:=x;
2,5 : y:=x*x;
3 : y:=x*x*x
end;
При использовании оператора case должны выполняться следующие правила:
значение селектора должно принадлежать дискретному типу; для целого типа integer оно должно лежать в диапазоне -32768..32767;
все константы, предшествующие операторам альтернатив, должны иметь тип, совместимый с типом селектора;
все константы в альтернативах должны быть уникальны в пределах оператора case;
диапазоны не должны пересекаться и не должны содержать констант, указанных в данной альтернативе или в других альтернативах.
Оператор безусловного перехода goto означает «перейти к» и применяется в случаях, когда после выполнения некоторого оператора надо выполнить не следующий оператор, а какой-нибудь другой. Метка объявляется в разделе описания меток и может содержать как цифровые, так и буквенные символы. Метка отделяется от помеченного оператора двоеточием.
Например:
·····························
label M1;
var
n : integer;
x,y : real;
begin
readln(n,x);
·····························
goto M1;
·····························
M1:
y:=x*2-3/x;
writeln(y=, y);.
Составить программу вычисления функции
Program Lab1;
Uses CRT; { Раздел объявления внешних модулей }
Label M1,M2;
var
n : integer;
x,y : real;
p: byte; {Признак выполнения пунктаN1}
begin
clrscr; { Очистка экрана }
writeln(Программа вычисления функции...);
{ Вывод на экран меню }
writeln(+--------------------------------------------+);
writeln(| 1. Ввод данных |);
writeln(| 2. Вычисление функции и вывод результатов |);
writeln(| 3. Завершение работы программы |);
writeln(+--------------------------------------------+);
p:=0;
M1: writeln(введите пункт меню);
readln(n); { Ввод номера пункта меню}
case n of
1: begin { Ввод данных }
M2: write(Введите значение аргумента x=);
readln(x)
{ Проверка допустимого значения аргумента }
if x=0 then
begin
writeln(x не может быть равным 0 по условию) ;
goto m2;
p:=1; {Пункт N1 выполнен}
end; end;
2: { Вычисление значения функции }
begin
If p<>0 then
Writeln (Данные не введены, выполните пункт N1);
else
begin
{ Операторы вычисления и вывода значения функции }
if x>0 then y:=1/x else y:=x*x;
writeln(при х=, x:7:2, y=, y:7:2)
end
end;
3: Exit { Выход из программы }
end; { end case }
goto M1;
end. { Конец программы}
1. Вычислить объем тела со сторонами A, B, C и определить, является ли данное геометрическое тело кубом.
2. Вычислить площадь треугольника со сторонами А, В, С. Перед вычислением площади проверить условие существования треугольника с заданными сторонами.
3. Вычислить площадь треугольника со сторонами A, B, C. Определить, является ли треугольник равнобедренным.
4. Вычислить площадь прямоугольника со сторонами A и B и определить, является ли данная фигура квадратом.
5. Составить программу нахождения корней квадратного уравнения у=ах2+bх+с.
6. Определить, можно ли сделать круглую заготовку с заданным радиусом R из квадратного листа фанеры с заданной стороной A.
7. Определить, хватит ли имеющейся суммы S на покупку N-го количества товара (при известной цене товара).
8. Определить, можно ли сделать две квадратных заготовки со стороной А из листа железа прямоугольной формы со сторонами В и С.
9. Определить, достаточно ли имеющейся ткани для изготовления изделий двух видов, если известны: расход ткани на каждое изделие, количество изделий каждого вида, количество имеющейся ткани.
10. Рассчитать сумму оплаты за потребленную энергию, если известны: стоимость 1 квт\час, расход энергии, коэффициент льгот (льготы могут отсутствовать).
11. Определить, достаточно ли бензина для поездки, если известны: длина пути, количество бензина в баке и расход бензина на 1 км.
12. Определить, будет ли начислена студенту стипендия по результатам экзаменов (стипендия начисляется, если все экзамены сданы на «хорошо» и «отлично»).
13. Определить, будет ли зачислен абитуриент в студенты по результатам вступительных экзаменов, если известны: проходной балл; количество баллов, набранных абитуриентом по каждому экзамену.
14. Определить, изделия какой из двух групп товаров выгоднее сшить из одного рулона ткани, если известны: расход ткани на каждое изделие и цена готового изделия, количество метров в рулоне.
15. Определить выполнен ли план по продаже товара за день, если известны: план продажи (в рублях), количество проданного товара и цена товара.
16. Определить, продажа какой из двух валют составила большую прибыль, если известны: курс покупки, курс продажи, количество продаж по каждой валюте.
17. Определить наибольшую выручку от продажи трех видов товаров, если известны: цена товара; количество проданных товаров каждого вида.
18. Определить сколько корней имеет уравнение y=ах2+вх+с.
19. Определить, является ли число А четным или нечетным.
20. Вычислить площадь треугольника со сторонами A, B, C и определить, является ли данный треугольник равносторонним.
1. Назначение, формы записи и порядок выполнения оператора условия if.
2. Особенности использования вложенных условных операторов.
3. Каковы отличия оператора выбора case от оператора условия if?
4. Какие правила должны выполняться при использовании оператора выбора case?
5. Назначение и особенности оператора безусловного перехода.
6. Для чего нужна отладка программы?
7. Как выполнять программу в пошаговом режиме?
8. Как поставить точку останова?
9. Как отменить точки останова?
10. Как открыть окно Watch?
11. Как внести переменную в окно Watch?
Целью работы является освоение процесса разработки циклических программ с заданным (известным) числом повторений на языке Turbo Pascal.
Разработать две программы с использованием оператора повтора (цикла) FOR:
Вычисление заданной величины (суммы N слагаемых, произведения N сомножителей и т.п.);
Обработка данных с использованием двумерных массивов.
См. пункт 1.3.
1. Получить вариант задания (п. 3.7).
2. Изучить правила использования оператора FOR для разработки циклических программ (п. 3.5).
3. Составить и отладить программу вычисления заданной величины (суммы N слагаемых, произведения N сомножителей и т.п.) в соответствии с подпунктом "а" варианта задания.
4. Изучить правила определения и использования данных типа "массив" (ARRAY), (п. 3.6) и рекомендации по обработке массивов данных.
5. Разработать и отладить программы обработки данных с использованием двумерных массивов в соответствии с подпунктом "б" варианта задания.
6. Устно ответить на контрольные вопросы (п. 3.9).
7. Оформить отчет (см. п. 1.10)
Для программирования циклических вычислительных процессов с известным числом повторений в языке Turbo Pascal предназначен оператор FOR, который может использоваться в форме
For i:=N1 to N2 do S1; ...
или в форме
For i:=N1 downto N2 do <оператор>;...,
где i управляющая переменная дискретного типа (Integer, Char, Boolean и др.); имя переменной может быть любым допустимым идентификатором, N1, N2 выражения, определяющие начальное и конечное значения управляющей переменной, S1 простой или составной оператор (тело цикла).
При использовании первой формы оператора FOR алгоритм работы следующий:
1) значению управляющей переменной присваивается начальное значение (i:=N1);
2) значение i сравнивается с конечным значением N2; если i <= N2, то выполняется оператор S1, затем переменная i принимает следующее значение из упорядоченной последовательности и п. 2 повторяется, в противном случае (т.е. если i > N2) передается управление оператору, следующему за оператором S1.
При использовании второй формы оператора FOR:
1) значению управляющей переменной присваивается начальное значение (i:=N1);
2) значение i сравнивается с конечным значением N2; если i >= N2, то выполняется оператор S1, затем переменная i принимает следующее значение из упорядоченной последовательности и п. 2 повторяется, в противном случае (т.е. если i < N2) передается управление оператору, следующему за оператором S1.
Ограничения оператора FOR:
выражения N1 и N2 должны иметь тип, совместимый с типом управляющей переменной;
в теле цикла запрещается изменять значение управляющей переменной;
после окончания работы оператора FOR значение управляющей переменной становится неопределенным, если только выполнение оператора FOR не было прервано оператором условного или безусловного перехода.
Пример программы вычисления температуры по Фаренгейту в зависимости от заданной температуры по Цельсию от 15 до 30 градусов. Перевод температуры выполняется по формуле F=C*1.8+32;
Program demoFor;
var
i : integer;
F : real;
begin
writeln(Температура по Цельсию и по Фаренгейту)
for i:= 15 to 30 do {Заголовок цикла}
begin {Начало тела цикла}
F:=i*1.8+32;
writeln(i:2, F,6:2)
end {Конец тела цикла}
end.
Данные типа массив в языке Turbo Pascal определяются следующими правилами:
а) type
<имя типа данных> = Array [<список типов индексов>] of <тип данных, которые должны содержаться в массиве>;
var <список переменных> : <имя типа данных>;
б) var
<список переменных> : Array [<список типов индексов>] of <тип данных, которые должны содержаться в массиве>;.
Массивы могут иметь вид списка (одномерный массив), матрицы (двумерный массив) и т.д. (трех-, четырех-, n-мерный); при этом должны использоваться 1, 2 и т.д. индексов.
Например:
...
type
digit = array [0..9] of char;
{digit новый тип данных "одномерный массив"; 0..9 тип индекса (диапазонный или ограниченный тип); char тип данных, которые должны содержаться в массиве}
matrix = array [byte, byte] of real;
{ matrix - новый тип данных - "двумерный массив"; byte - тип индексов }
var
A, B : digit; {A,B - переменные типа digit}
M1, M2 : matrix; {M1,M2 - переменные типа matrix}
Cube : array[1..5, 'A'..'H', boolean] of char;
{ Cube - переменная типа "трехмерный массив" }
...
Доступ к элементам массива для присвоения значений (записи), использования в выражениях и других действиях выполняется с помощью указания индексов элементов; например:
readln(A[1]); {ввод с клавиатуры значения элемента 1 массива A}
A[3]:='F'; {присвоение элементу 3 массива A значения 'F'}
M1[i,j]:=M2[j,i]-5.55;{вычисление значения элемента с индексами i,j массива M1}
writeln(M1[k, n]); {вывод на экран значения элемента массива M1}
Ввод и вывод значений элементов массивов может выполняться с использованием оператора FOR; например:
writeln('Введите количество элементов массива (не более 10)');
readln(N);
for i:=1 to N do
begin
write(i,'-й элемент : ');
readln(B[i])
end;
...
writeln('Введите количество элементов матрицы ');
readln(k,n);
for i:=1 to k do
for j:=1 to n do
begin
write(i,' ',j,'-й элемент= : ');
readln(M1[i,j])
end;
...
writeln('Результат вывода значений матрицы');
for i:=1 to k do
begin
for j:=1 to n do write(M2[i,j],' '); {вывод i-й строки}
writeln {переход на новую строку}
end;
...
1.а) Вычислить n!
б) Подсчитать количество нулевые элементов кортежа
в) Определить количество элементов матрицы, значения которых не превышают заданное число.
2.а) Вычислить .
б) Подсчитать сумму нечетных элементов кортежа
в) Найти минимальный элемент матрицы nm.
3.а) Вычислить .
б) Заменить отрицательные элементы кортежа на 0.
в) Найти максимальный элемент матрицы.
4.а) Вычислить .
б) Найти сумму четных и нечетных по номеру элементов кортежа А(20)
в) Поменять местами минимальный и максимальный элемент матрицы.
5.а) Вычислить .
б) Вычислить разность элементов двух кортежей одинаковой размерности
в) Поменять местами два заданных элемента матрицы.
6.а) Вычислить .
б) Разделить четные по номеру элементы кортежа на 2 и умножить нечетные на 2.
в) Поменять местами две заданных строки матрицы.
7.а) Вычислить .
б) Вывести на печать номера элементов кортежа, значение которых равно
в) Транспонировать матрицу А (55)
8.а) Вычислить .
б) Подсчитать количество отрицательных и положительных элементов кортежа.
в) Сформировать массив В, содержащий сумму элементов каждого столбца матрицы А.
9.а) Вычислить .
б) Заменить все элементы кортежа, значение которых больше "-3" и меньше "+3", на 0.
в) Поменять местами два заданных столбца матрицы.
10.а) Вычислить .
б) Найти сумму отрицательных и количество положительных элементов кортежа В(25).
в) Определить количество отрицательных элементов матрицы.
11.а) Вычислить
б) Переписать элементы кортежа А(20) в кортеж В(20) в обратном порядке.
в) Определить количество положительных элементов матрицы.
12.а) Вычислить .
б) Заменить отрицательные элементы кортежа на их квадрат.
в) Вычислить среднее арифметическое элементов матрицы.
13.а) Вычислить .
б) Переставить элементы кортежа в обратном порядке.
в) Вычислить произведение отрицательных элементов матрицы.
14.а) Вычислить .
б) Заполнить кортеж А случайными числами от 0 до 15 с помощью функции Random и подсчитать количество элементов кортежа, значение которых больше 7.
в) Вычислить сумму положительных элементов матрицы.
15.а) Вычислить .
б) Найти произведение нечетных по номеру элементов кортежа А(10).
в) Все отрицательные элементы матрицы возвести в квадрат.
16.а) Вычислить
б) Определить номер и значение минимального элемента кортежа
в) Сформировать массив B, содержащий максимальные элементы строк матрицы A.
17.а) Вычислить .
б) Всем четным по номеру элементам кортежа присвоить значение 0, а нечетным 1.
в) Сформировать массив B, содержащий суммы элементов строк матрицы A.
18.а) Вычислить
б) Вычислить сумму n членов геометрической прогрессии.
в) Вычислить сумму всех отрицательных элементов матрицы.
19.а) Вычислить .
б) Заполнить кортеж А случайными числами от 0 до 10 с помощью функции Random и подсчитать среднее арифметическое элементов кортежа.
в) Вычислить сумму элементов вспомогательной диагонали матрицы М(55)
20.а) Вычислить .
б) Определить номер максимального элемента кортежа
в) Вычислить сумму элементов главной диагонали матрицы.
1. Каково назначение оператора цикла FOR?
2. Каковы правила записи оператора цикла FOR?
3. Каковы алгоритмы работы оператора цикла FOR?
4. Какие циклы называются вложенными?
5. Какие ограничения наложены на оператор FOR?
6. Как определяются данные типа "массив"? Запишите примеры определения данных типа массив с использованием разделов type и var (или только var).
7. Какие типы могут иметь индексы?
8. Как получить доступ к элементам одно-, дву-, n-мерного массива?
9. Как можно организовать ввод (вывод) элементов одно-, дву, n-мерного массива?
Освоение процесса разработки циклических программ с использованием условных циклов (с неизвестным числом повторений) на языке Turbo Pascal.
Требуется разработать две программы (или одну с двумя циклами) с использованием операторов повтора (циклических операторов) WHILE и REPEAT.
Программа должна выводить:
сообщения о назначении программы, разработчике и варианте задания;
- сообщения подсказки перед вводом данных;
- результаты вычислений каждого выполнения цикла.
Программа должна проверять допустимые значения аргумента при вычислениях, например, чтобы не было деления на ноль.
1. Получить вариант задания (п. 4.8).
2. Изучить правила использования операторов While и Repeat для разработки циклических программ (п. 4.6 и 4.7).
3. Определить область сходимости.
4. Составить и отладить программу вычисления суммы ряда с заданной точностью с использованием циклического оператора WHILE.
5. Составить и отладить программу вычисления суммы ряда с заданной точностью с использованием циклического оператора REPEAT.
6. Проследить с помощью средств отладки системы Turbo Pascal изменения значений переменных и результатов проверки условий продолжения (окончания) цикла.
7. Устно ответить на контрольные вопросы (п. 4.9).
8. Оформить отчет (см. п. 1.10).
Оператор цикла REPEAT организует выполнение цикла, состоящего из любого числа операторов, с неизвестным заранее числом повторений. Тело цикла выполняется хотя бы один раз. Выход из цикла осуществляется при истинности некоторого логического выражения S. Структура этого оператора:
repeat
Instruction1
Instruction2
...
InstructionN
until S,
В этой структуре:
Instructionl, Instructfon2, ..., InstructionN выполняемые операторы, составляющие тело цикла;
S логическое выражение, истинность которого проверяется в конце каждой итерации.
Так как слова repeat и until являются своеобразными операторными скобками, точку с запятой перед словом until ставить не обязательно.
Алгоритм работы оператора REPEAT:
1 выполняется тело цикла;
2 проверяется условие выхода из цикла: если результат булевского выражения равен False, то выполняется переход к пункту 1, если результат True, то происходит выход из цикла, т.е. переход на следующий оператор.
Рисунок 4.1- Схема работы цикла Repeat Until
Пример. Программа, вычисляющая сумму двух чисел:
program EXAMPLE6;
var
X, Y, Sum: Real;
Ch: Char;
begin
repeat {начало цикла}
Write('Введите числа X и Y ');
ReadLn(X, Y);
Sum : = X + Y;
Writen ('Сумма чисел X и Y равна ',Sum);
Write ('Завершить программу?Y/N (Д/Н) ');
ReadLn (Ch)
Until (Ch=y ) or (UpCase (Ch) = 'Y' ) or (Ch = 'д' ) or (Ch = 'Д' )
{ Upcase преобразование строчной буквы в заглавную }
end.
Оператор цикла WHILE организует выполнение одного оператора неизвестное заранее число раз, если истинно логическое выражение S. Выход из цикла осуществляется, если логическое выражение S окажется ложным. Так как истинность логического выражения проверяется в начале каждой итерации, тело цикла может не выполниться ни разу.
Структура оператора цикла WHILE имеет вид:
while s do Instruction;
В этой структуре:
S логическое выражение, истинность которого проверяется в начале каждой итерации;
Instruction выполняемый оператор цикла, который может быть составным.
Алгоритм работы оператора WHILE:
1 вычисляется значение условия S;
2 проверяется условие, если результат равен True, тело цикла выполняется и происходит переход к п. 1; если результат равен False, происходят выход из цикла и переход к первому после while оператору.
Рисунок 4.2 Схема работы цикла While do
Пример. Найти все делители целого положительного числа (кроме 1 и самого числа).
program EXAMPLE;
var
Х: Integer;
Half: Integer;
Divider: Integer;
i: Integer;
begin
repeat
Write('Введите число больше нуля: ');
ReadLn(X);
if X<=0 then
WriteLn( 'Неправильный ввод')
until X > 0;
Half := X div 2;
Divider := 2;
i : = 0;
While Divider <= Half do
begin
if X mod Divider = 0
then
begin
inc(i); {увеличение счетчика на единицу}
WriteLn(i, '-й делитель равен:' Divider)
end;
inc(Divider) {увеличение делителя на единицу}
end;
if i=0
then
WriteLn( 'Делителей нет');
WriteLn('Конец решения')
end .
Таблица 4.1
Номер |
Общий член ряда |
Точность |
1 |
=0,01 |
|
2 |
=0,001 |
|
3 |
=0,01 |
|
4 |
=0,1 |
|
5 |
=0,01 |
|
6 |
=0,001 |
|
7 |
=0,0001 |
|
8 |
=0,1 |
|
9 |
=0,01 |
|
10 |
=0,001 |
|
11 |
=0,01 |
|
12 |
=0,1 |
|
13 |
=0,0001 |
|
14 |
=0,001 |
|
15 |
=0,001 |
|
16 |
=0,001 |
|
17 |
=0,001 |
|
18 |
=0,001 |
|
19 |
=0,01 |
|
20 |
=0,01 |
1. Каково назначение условных операторов повтора (циклов)?
2. Какие требования предъявляются к выражениям, управляющим повторениями?
3. В чем отличия операторов повтора while и repeat?
4. В каких случаях предпочтительнее использовать для организации циклов оператор повтора for? Что записывается в заголовке этого оператора?
5. Какие правила пунктуации необходимо соблюдать при записи операторов?
6. Что такое вложенные циклы? Какие дополнительные условия необходимо соблюдать при организации вложенных циклов?