Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Алфавит и словарь языка Паскаль



Введение

Процесс решения задачи на ПК – это совместная деятельность человека и машины. Его условно можно разделить на несколько этапов. Человеку отводятся шаги, связанные с творческой деятельностью (постановкой, алгоритмизацией, программированием задачи и анализом результатов), на долю компьютера – этапы обработки информации в соответствии с разработанным алгоритмом. При этом говорят, что компьютер выполняет программу (последовательность команд), реализующую данный алгоритм.

Команды, предназначенные для ПК, должны быть представлены в виде, понятном машине. Для этого применяются языки программирования.

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

Для облегчения труда программистов были созданы языки программирования, которые строились на основе определенного алфавита и строгих правил построения предложений. Отличительной особенностью этих языков является их ориентация не на систему команд той или иной ЭВМ, а на систему операторов, характерных для записи определенного класса алгоритмов. Такие языки принято называть языками программирования высокого уровня. К ним относятся: Бейсик, Фортран, Паскаль, Алгол, Си и многие другие.

Так как текст, записанной программы на языках высокого уровня не понятен ПК, требуется перевести его на машинный язык. Такой перевод на язык машинных кодов называется трансляцией, а выполняется он специальными программами – трансляторами.

Существует два основных вида трансляторов: интерпретаторы (трансляторы, производящие пооператорную обработку и выполнение программы) и компиляторы (трансляторы, преобразующие всю программу в модуль на машинном языке и только после записи в памяти ПК, выполняющие исходную программу).

Язык программирования Паскаль получил свое название в честь выдающегося французского математика, физика, философа Блеза Паскаля (1623-1662), который изобрел механическую счетную машину для выполнения арифметических операций (паскалево колесо, как говорили современники). В 1965 году Международная федерация по обработке информации (IFIP) предложила нескольким специалистам в области информатики принять участие в создании нового языка программирования. Среди них был швейцарский ученый Н.Вирт. Вскоре он и его сотрудники из Федерального технического университета подготовили первую версию Паскаля, затем – первый вариант компилятора, а в 1971 году вышло описание языка. В середине 80-х гг. фирмой Borland International, Inc (США) для повышения качества и скорости разработки программ была создана система программирования Турбо Паскаль, расширившая область применения языка и развившая сам язык программирования.

Разработка программ на Паскале включает в себя следующие действия: ввод и редактирование текста на языке программирования, трансляция и отладка программы. Для каждого этапа требуются специальные средства: редактор текстов, компилятор, включающий в себя компоновщик – для построения исполняемого компьютером программного модуля и отладчик – для отладки программы. Систему программирования Турбо Паскаль называют еще интегрированной средой программирования, так как она объединяет в себе все ранее разрозненные средства, используемые при разработке программ.

Широкой популярности Паскаля способствовали следующие причины:

· Благодаря компактности, удачному первоначальному описанию язык оказался достаточно легким для изучения.

· Он отражает фундаментальные концепции алгоритмов в легко воспринимаемой форме.

· Паскаль позволяет четко реализовывать идеи структурного программирования и осуществлять переход к объектно-ориентированному программированию (язык Турбо Паскаль предоставляет программисту все средства ООП: высокую степень структурированности, модульность, абстрактность и возможность повторного использования, которые встроены непосредственно в язык).

· Язык программирования позволил перейти к системам автоматической проверки правильности программ.

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

Задачи учебного пособия:

· Развитие логического мышления.

· Формирование представления о программировании как способе обработки информации.

· Формирование навыков работы в среде программирования Турбо Паскаль.

Глава 1. Основные понятия системы программирования Турбо Паскаль

Алфавит языка Турбо Паскаль

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

· Как ввести информацию в память (ввод).

· Как хранить информацию в памяти (данные).

· Как указать правильные команды для обработки данных (операции).

· Как передать данные из программы пользователю (вывод).

Необходимо также уметь упорядочивать команды так, чтобы:

· некоторые из них выполнялись только в случае, если соблюдается некоторое условие или ряд условий (условное выполнение);

· другие выполнялись повторно некоторое число раз (циклы);

· третьи выделялись в отдельные части, которые могут быть неоднократно выполнены в разных местах программы (подпрограммы).

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

Это список не является полным, однако, он содержит те элементы, которые присущи обычно всем программам. Многие языки программирования имеют еще и дополнительные средства, в том числе и Паскаль.

Основные файлы пакета Турбо Паскаль:

· Turbo.exe – интегрированная среда программирования;

· Turbo.hlp – файл, содержащий данные для оперативной подсказки;

· Turbo.tp – файл конфигурационной системы;

· Turbo.tpl – библиотека стандартных модулей Турбо Паскаля.

Для работы в графическом режиме необходимы Graph.tru – модуль с графическими процедурами и функциями Турбо Паскаля, несколько файлов с расширением *.BGI – драйверы различных типов видеосистем ПК, несколько файлов с расширением *.CHR, содержащих векторные шрифты.

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

В рабочем окне осуществляется набор текста программы, запуск же происходит следующим образом: выход в меню, выбор пункта Run – Run.

Для того чтобы сохранить программу, необходимо: выйти в меню, выбрать File – Save (Save as …), в появившемся окне ввести имя файла и нажать клавишу Enter.

Выход из системы программирования: выход в меню, пункт File – Exit.

 

Глава 1. Основные понятия системы программирования Турбо Паскаль

Величины в Паскале

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

Константами называются такие данные, которые не изменяются в процессе выполнения программы, в отличие от переменных, которые могут менять свои значения. Имя переменной подобно ящичку, который можно заполнить различными значениями, что нельзя сделать с константой. Переменная характеризуется именем, типом (см.1.2.) и значением.

Кроме констант и переменных существуют так называемые типизированные константы, которые являются как бы промежуточным звеном между переменными и константами (В данном пособии не рассматриваются. Рекомендуется дополнительная литература, например, [1]).

Глава 1. Основные понятия системы программирования Турбо Паскаль

Структура программы

В программе программист записывает последовательность действий, выполняемых над определенными данными с помощью различных операций для реализации заданной цели. Основные требования, предъявляемые к программе:

· точность полученного результата;

· время выполнения;

· объем требуемой памяти (Максимальный размер программы ограничен. Компилятор позволяет обрабатывать программы, в которых объем данных и генерируемый машинный код не превышают 64 Кбайт каждый. Если объем программы требует большего количества памяти то необходимо использовать дополнительные средства).

Структура программы:

· Заголовок, состоящий из зарезервированного слова program и имени программы. Заголовок несет смысловую нагрузку и может отсутствовать, однако рекомендуется всегда его записывать для быстрого распознавания нужной программы.

· Программный блок, состоящий из 2 разделов:

1. Раздел описаний, в котором должны быть описаны все идентификаторы, встречающиеся в программе. Он представляет собой:

список имен подключаемых библиотечных модулей (определяется зарезервированным словом uses);

описание меток;

описание констант;

определение типов данных;

описание переменных;

описание процедур и функций;

Раздел описания начинается соответствующим каждому элементу списка служебным словом (таблица 1), после которого идет последовательность величин одного типа, разделенных запятой. После списка имен ставится двоеточие и указывается тип данных (см. 1.2.).

Любой элемент данного списка в программе может отсутствовать.

2. Раздел операторов.

Данный раздел начинается со служебного слова Begin и заканчивается служебным словом End. Далее задаются действия над объектами программы, введенными в разделе описаний. Операторы, посредством которых эти действия производятся, разделяются точкой с запятой. После последнего слова End ставится точка.

Для лучшего восприятия текста программы и поиска ошибок рекомендуется следующая схема:

· зарезервированные слова program, procedure, function и т.д. пишутся строчными буквами;

· идентификаторы начинаются с прописных букв;

· операторы записываются строчными буквами;

· логически подчиненные структуры записываются на 1 строку ниже и на 1- 2 позиции правее по отношению к более старшим.

Глава 1. Основные понятия системы программирования Турбо Паскаль

Типы данных

При решении задач выполняется обработка информации различного свойства, например дробные и целые числа, слова, строки и т.д. Для описания множества допустимых значений величины и совокупности операций, в которых участвует данная величина, используется указание ее типа данных. Тип данных – это множество величин, объединенных определенной совокупностью допустимых операций. Каждый тип имеет свой диапазон значений и специальное зарезервированное слово для описания. Все типы данных можно разделить на две группы: скалярные (простые) и структурированные (составные). Простые типы данных также делятся на стандартные и пользовательские. Стандартные – предлагаются разработчиками Турбо Паскаля, а пользовательские разрабатывают сами программисты.

Представим типы данных в виде схемы:

1. Простые типы

Порядковые типы

Целые типы

Логический тип

Символьный тип

Перечисляемый тип

Интервальный тип

Вещественные типы

Ссылочный тип

2. Структурированные типы

Строковый тип

Регулярный тип

Комбинированный тип

Множественный тип

Файловый тип

3. Процедурные типы

В данном учебном пособии будут рассмотрены лишь основные типы данных, используемые наиболее часто в курсе учебного школьного программирования. С другими интересующими типами данных можно познакомиться в специальной литературе (например, [1] ). Рассмотрим пока лишь простые типы данных, структурированные типы требуют отдельного более тщательного рассмотрения и будут изучены в частях 4 и 5.

Глава 1. Основные понятия системы программирования Турбо Паскаль

Целочисленные типы данных

 

Тип Диапазон Требуемая память (байт)
Byte Shorint Integer Word Longint 0…255 -128 …127 -32768 … 32767 0 … 65535 -2147483648 …2147483647

Значения целых типов могут изображаться в программе 2 способами: в десятичном виде и в шестнадцатеричном. Если число представлено в шестнадцатеричной системе, перед ним без пробела ставится знак $, а цифры старше 9 обозначаются латинскими буквами от A до F. Диапазон изменений таких чисел от $0000 до $FFFF.

Глава 1. Основные понятия системы программирования Турбо Паскаль

Вещественные типы данных

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

Тип Диапазон Мантисса Требуемая память (байт)
Real Single Double Extended Comp 2.9*10E-39 … 1.7*10E38 1.5*10Е-45 … 3.4*10Е38 5.0*10Е-324 … 1.7*10Е308 1.9*10Е-4951 … 1.1*10Е4932 -2Е+63+1 … 2Е+63-1 11 – 12 7 – 8 15 – 16 19 – 20 10 – 20

Примечание. Все вещественные типы, кроме Real, могут быть использованы в программе при наличии в ПК математического сопроцессора Intel 8087/80287.

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

Числа в форме с плавающей точкой представляются в экспоненциальном виде: mE+p, где m – мантисса (целое или дробное число), Е означает 10 в степени, р – порядок (целое число).

Например, 5.18Е+2 = 5.18 * 102 = 518

10Е-03 = 10 * 10 –3 = 0.01

Глава 1. Основные понятия системы программирования Турбо Паскаль

Символьный тип

Литерный (символьный) тип char определяется множеством значений кодовой таблицы ПК. Каждому символу приписывается целое число в диапазоне от 0 до 255. Для кодировки используется код ASCII. Например код символа 'A' при русской раскладке клавиатуры будет равен 192

Для размещения в памяти переменной литерного типа нужен 1 байт.

Глава 1. Основные понятия системы программирования Турбо Паскаль

Логический тип

Логический (булевский) тип boolean определяется двумя значениями: true (истина) и false (ложь). Он применяется в логических выражениях и выражениях отношения. Для размещения в памяти - 1 байт.

Глава 1. Основные понятия системы программирования Турбо Паскаль

Глава 1. Основные понятия системы программирования Турбо Паскаль

Ввод и вывод данных

Решение даже самой простой задачи на компьютере не обходится без операций ввода – вывода информации. Ввод данных – это передача информации от внешнего носителя в оперативную память для обработки. Вывод - обратный процесс, когда данные передаются после обработки из оперативной памяти на внешний носитель (экран монитора, принтер, дискету или винчестер и другие устройства). Выполнение этих операций производится путем обращения к стандартным процедурам: Read, Readln, Write, Writeln.

Глава 1. Основные понятия системы программирования Турбо Паскаль

Ввод данных с клавиатуры

Процедура чтения Read обеспечивает ввод данных для последующей их обработки программой. Общий вид: Read (< список переменных> );

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

Процедура чтения Readln аналогична процедуре Read, единственное отличие в том, что после считывания последнего в списке значения курсор переходит на начало новой строки.

Пример:

Program primer;

Var i, k: integer; c, d, s: real;

begin

readln (c, d);

read(i, k);

end.

В данном случае необходимо ввести сначала два действительных числа через пробел. Переменной с присваивается значение, равное первому введенному числу, а переменной d – значение, равное второму введенному числу. После ввода этих значений курсор переходит на начало новой строки (за это отвечает ln следующий за словом Read). Далее требуется ввести еще два целых числа, которые будут присвоены значениям переменных i и k соответственно.

Глава 1. Основные понятия системы программирования Турбо Паскаль

Вывод данных

Процедура вывода Write производит вывод данных.

Общий вид: Write(< список вывода> );

В списке вывода могут быть представлены выражения допустимых типов данных (integer, real, char и т.д.) и произвольный текст, заключенный в апострофы.

Например, Write(‘Привет’); Write(34.7); Write(45+55); Write(b, d);

Процедура Writeln аналогична процедуре Write. Отличие в том, что после вывода последнего в списке выражения курсор переходит на начало новой строки.

В процедурах вывода Write и Writeln имеется возможность записи выражения, определяющего ширину поля вывода.

При рассмотрении форматов вывода примем следующие обозначения:

I, p, q – целочисленное выражение;

R - выражение вещественного типа;

# - цифра;

* - знак «+» или «- »;

_ - пробел.

 

Значение I Выражение Результат
Write (I);
Write (I, I, I);
Write (I: 6); ___324
Write (I + I: 7); ____624
     
Значение R Выражение Результат
123.432 Write (R); __1.2343200000E+02
-1.34E+01 Write (R); _ -1.3400000000E+01
304.55 Write (R: 15); 3.045500000E+02
Значение R Выражение Результат
304.66 Write (R: 8: 4); 304.6600
45.322 Write (R: 5: 2); 45.32

Пример:

Program primer;

Var

a, b, c, sum: integer;

begin

a: =4; b: =6; c: =55;

Write(a: 3); Write(b: 3); Write(c: 3);

Sum: =a+b+c;

Writeln (‘A=’, a);

Writeln (‘B=’, b);

Writeln (‘C=’, c);

Writeln (‘Сумма A+B+C равна ’, sum);

End.

Результат выполнения:

4 6 55

А=4

В=6

С=55

Сумма А+В+С равна 65

Общие сведения

Оператором называется предложение языка программирования, задающее полное описание некоторого действия, которое необходимо выполнить. Основная часть программы на языке Турбо Паскаль представляет собой последовательность операторов. Разделителем операторов служит точка с запятой. Операторы, не содержащие других операторов, называются простыми. К ним относятся операторы присваивания, безусловного перехода, вызова процедуры, пустой. Структурные операторы представляют собой конструкции, построенные из других операторов по строго определенным правилам. Эти операторы можно разделить на три группы: составные, условные и повтора.

Оператор присваивания

Оператором называется предложение языка программирования, задающее полное описание некоторого действия, которое необходимо выполнить. Основная часть программы на языке Турбо Паскаль представляет собой последовательность операторов. Разделителем операторов служит точка с запятой. Операторы, не содержащие других операторов, называются простыми. К ним относятся операторы присваивания, безусловного перехода, вызова процедуры, пустой. Структурные операторы представляют собой конструкции, построенные из других операторов по строго определенным правилам. Эти операторы можно разделить на три группы: составные, условные и повтора.

Оператор вызова процедуры

Оператор вызова процедуры служит для активизации стандартной процедуры или процедуры, определенной пользователем. Стандартные процедуры находятся в файлах, подключаемых модулем и для их использования достаточно указать имя процедуры, и если необходимо дополнительные параметры. Для того, чтобы вызвать свою процедуру, ее для этого надо описать перед началом программы (begin), а затем уже использовать.

Например, ClrScr; {Вызов стандартной процедуры очистки экрана}. Подробное рассмотрение данной темы приведено в части 3.

Пустой оператор

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

Label m;

begin

go to m;

m:

end;

Структурные операторы

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

Составной оператор

Это оператор представляет собой совокупность произвольного числа операторов, отделенных друг от друга точкой с запятой, и ограниченную операторными скобками begin и end. Он воспринимается как единое целое и может находиться в любом месте программы, где возможно наличие оператора.

Условные операторы

Условные операторы предназначены для выбора к исполнению одного из возможных действий, в зависимости от некоторого условия (при этом одно из действий может отсутствовать). Для программирования ветвящихся алгоритмов в Турбо Паскале есть специальные операторы. Одним из них является условный оператор If. Это одно из самых популярных средств, изменяющих порядок выполнения операторов программы.

Он может принимать одну из форм:

If < условие> then < оператор1>

else< оператор2>;

или

If < условие> then < оператор>;

Оператор выполняется следующим образом. Сначала вычисляется выражение, записанное в условии. В результате его вычисление получается значение логического (булевского) типа. Если это значение – «истина», то выполняется оператор1, указанный после слова then. Если же в результате имеем «ложь», то выполняется оператор2. В случае, если вместо оператора1 или оператора2 следует серия операторов, то эту серию операторов необходимо заключить в операторные скобки begin…end.

Обратить внимание, что перед словом else точка с запятой не ставится.

Пример 1. Составить программу, которая запрашивает возраст ребенка и затем выдает решение о приеме ребенка в школу (возраст ³ 7лет).

Program sh;

Var v: integer;

Begin

Write(‘Введите возраст ребенка’);

Readln(v);

If v> =7 then writeln(‘Принимаем в школу’)

else writeln (‘Не принимаем в школу’);

end.

Задание. Модифицировать данную программу, чтобы ограничить верхнюю границу приема в школу 16 годами.

Решение:

Program sh;

Var v: integer;

Begin

Write(‘Введите возраст ребенка’);

Readln(v);

If (v> =7) and (v< =16) then writeln(‘Принимаем в школу’)

else writeln (‘Не принимаем в школу’);

end.

Пример 2. Даны два числа. Меньшее из этих чисел заменить суммой данных чисел, большее - произведением.

Program sh;

Var x, y, s, p: integer;

Begin

Write(‘Введите 2 числа’);

Readln(x, y);

S: =x+y; p: =x*y;

If x> =y

then begin y: =s; x: =p; end

else begin x: =s; y: =p; end;

writeln(‘x=’, x);

writeln(‘y=’, y);

end.

 

Если оператор If обеспечивает выбор из двух альтернатив, то существует оператор, который позволяет сделать выбор из произвольного числа вариантов. Это оператор выбора Case. Он организует переход на один из нескольких вариантов действий в зависимости от значения выражения, называемого селектором.

 

Общий вид: Case k of

< const1>: < оператор1>;

< const2>: < оператор2>;

…..

< constN>: < операторN>

else < операторN+1>

end;

Здесь k – выражение-селектор, которое может иметь только простой порядковый тип (целый, символьный, логический). < const1>, …< constN> - константы того же типа, что и селектор.

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

При использовании оператора Case должны выполняться следующие правила:

1. Выражение-селектор может иметь только простой порядковый тип (целый, символьный, логический).

2. Все константы, которые предшествуют операторам альтернатив, должны иметь тот же тип, что и селектор.

3. Все константы в альтернативах должны быть уникальны в пределах оператора выбора.

Формы записи оператора:

Селектор интервального типа:

Case I of

1..10: writeln(‘число в диапазоне 1-10’);

11.. 20: writeln(‘число в диапазоне 11-20’);

else writeln(‘число вне пределов нужных диапазонов’)

end;

Селектор целого типа:

Case I of

1: y: = I+10;

2: y: = I+20;

3: y: = I +30;

end;

Пример 1. Составить программу, которая по введенному номеру дня недели выводит на экран его название.

Program days;

Var day: byte;

Begin

Write(‘Введите номер дня недели’);

Readln(day);

Case day of

1: writeln(‘Понедельник’);

2: writeln(‘Вторник’);

3: writeln(‘Среда’);

4: writeln(‘Четверг’);

5: writeln(‘Пятница’);

6: writeln(‘Суббота’);

7: writeln(‘Воскресенье’)

else writeln(‘Такого дня нет’);

end; end.

Пример 2. Составить программу, которая по введенному номеру месяца выводит на экран название времени года.

Program m;

Var k: byte;

Begin

Write(‘Введите номер месяца’);

Readln(k);

Case k of

1, 2, 12: writeln(‘Зима’);

3, 4, 5: writeln(‘Весна’);

6, 7, 8: writeln(‘Лето’);

9, 10, 11: writeln(‘Осень’)

else writeln(‘Такого месяца нет’);

end; end.

Процедуры

Для использования подпрограммы-процедуры необходимо сначала описать процедуру, а затем обращаться к ней (обращение к процедуре – отдельный оператор). Описание процедуры включает заголовок (имя) и тело процедуры. Заголовок состоит из зарезервированного слова 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.

Функции

Подпрограмма-функция обрабатывает данные, переданные ей из главной программы, и затем возвращает полученный результат (в отличие от процедуры). Функция, определенная пользователем, состоит из заголовка и тела функции. Заголовок содержит зарезервированное слово 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.

Глава 4. Массивы

Двумерные массивы

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

Var a: array [1..10] of array [1.. 20] of real;

Var a: array [1..10, 1..20] of real;

Чаще всего при описании двумерного массива используют второй способ. Доступ к каждому отдельному элементу осуществляется обращением к имени массива с указанием индексов (первый индекс – номер строки, второй индекс – номер столбца). Все действия над элементами двумерного массива идентичны действиям над элементами линейного массива. Только для инициализации двумерного массива используется вложенный цикл for.

Например, For i: = 1 to 10 do

For j: = 1 to 20 do

A[i, j]: = 0;

 

При организации вложенных (сложных) циклов необходимо учитывать:

· Все правила, присущие простому циклу, должны соблюдаться

· Имена параметров для циклов, вложенных один в другой, должны быть различными

· Внутренний цикл должен полностью входить в тело внешнего цикла. Пересечение циклов недопустимо


Поделиться:



Популярное:

Последнее изменение этой страницы: 2016-07-13; Просмотров: 836; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.289 с.)
Главная | Случайная страница | Обратная связь