Программирование |
Web мастеру |
3D Графика и анимация |
Сетевая безопасность |
Гостевая книга |
Форум |
Ссылки |
Услуги |
|
|
На главную страницу > > В раздел программирование > > В раздел Pascal |
Процедуры и функции. |
Стандартные библиотечные
модули В систему Турбо Паскаль версии 6.0. и старше включены 8 модулей: System, Crt, Dos, Graph, Graph3, Overlay, Printer, Turbo3 и специализированная библиотека Turbo Vision. Модуль System подключается по умолчанию, поэтому в любой программе становятся доступными все его встроенные процедуры и функции (см главу 1.3.). Остальные модули должны подключаться с помощью зарезервированного слова uses с добавлением имени модуля. Например: uses Crt. Рассмотрим кратко назначение каждого модуля. System - сердце Турбо Паскаля. Подпрограммы, содержащиеся в нем, обеспечивают работу всех остальных модулей системы. Crt - содержит средства управления дисплеем и клавиатурой компьютера. Dos - включает средства, позволяющие реализовывать различные функции Dos. Graph3 - поддерживает использование стандартных графических подпрограмм. Overlay - содержит средства организации специальных оверлейных программ. Printer - обеспечивает быстрый доступ к принтеру. Turbo3 - обеспечивает максимальную совместимость с версией Турбо Паскаль 3.0. Graph - содержит пакет графических средств. Turbo Vision - библиотека объектно-ориентированных программ для разработки пользовательских интерфейсов. На примере модуля Crt познакомимся поближе с работой встроенных процедур и функций. Он устанавливает режим работы адаптера дисплея, организует вывод в буфер экрана, регулирует яркость свечения символов и т.д. С момента подключения пользователю доступны все содержащиеся в нем стандартные средства. Рассмотрим некоторые из них. § Установка текстового режима TextMode(Mode:integer); Значение Mode равно 1 (40 / 25) или 3(80 / 25). § Очистка экрана ClrScr – полностью очищает экран; ClrEol – стирает все символы в строке, начиная с текущей позиции до конца строки; § Управление курсором GotoXY(x,y) – перемещает курсор в позицию, заданную координатами x, y. § Управление цветом TextColor(Color:byte) - установка цвета выводимых символов; TextBackGround(Color) – цвет фона. Чтобы добавить при выводе эффект мерцания, при установке цвета указывается Blink (16). Пример. Вывести в центре экрана цветными символами слово «Привет» с эффектом мерцания. Program primer; Uses crt; Begin TextMode(3); Clrscr; Gotoxy(36,12); Textcolor(5+16); Write(‘Привет’); End. Глава 3. Процедуры и функции Процедуры Для использования подпрограммы-процедуры необходимо сначала описать процедуру, а затем обращаться к ней (обращение к процедуре – отдельный оператор). Описание процедуры включает заголовок (имя) и тело процедуры. Заголовок состоит из зарезервированного слова procedure, имени процедуры и, заключенного в скобки, списка формальных параметров с указанием типа. Название «формальные» эти параметры получили в связи с тем, что в этом списке заданы только имена для обозначения исходных данных и результатов работы процедуры, а при вызове подпрограммы на их место будут поставлены конкретные значения. Тело процедуры – блок, по структуре аналогичный программе. При создании программ, использующих процедуры, следует учитывать, что все объекты, которые описываются после заголовка в теле процедуры, называются локальными объектами и доступны только в пределах этой процедуры. Все объекты, описанные в вызывающей программе, называются глобальными и являются доступными внутри процедур, вызываемых этой программой. Общий вид описания процедуры: Procedure <имя> (список формальных параметров, блок описания); Const …; щ … э блок описания Var ….; ы begin <операторы> end; Пример 1. Вывести по четырем углам экрана свое имя цветными буквами, можно с эффектом мерцания. Program names; Uses crt; Procedure name(x, y, c: byte, ); Begin Gotoxy (x, y); Textcolor(c); {textcolor (c+16);} Write(‘Имя’); end; begin Clrscr; {очистка экрана} name (2,2, 14); name (2, 22, 8); name (75,2, 3); name (75, 22, 5); End. Пример 2. Найти наибольшее из четырех чисел, используя подпрограмму нахождения наибольшего из двух чисел. Program max; Uses crt; Var a, b, c, d, m, p, q:real; Procedure Bd(x,y:real, var z: real); Begin If x>y then z:=x else z:=y; end; begin Clrscr; {очистка экрана} Write(‘Введите числа’); Readln(a,b,c,d); Bd (a, b, p); Bd (c, d, q); Bd (p, q, m); Writeln(‘наибольший элемент’, m:8:3); End. Глава 3. Процедуры и функции Функции Подпрограмма-функция обрабатывает данные, переданные ей из главной программы, и затем возвращает полученный результат (в отличие от процедуры). Функция, определенная пользователем, состоит из заголовка и тела функции. Заголовок содержит зарезервированное слово Function, имя, список формальных параметров (заключенный в скобки) и тип возвращаемого функцией значения. Тело функции представляет собой локальный блок, по структуре сходный с программой. Общий вид описания функции: Function <имя> (<параметры>): <тип результата>; Const …; щ … э блок описания Var ….; ы begin <операторы> end; В разделе операторов должен находиться, хотя бы один оператор, присваивающий имени функции значение. Обращение к функции осуществляется по имени с указанием списка аргументов. Каждый аргумент должен соответствовать формальным параметрам и иметь тот же тип. Пример 1. Найти значение следующего выражения: F(t) – F(c), где F(x)=Цx +2x2 +3x Program m; Uses crt; Var t, c, r : real; Function F(x: real) : real; Begin F:= sqrt(x)+ 2*sqr(x) + 3*x; End; Begin Clrscr; Write(‘Введите числа’); Readln (t, c); r:= F(t) – F(c); write(‘результат =’, r:8:3); {8 символов на все число, 3 – на дробную часть, см п.1.4.2} end. Пример 2. Найти наибольшее из четырех чисел, используя подпрограмму нахождения наибольшего из двух чисел. Program max; Uses crt; Var a, b, c, d, m, p, q:real; Function Bid(x, y: real) : real; Begin If x>y then bid:=x else bid:=y; End; Begin Clrscr; Write(‘Введите числа’); Readln (a, b, c, d); p:=bid(a, b); q:= bid(c, d); m:=bid(p, q); write(‘наибольший элемент’, m:8:3); end. Глава 4. Массивы Одномерные массивы Все простые типы данных, рассматриваемые ранее, имеют два характерных свойства: неделимость и упорядоченность их значений. Составные, или структурированные, типы данных задают множество сложных значений с одним общим именем. Существует несколько методов структурирования, каждый из которых отличается способом обращения к отдельным компонентам. В данном учебном пособии будут рассмотрены только два структурированных типа данных: регулярный тип (массивы) и строковый тип (часть 5). С понятием «массив» приходится встречаться при решении научно-технических, экономических задач обработки большого количества однотипных значений. Таким образом, массив – это упорядоченная последовательность данных, состоящая из фиксированного числа элементов, имеющих один и тот же тип, и обозначаемая одним именем. Название регулярный тип массивы получили за то, что в них объединены однородные элементы, упорядоченные (урегулированные) по индексам, определяющим положение каждого элементы в массиве. Массиву присваивается имя, посредством которого можно ссылаться на него, как на единое целое. Элементы, образующие массив, упорядочены так, что каждому элементу соответствует совокупность номеров (индексов), определяющих его место в общей последовательности. Индексы представляют собой выражения простого типа. Доступ к каждому отдельному элементу осуществляется обращением к имени массива с указанием индекса нужного элемента: <имя массива>[<индекс>]. Описание массива определяет его имя, размер массива и тип данных. Общий вид описания массива: Type <имя нового типа данных>=array[<тип индекса>] of <тип компонентов>; Далее, в перечне переменных указывается имя массива, и через двоеточие указывается имя нового типа данных. Массив может быть описан и без представления типа в разделе описания типов данных: Var <имя массива>: array [<тип индекса>] of <тип компонентов>; Чаще всего в качестве типа индекса используется интервальный целый тип. Одномерные массивы Линейный (одномерный) массив – массив, у которого в описании задан только один индекс, если два индекса – то это двумерный массив и т.д. Одномерные массивы часто называют векторами, т.е. они представляют собой конечную последовательность пронумерованных элементов. Присваивание начальных значений (заполнение массива) заключается в присваивании каждому элементу массива некоторого значения, заданного типа. Наиболее эффективно эта операция осуществляется при помощи оператора for. Ввод данных может осуществляться : с клавиатуры, при помощи различных формул, в том числе и датчика случайных чисел. Индексированные элементы массива называются индексированными переменными и могут быть использованы так же, как и простые переменные. Например, они могут находиться в выражениях в качестве операндов, им можно присваивать любые значения, соответствующие их типу и т.д. Алгоритм решения задач с использованием массивов: · Описание массива · Заполнение массива · Вывод (распечатка) массива · Выполнение условий задачи · Вывод результата Пример 1. Задан одномерный массив В(10), заполненный произвольным образом. Подсчитать количество элементов массива, больших заданного числа k. Program massiv; Uses crt; Var b:array [1..10] of integer; I, k, s : integer; Begin Clrscr; S:=0; For i:=1 to 10 do Begin Write(‘Введите’, i, ‘-й элемент массива ’); Readln (B[i]); Write(b[i], ‘ ‘); End; Write(‘Введите число k’); Readln(k); For i:=1 to 10 do If b[i]>k then s:=s+1; Write(‘Количество элементов’, s); End. Пример 2. Определить самую высокую температуру и самый теплый день в мае. Program massiv; Uses crt; Var t:array [1..31] of integer; I, max, n : integer; Begin Clrscr; For i:=1 to 31 do Begin t[i]:=random(20); Write(b[i], ‘ ‘); End; Max:=t[1]; n:=1; For i:=2 to 31 do Begin If t[i] > max then max:=t[i]; n:=i ; End; Write(‘максимальная температура’, max, ‘в’, n, ‘день’); End. |
На главную страницу > > В раздел программирование > > В раздел Pascal |