Практическая работа. Практическое занятие 16. Разработка и программная реализация алгоритмов решения типовых задач
Скачать 78.63 Kb.
|
Практическое занятие№16. Тема: Разработка и программная реализация алгоритмов решения типовых задач: нахождение наибольшего (или наименьшего) из двух, трех, четырех заданных чисел. Цель урока: повторить основные понятия, изучить среду программирования и структуру программы Turbo Pascal, научиться составлять несложные программы в этой среде программирования, производить тестирование программы. Планируемые результаты освоения: П3, П4, П9, П10, П11, ОК2, ОК4, ОК5, ОК9 Продолжительность занятия: 2 часа Краткие теоретические сведения Паскаль - язык профессионального программирования, который назван в честь французского математика и философа Блеза Паскаля (1623-1662) и разработан в 1968- 1971 гг. Никлаусом Виртом. Первоначально был разработан для обучения, но вскоре стал использоваться для разработки программных средств в профессиональном программировании. Паскаль популярен среди программистов по следующим причинам: Прост для обучения. Отражает фундаментальные идеи алгоритмов в легко воспринимаемой форме, что предоставляет программисту средства, помогающие проектировать программы. Позволяет четко реализовать идеи структурного программирования и структурной организации данных. Использование простых и гибких структур управления: ветвлений, циклов. Надежность разрабатываемых программ. Турбо Паскаль - это система программирования, созданная для повышения качества и скорости разработки программ (80-е гг.). Слово Турбо в названии системы программирования - это отражение торговой марки фирмы-разработчика Borland International (США). Систему программирования Турбо Паскаль называют интегрированной (integration - объединение отдельных элементов в единое целое) средой программирования, т.к. она включает в себя редактор, компилятор, отладчик, имеет сервисные возможности. Основные файлы Турбо Паскаля: Turbo.exe - исполняемый файл интегрированной среды программирования; urbo.hlp - файл, содержащий данные для помощи; Turbo.tp - файл конфигурации системы; Turbo.tpl – библиотека стандартных модулей, в которых содержатся встроенные процедуры и функции (SYSTEM, CRT, DOS, PRINTER, GRAPH, TURBO3,GRAPH3). Для запуска интегрированной среды программирования нужно установить текущим каталог с Турбо Паскалем (TP7\BIN) и ввести команду: turbo.exe. Окно программы содержит полосу меню, область окна и строку статуса. Для входа в меню можно воспользоваться одним из способ: с помощью"мышки"; с помощью клавишиF10; с помощью комбинации Alt+<выделенная буква>. О том, что мы в меню свидетельствует курсор - прямоугольник зеленого цвета. Интегрированная среда программирования Турбо Паскаль позволяет иметь любое количество открытых окон, но в любой момент времени активным может быть только одно. Активное окно - это окно с которым вы в настоящий момент работаете. Команды меню File: Open-F3 - открыть существующий файл (при активизации этой опции появляется окно со списком файлов, где можно выбрать необходимый); New - создать новый файл (очищает память редактора и переводит в режим создания нового файла, которому присваивается имя Noname.pas; имя можно изменить при записи файла на диск); Save-F2 - сохранить файл (переписывает файл из памяти редактора на диск), Save as - сохранить с новым именем; Save all - сохранить все в окнах (записывает содержимое всех окон редактора в соответствующие файлы); Change dir - смена каталога (позволяет изменить установленный по умолчанию диск или каталог); Print - печать файла; Get info - выдача информации о текущем состоянии программы и используемой памяти; DOS Shell - выход в DOS без выгрузки из памяти (для возврата ввести команду exit); Exit - выход и выгрузка из памяти. Программы на языке Паскаль имеют блочную структуру: Блок типа PROGRAM - имеет имя, состоящее только из латинских букв и цифр. Его присутствие не обязательно, но рекомендуется записывать для быстрого распознавания нужной программы среди других листингов. Программный блок, состоящий в общем случае из 7 разделов: раздел описания модулей (uses); раздел описания меток (label); раздел описания констант (const); раздел описания типов данных (type); раздел описания переменных (var); раздел описания процедур и функций; раздел описания операторов. Общая структура программы на языке Паскаль: Рrogram ИМЯ..; {заголовок программы} Uses ...; {раздел описания модулей} Var ..; {раздел объявления переменных} ... Begin {начало исполнительной части программы} ... {последовательность. операторов} End. {конец программы} Пример программы, которая осуществляет сложение двух чисел и выводит сумму на экран: Program Summa; Uses Crt;{Подключаем модуль Crt} Var number1, {переменная, в которой будет содержаться первое число} number2, {переменная, в которой будет содержаться второе число} rezult {переменная, в которой будет содержаться результат} :integer; {указывает тип целых чисел} Begin ClrScr;{Используем процедуру очистки экрана из модуля Crt} Write ('Введите первое число '); {Выводим на экран символы, записанные между апострофами} Readln (number1); {Введенное пользователем число считываем в переменную number1} Write ('Введите второе число '); {Выводим на экран символы, записанные между апострофами} Readln (number2); {Введенное пользователем число считываем в переменную number2} rezult := number1 + number2; {Находим сумму введенных чисел и присваиваем переменной rezult} Write ('Сумма чисел ', number1, ' и ', number2, ' равно ', rezult); {Выводим на экран строчку, содержащую ответ задачи} Readln;{Процедура задержки экрана} End. Пример программы, которая осуществляет нахождение наибольшего числа из двух чисел и выводит на экран: Задача: Найти наибольшее число из двух. Если числа равны, то вывести любое из них. Входные данные В единственной строке входного файла INPUT.TXT записано 2 числа через пробел. Оба числа целые, не меньше -10000 и не больше 10000. Выходные данные В файл OUTPUT.TXT выведите единственное число. Пример
Решение Задача максимально упрощена за счет того, что при равенстве чисел можно вывести любое из них. Надо заметить, что даже в самой простой задаче, подобной этой, можно получить правильный результат несколькими способами. Сейчас мы рассмотри два варианта решения. Вариант 1 Как видно из приведенной блок-схемы (см. рис), можно обойтись неполным ветвлением. Наибольшее значение можно получить в переменной "х", и затем вывести ее на экран или в файл. Текст программы на Паскале. var x,y:integer; begin read(x,y); if x < y then x:=y; write(x); end. Вариант 2 Работоспособен и алгоритм, блок-схему которого вы видите ниже. Обратите внимание, что согласно блок схемы, мы вроде никак явно не учитываем вариант равности чисел и просто выводим наибольшее из них. Тем не менее, алгоритм вполне рабочий, т.к. в том случае, когда условие x>y является ложным, истинным является либо то, что y>x или, чтоy=x, т.е. в любом случае, верный результат окажется в переменной y. Текст программы на Паскале. var x,y:integer; begin read(x,y); if x > y then write(x) else write(y); end. Пример программы, которая осуществляет нахождение наибольшего числа из трех чисел и выводит на экран: Задача: Найти наибольшее число из трех. Если числа равны, то вывести любое из них. Входные данные В единственной строке входного файла INPUT.TXT записано три числа через пробел. Все числа целые, не меньше -10000 и не больше 10000. Выходные данные В файл OUTPUT.TXT выведите единственное число. Пример
Решение В очередной раз упрощаем задачу за счет того, что при равенстве чисел можно вывести любое из них. Как и в предыдущей задаче возможно несколько вариантов решения. Вариант 1 Первый способ решения задачи основан на использовании дополнительной переменной. Т.е. кроме трех перемененных (например а, b, с) используются дополнительная переменная (например с именем «max») для хранения наибольшего значения. Это пример привожу лишь по той причине, что порой, он оказывается проще для понимания. Решение задачи на Паскале var a,b,c,max:integer; begin read(a,b,c); if a > b then max:=a else max:=b; if max > c then write(max) else write(c); end. Вариант 2 Как видно из блок-схемы приведенной ниже, использовать дополнительную переменную нет никакой нужды. Отказавшись от полного ветвления при проверке первого условия, удалось уменьшить и код программы. Обратите внимание, что для использования неполного ветвления надо проверять условие a<b, а не a>b. Решение на Паскале var a,b,c:integer; begin read(a,b,c); if a < b then a:=b; if a > c then write(a) else write(c); end. Содержание работы: ЗАДАНИЕ №1 Изучите внешний вид системы программирования Турбо Паскаль. ЗАДАНИЕ №2 Откройте файл, в который Вы запишите программу, выполняющую сложение двух чисел. Для этого нажмите клавишу F10, чтобы выйти в главное меню, затем клавишами перемещения курсора выберите опцию File, а в выпавшем меню команду New. Найдите в этой программе заголовок, раздел описания переменных, признак начала программы, признак конца программы, тело программы, комментарий. ЗАДАНИЕ №3 Измените программу, выполненную в задании 2 так, чтобы она находила произведение двух чисел. Сохраните текстом программы в файле Proizv.pas. Результат покажите преподавателю. ЗАДАНИЕ №4 Вычислите значение функции и постройте блок схему. Провести численные расчеты для a=1, b=2, c=3; a=-5, b=0, c=10.
ВОПРОСЫ ДЛЯ САМОКОНТРОЛЯ Что такое среда программирования? Опишите среду программирования Тurbo Pascal. Как сохранить текст программы в Тurbo Pascal? Какова структура программы на языке Pascal? Как осуществить запуск программы? Какой оператор позволяет выполнить одно из нескольких действий в зависимости от результата вычислений выражения? Как происходит работа условного оператора If? В каких двух формах может быть записан оператор If? Как записываются составные высказывания в условиях? Объясните полную конструкцию ветвления IF THEN ELSE (перевод). ДОМАШНЕЕ ЗАДАНИЕ Запишите в тетрадь тему и цель практического занятия, тезисно отобразите краткие сведения, запишите (кратко) ответы на вопросы. |