Файл: Могилев А.В. Информатика.pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 31.03.2021

Просмотров: 6808

Скачиваний: 51

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
background image

 

256 

тана интегрированная среда пользователя. В ней появилась возможность работать в многооконном 
режиме,  редактируя  несколько  файлов  одновременно.  Допускается  работа  с  «мышью».  Сущест-
венно улучшен сервис для работы с окнами и с системой помощи Help, которая контекстно вызы-
вается из любого окна, а в окне Help допустимы некоторые команды редактирования. Увеличился 
максимальный  размер  редактируемого  файла  и  имеется  возможность  менять  цветовую  палитру 
самой интегрированной среды. 

Еще  одна  возможность,  появившаяся  в  Турбо-Паскале  6.0  -  объектно-ориентированное 

проектирование программ. Подобная технология стала возможной благодаря новому типу данных 
«объект». Объект - это структура данных, содержащая поля данных (подобно записи) различных 
типов и заголовки методов. Метод - это процедура или функция, объявленные внутри объявления 
элемента  типа  «объект».  Большую  популярность  среди  программистов  приобрела  объектно-
ориентированная библиотека TurboVision, включающая объекты, управляющие 

• перекрывающими окнами с изменяемыми размерами; 
• выпадающими меню; 
• диалоговыми окнами; 
• работой мыши; 
• кнопками,полосами скроллинга. 
Следует  отметить,  что  сама  интегрированная  среда  Турбо-Паскаля  6.0  разработана  с  ис-

пользованием библиотеки TurboVision. 

Система  программирования  Турбо-Паскаль  7.0.

  Главное  меню  интегрированной  среды 

Турбо-Паскаль 7.0 в дополнение к меню Турбо-Паскаля 6.0 содержит 

 

Tools - инструментальные программные средства. 

 
По сравнению с предыдущей версией в интегрированной среде появилась возможность на-

стройки  компилятора  на  работу  в  трех  режимах:  обычном  режиме  MS  DOS  (Real),  защищенном 
режиме (Protected) и в режиме операционной среды  Windows (Windows). Введена новая команда 
Object  Browser  -  просмотр  модулей,  объектов  и  символов  при  редактировании  исходного  текста. 
Появилось  удобное  средство  -  синтаксическая  подсветка,  которая  обеспечивает  подсвечивание 
управляющих структур, зарезервированных слов, идентификаторов, строк и т.п. Новая секция ме-
ню Tools предназначена для передачи управления внешним программам и создания собственных 
инструментальных программных средств. Нажатие клавиш Alt+Fl (или правый щелчок мыши) ак-
тивизирует локальные меню, чувствительные к контексту (Browse, Edit, Help, Message, Watch). 

В версии 7.0 расширена библиотека стандартных модулей. Помимо известных в версии 6.0 

модулей  Crt,  Graph,  Graph3,  Overlay,  String,  System,  Turbo3  появились  WinAPI,  WinCrt,  WinDos, 
WinPrn, WinTypes, WinProcs. 

 

Контрольные вопросы 

1. В чем состоят основные различия версий Турбо-Паскаля? 
2. Какие возможности версии Турбо-7.0 отсутствуют в предыдущих версиях? 

 

3.9. РУКОВОДСТВО ПОЛЬЗОВАТЕЛЮ ТУРБО-ПАСКАЛЯ 

 

СТАНДАРТНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ 

Принятые обозначения: 
type -любой тип; 
string - любой строковый тип; 
file -любой файловый тип; 
scalar - любой простой тип; 
pointer -любой ссылочный тип. 

Замечание:

 если в  списке параметров  не  указан спецификатор  типа, то в качестве данного 

параметра процедура допускает параметр любого типа; в некоторых процедурах допускаются не-
сколько вариантов заголовков процедур. 

 

ПРОЦЕДУРЫ ВВОДА-ВЫВОДА  


background image

 

257 

Процедура

 Read

 

 

Read(var F:file of type; var v:type); 
Read(var F:text; var I':intnger); 
Read(var F:text; var R:real); 
Read(var F:text; var C:char); 
Read(var F:text; var S:string); 
где  F  -  имя  переменной  файлового  типа,  a  var  I,R,C,S  -  одна  или  несколько  переменных, 

совпадающих по типу с типом элементов файла. 
 
Процедура 

Readln

 

Readln(var F:text; var varl,var2,...varN); 
Readln(var varl ,var2,...varN); 
Readln(var F:text); 
Readln; 
где F - имя переменной типа text, a varl...varN - переменные типа Char. Если опущено имя 

файла, то по умолчанию принимается

 

имя типа INPUT. Если опущея список переменных, то про-

исходит переход на другую строку. 
 
Процедура 

Write

 

Write(var F:file of type; var v:type); 
Write(var F:text; var I:integer); 
Write(var F:text; var B:boolean); 
Write(var F:text; var C:char); 
Write(var F:text; var S:string). 

 
Процедура

 Writeln

 

Writeln(var F:text; var varl ,var2,... varN); 
Writeln(var var varl ,var2,... varN); 
Writeln(var F:text); 
Writeln. 

 

СТАНДАРТНЫЕ ФУНКЦИИ 

 
Функции арифметические 

Abs(x); Arctan (x); Cos (x); Exp (x); Ln (x); Sin (x); Sqr (x); Sqrt (x) 

имеют стандартный смысл. Функция 

fruc(R:Real):Real;fruc(I:Integer):Real  

возвращает значение дробной части своего аргумента.  
Функция 

int (R:real):real; int (I:integer):real; 

возвращает значение целой части своего аргумента.  
Функции скалярные 

Odd(x); Pred(x); Succ(x)  

имеют стандартный смысл.  
Функции преобразования 

Chr (x); Ord (x); Round (x); Trunc (x) имеют стандартный смысл. 

СТРОКОВЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ 

Процедура 

Delete

(var S:Strina;Pos, Len: Integer) убирает из строки S Len символов, начиная 

с Pos. Если Len больше длины S, то ничего не происходит. Если Pos+Len больше длины строки, то 
удаляются все символы до конца строки. 

Процедура 

Insert

(S:String;  var  D:String;Pos:Integer)  вставляет  строку  S  в  строку  D  перед 

символом с номером Pos. Если Pos больше длины D, то S и D соединяются. Если длина результата 
при этом больше максимальной длины

 

D, то в D записываются только самые левые символы. 

Процедура 

Str

(I:Integer; var S: String); 

Str

(R:Real; var S:String) преобразует I или R из числа 


background image

 

258 

в строку и записывает эту строку в S, причем R и I могут записываться

 

формально, т.е. как в про-

цедурах Write и Writeln. 

Процедура 

Val

(S:String;  var  R:Real;  var  P:Integer); 

Val

(S:String;  var  I,P:Integer)  преобразует 

строковую переменную S в число (тип зависит от типа переменной I или R соответственно). Если 
в строке S ошибок нет. то Р равно 0, иначе значение R (или I) не определено, а Р присваивается 
номер первого ошибочного символа. 

Функция 

Concat

(Sl,S2,....Sn:string):String  возвращает  строку,  полученную  конкатенацией 

строк Sl,...,Sn. Если длина результата больше 255, то возникает ошибка времени выполнения. 

Функция 

Copy

(S:String; Pos,Len:Integer):String возвращает строку, полученную из Len сим-

волов  строки  S,  начиная  с  позиции  Pos.  Если  Pos  больше,  чем  длина  строки  S,  то  возвращается 
пустая строка. Если Pos+Len больше, чем длина строки S, то возвращаются только символы, при-
надлежащие строке S. 

Функция 

Length

(S:Strina):Integer возвращает длину строки S. 

Функция 

Pos

(Pattern,Sourse:String):Integer  возвращает  номер  символа,  начиная  с  которого 

Pattern входит в Sourse. Если вхождения нет, то возвращается 0.

 

 

ПРОЦЕДУРЫ И ФУНКЦИИ ДЛЯ РАБОТЫ С ФАЙЛАМИ 

Процедура 

Assign

(var  F:File:  Name:String);  Name  -  имя  файла  на  диске,  F  –  имя  файловой 

переменной.  После  выполнения  этой  процедуры  Name  и  F  отождествляются.  Assign  не  должна 
применяться к файлу, находящемуся в употреблении. 

Процедура 

BlockRead

(var F:File; var Dest:Type; Num:Integer) 

F -нетипизируемый файл, Dest -переменная, 
Num  -  количество  128-баитных  записей,  которые  должны  быть  перенесены  из  дискового 

файла в переменную. 

Процедура 

BlocKWrite

(var  F:File;  var  Dest:Type;  Num:Integer)  I  Num  -  количество  128-

баитных записей, которые должны быть перенесены из переменной в дисковый файл. 

Процедура 

Chain

(var  F:File)  активизирует  CHN-файл,  с  которым  предварительной  проце-

дурой Assign было отождествлено имя F. 

Процедура 

Close

(var F:File); дисковый файл, отождествленный с переменной F, закрывает-

ся и в директорию диска вносятся необходимые изменения. 

Процедура 

Erase

(var F:File); дисковый файл, отождествленный с переменной F, уничтожа-

ется. 

Процедура 

Execute

(var  F:File)  загружает  и  выполняет  файл  с  диска,  с  которым  предвари-

тельно процедурой Assign было отождествлено имя F. 

Процедура 

Rename

(var  F:File;  Name:String);  дисковому  файлу,  отождествленному  с  пере-

менной F, присваивается новое имя Name. Rename не должна применяться к уже открытому фай-
лу. 

Процедура 

Reset

(var F:File) открывает файл F для чтения и ставит указатель на начало фай-

ла. 

Процедура 

Rewrite

(var F:File) открывает файл F для записи, чистит его и ставит указатель 

на начало файла. 

Процедура 

Seek

(var F:File

 

of type; Pos:Integer) устанавливает указатель файла F на Pos эле-

мент файла. 

Процедура 

Flush

(var F:File) очищает буфер дискового файла, отождествленного с перемен-

ной F. Гарантирует, что следующая операция чтения будет произведена непосредственно с диска. 
Должна применяться к уже закрытым файлам. 

Функция 

Eof

(var F;File):boolean возвращает TRUE, если найден конец файла. 

Функция 

Eoln

(var  F:Text):boolean  возвращает  TRUE,  если  найден  конец  строки  или  конец 

файла F. 

Функция 

Filepos

(var:  F:  File  of  Type):Integer; 

Filepos

(var:  F:File):Integer  возвращает  теку-

щую позицию указателя файла. 

Функция

 Filesize

(var: F: File ofType):Integer;

 

Filesize(var: F:File):Integer возвращает текущее 

количество элементов файла. 

 

ПРОЦЕДУРЫ И ФУНКЦИИ ДЛЯ РАБОТЫ СО ССЫЛОЧНЫМИ СТРУКТУРАМИ 


background image

 

259 

 
Процедура 

Getmem

(var P:Pointer; I:Integer) отводит под область памяти, на которую будет 

ссылаться переменная Р, 1 байт памяти. 

Процедура 

Mark

(var P:Pointer) запоминает текущий указатель «кучи» в переменной Р. 

Процедура 

New

(var P:Pointer) отводит место в памяти под переменную того типа, на кото-

рый указывает Р. 

Процедура 

Release

(var P.Pointer) ставит указатель «кучи» на значение переменной Р. Пере-

менная Р должна быть предварительно обработана процедурой Mark. Уничтожаются все динами-
ческие переменные, расположенные в памяти после последнего вызова процедуры Mark. 

Функция

  MemAvai

:Integer  возвращает  размер  доступной  для  динамических  переменных 

памяти. 

Функция 

Ord

(P:Pointer):Integer возвращает адрес переменной ссылочного типа Р. 

Функция 

Ptr

(I:Integer):Rointer возвращает ссылку на адрес памяти I. 

 

ПРОЦЕДУРЫ ДЛЯ РАБОТЫ С ТЕКСТОВЫМ ЭКРАНОМ 

 
Процедура

 CrtExit

 - выдача на экран строки сброса экрана, определенной в инсталляторе. 

Процедура

 Crtlnit 

- выдача на экран строки инициализации экрана, определенной в инстал-

ляторе. 

Процедура

 CIrEol

 уничтожает символы строки от курсора до крайнего правого символа без 

перемещения курсора. 

Процедура

 CIrScr

 очищает экран. 

Процедура 

DelLine

 - удаление строки, на которой находится курсор, и сдвиг всех строк, на-

ходящихся ниже этой строки, на одну вверх. 

Процедура

 GotoXY

 (X,Y:Integer) - позиционирование курсора по координатам 

XnY.

 

Процедура 

InsLine

  -  вставка  пустой  строки  на  место  курсора  и  сдвиг  всех  строк,  находя-

щихся под этой строкой на одну вниз. 

 

ПРОЧИЕ ПРОЦЕДУРЫ И ФУНКЦИИ 

 
Процедура 

Bdos

(func,param:Integer) - вызов функции Bdos с номером func, которая заносит-

ся в регистр С, и параметром param, который заносится в регистровую пару DE. 

Процедура 

BIOS

 

(func,param:Integer)  -  вызов  функции  Bios  с  номером  func  и  параметром 

param. который заносится в регистровую пару ВС. 

Процедура

 Delay

 (Ms:Integer) - задержка программы на Ms миллисекунд. 

Процедура

 FillChar(var

 dest; length:Integer;data:Char);

 FillChar(var

 dest; 

length:Integer;data:Byte)  -  заполнение  length  байт  памяти  величиной  data.  Начало  участка 

памяти - адрес переменной dest. 

Процедура

 Halt

 - аварийный выход из программы. 

Процедура 

Move

(var  sourse.dest:length:Integer)  -  пересылка  length  байт,  расположенных  в 

памяти, начиная с первого байта переменной sourse, в участок памяти длины length, начинающий-
ся с первого байта переменной dest. 

Процедура 

Randomise

- инициализация генератора случайных чисел. 

Функция 

Addr

(var variable):Integer; 

Addr

(<function identifier>):Integer; 

Addr(<procedure identifier>):Integer возвращает адрес первого байта своего аргумента. 
Функция 

Bdos

(funk,param:Integer):Byte аналогична соответствующей процедуре. Возвраща-

ет значение регистра А. 

Функция 

BdosHL

(funk,param:Integer):Integer  аналогична  функции  Bdos.  Возвращает  значе-

ние регистровой пары HL. 

Функция 

Bios

(funk,  param  :Integer):Byte  аналогична  соответствующей  процедуре.  Возвра-

щает значение регистра А. 

Функция 

BiosHL

(func.param:Integer):Integer  аналогична  функции  Bios.  Возвращает  значе-

ние регистровой пары HL. 

Функция 

Hi

(I:Integer):Integer возвращает число, младший байт которого содержит старший 

байт параметра. Старший байт результата равен 0. 


background image

 

260 

Функция 

IOresult

:Integer  работает  после директивы  компилятору  $1-.  Значение 0  соответ-

ствует отсутствию любой ошибки ввода-вывода. В противном случае возвращается произвольное 
ненулевое число. 

Функция 

KeyPresscd

:Boolean возвращает  TRUE, если нажата любая клавиша

 

на

 

клавиату-

ре, и FALSE в противном случае. 

Функция 

Lo

(I:Integer):Integer возвращает число, младший

 

байт которого содержит младший 

байт параметра. Старший байт результата равен 0. 

Функция 

Random

(I:Integer):Integer; Random:Real возвращает случайное число. Для первого 

варианта вызова это число лежит в интервале от 0 до 1, для второго -от 0 до 1. 

Функция 

Size0f

(var  variable):Integer; 

Size0f

(<type  identifier>):Integer  возвращает  размер  (в 

байтах) своего аргумента. 

Функция 

Swap

(I:Integer):Integer  возвращает  число,  у  которого по сравнению  с аргументом 

поменялись местами первый и второй байты. 

Функция 

UpCase

(Ch:Char):Char  возвращает  верхний

 

регистр  данного  символа.  Если  тако-

вого нет, то возвращается аргумент. 

Функция 

ParamCount

:Integer; возвращает число параметров в строке вызова СОМ-файла. 

Функция 

ParamStr

(n:Integer):String[14];  возвращает  n-параметр  из  строки  вызова  СОМ-

файла. 

Процедура

  Exit

  -  выполнение  этой  процедуры  эквивалентно  передачи  управления  на  по-

следний END процедуры, функции или основной программы, где выполнена процедура

 Exit.

 

 

§4. МЕТОДЫ И ИСКУССТВО ПРОГРАММИРОВАНИЯ  

 

4.1. ПРОЕКТИРОВАНИЕ ПРОГРАММ 

В  предыдущем  разделе,  посвященном

 

языку  Паскаль,  приведено  немало  примеров  про-

грамм. Однако, при анализе готовой программы чаще всего не ясно, как разработчики к ней при-
шли. В этом разделе рассказывается об общих моментах в технологии программирования. Конеч-
но, при разработке небольших учебных программ не все элементы этой технологии следует отра-
батывать (да это и не всегда возможно по-существу), однако само ее существование должно быть 
осознано. 

Современный подход к проектированию программ основан на декомпозиции задачи, кото-

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

 от 

друга, при этом объединенная программа будет функционировать правиль-

но. 

Различают  абстракцию  через  параметризацию  и  через  спецификацию.  Смысл  абстракции 

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

Разработка любой программы или программной системы начинается с определения требо-

ваний к ней для конкретного набора пользователей и заканчиваете," эксплуатацией системы этими 
пользователями. 

Существуют  различные  подходы  и  технологии  разработки  алгоритмов  и  программ.  Хотя 

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

1)постановка задачи; 
2) проектирование программы; 
3) построение модели; 
4) разработка алгоритма; 
5) реализация алгоритма;