Читайте также: |
|
Существует ряд объективных причин, обусловивших выдающийся успех языка Pascal. Среди них в первую очередь необходимо указать следующие:
· Язык в естественной и элегантной форме отразил важнейшие современные концепции технологии разработки программ: развитая система типов, ориентация на принципы структурного программирования, поддержка процесса пошаговой разработки.
· Благодаря своей компактности, концептуальной целостности и ортогональности понятий, а также удачному первоначальному описанию, предложенному автором языка, Pascal оказался весьма легок для изучения и освоения
· Несмотря на относительную простоту языка, он оказался пригоден для весьма
широкого спектра приложений, в том числе для разработки очень больших и сложных
программ, например, операционных систем.
· Pascal весьма технологичен для реализации практически для всех, в том числе и
нетрадиционных, машинных архитектур.
Язык Pascal стандартизован во многих странах. В 1983 году был принят международный стандарт (ISO 7185:1983).
Основные особенности языка Pascal
1) Pascal является традиционным алгоритмическим языком программирования, продолжающим линию Algol-60. Это означает, что программа на языке Pascal представляет собой специально организованную последовательность шагов по преобразованию данных, приводящую к решению некоторой задачи.
2) Язык Pascal содержит удобные средства для представления данных. Развитая система типов позволяет адекватно описывать данные, подлежащие обработке, и конструировать структуры данных произвольной сложности. Pascal является типизированным языком, что означает фиксацию типов переменных при их описании, а также строгий контроль преобразований типов и контроль доступа к данным в соответствии с их типом (как на этапе компиляции, так и при исполнении программ).
3) Набор операторов языка Pascal отражает принципы структурного программирования и позволяет записывать достаточно сложные алгоритмы в компактной и элегантной форме.
Pascal является процедурным языком с традиционной блочной структурой и статически определенными областями действия имен. Процедурный механизм сочетает в себе простоту реализации и использования и гибкие средства параметризации.
4) Синтаксис языка достаточно несложен. Программы записываются в свободном формате, что позволяет сделать их наглядными и удобными для изучения.
TURBO PASCAL
Язык Turbo Pascal - мощное расширение американского стандарта (ANSI Pascal), учитывающее архитектурные особенности операционной обстановки (MS-DOS) и снабженное внушительными по объему и разнообразию пакетами стандартных процедур.
Такие принципиальные нововведения, как аппарат модулей и объектно-ориентированные средства облегчают конструирование больших программных систем на основе технологии модульного программирования.
Компилятор входного языка системы Turbo Pascal работает по однопроходной схеме, реализует функции редактирования связей, формируя на выходе готовый к исполнению объектный код. Компилятор может осуществлять широкий набор локальных оптимизаций (свертывание констант, исключение неиспользуемого кода и лишних данных, оптимизация операций и т.д.), что способствует высокой эффективности результирующих программ.
Система Turbo Pascal является интегрированной средой, включающей ряд компонент, в совокупности поддерживающих все виды работ по созданию программ. Система содержит универсальный текстовый редактор, компилятор входного языка, редактор связей и встроенный символьный отладчик. Многооконный интерфейс с развитой системой меню обеспечивает высокую производительность труда программиста.
III. Программирование на языках программирования высокого уровня
1. Структура программы в Паскале
Программа на языке Pascal состоит из разделов:
Название программы | Program <Имя программы>; | |
раздел описания меток | Label <описание меток>; | |
раздел описания констант | Const <описание констант>; | |
раздел описания типов | Туре <описание типов>; | |
Раздел подключения модулей | Uses <название модуля>; | |
раздел описания переменных | Var <описание переменных>; | |
раздел описания процедур и функций | Procedure (Function) <описание подпрограмм>; | |
раздел операторов | Begin | |
<раздел операторов>; | ||
Конец программы | End. |
Для любой программы обязательным является лишь раздел операторов. Все программные объекты (константы, переменные, типы и пр.) должны быть описаны в соответствующих разделах описаний.
2. Правила написания имен в Паскале
1. Все имена пишутся на латинице.
2. Длина имени может быть до 256 символов.
3. Имя нельзя начинать с цифры.
4. В именах нельзя использовать знаки пунктуации.
5. В именах вместо пробела используется нижнее подчеркивание _.
6. В именах можно использовать цифры.
3. Стандартные модули в Паскале
Turbo Pascal имеет восемь стандартных модулей. Зарезервированное слово uses дает возможность подключать к программе библиотечные модули.
Программные ресурсы, сосредоточенные в стандартных модулях, образуют мощные пакеты системных средств, которые обеспечивают высокую эффективность и широкий спектр применений системы Turbo Pascal.
Каждый стандартный модуль содержит логически связанную совокупность типов, констант, переменных и подпрограмм, относящихся к определенной области применений. Далее приводится общая характеристика стандартных модулей.
· System
В модуль System входят все процедуры и функции авторской версии языка Pascal, подпрограммы стандартного Паскаля, а также много дополнительных подпрограмм общего характера, в частности, ориентированные на конкретную операционную среду.
· Dos
Модуль Dos содержит средства доступа к операционной системе и по существу является программным представлением системного интерфейса MS-DOS.
· Crt
Модуль Crt обеспечивает практически полный спектр возможностей для доступа к экрану дисплея в текстовом режиме. Кроме того, в данный модуль включены средства чтения информации с клавиатуры (включая расширенные коды клавиш) и простейшего управления звуком.
В модуле Crt находится процедура ClrScr, которая используется для очистки экрана (подключается в теле программы).
· Printer
Модуль Printer содержит единственный интерфейсный злемент – переменную Lst стандартного типа text, системно связанную с логическим устройством PRN (то есть с печатающим устройством, если оно имеется в конфигурации). Использование этой переменной в стандартных процедурах Write и WriteLn приводит к выводу информации на печать.
· Overlay
Модуль предоставляет средства для организации так называемых оверлейных программ, позволяющих обеспечить достаточно эффективное выполнение больших программных систем, размер которых превышает объем доступной оперативной памяти.
· Graph
Модуль Graph объединяет многочисленные программные средства управления графическим режимом работы дисплея. Данный модуль обеспечивает использование всех возможностей наиболее распространенных типов дисплейных адаптеров CGA, EGA, VGA, Hercules и т.п. как для монохромных, так и для цветных дисплеев и позволяет создавать разнообразные и эффективные графические программы.
Модули Turbo3 и Graph3 обеспечивают совместимость с данной версией системы Turbo Pascal тех программ, которые были разработаны для ранней версии 3.0.
Пример
Program moduli;
Uses crt; {Подключение модуля crt}
var <описание переменных>;
begin
clrscr; {Процедура очистки экрана}
<инструкции>;
end.
4. Типы переменных в Паскале
Тип | Диапазон | Объем памяти |
Целые типы | ||
Shortint | -128..127 | 8 бит |
Integer | -32768..32767 | 16 бит |
Longint | -2147483648..2147483647 | 32 бит |
Byte | 0..255 | 8 бит |
Word | 0..65535 | 16 бит |
Логический тип | ||
Boolean | False, True | 1 бит |
Символьный тип | ||
Char | Символы из расширенного набора символов кода ASCII | 1 байт |
Вещественные типы | ||
Real | -1,7*1038..-2,9*10-39; 2,9*10-39..1,7*1038 | 6 байт |
Single | -3,4*1038..-1,5*10-45; 1,5*10-45..3,4*1038 | 7 байт |
Double | -1,7*10308..-5,0*10-324; 5,0*10-324..1,7*10308 | 8 байт |
Extended | -1,1*104932..-1,9*10-4951; 1,9*10-4951..1,1*104932 | 10 байт |
Comp | -263+1..263-1 | 8 байт |
5. Операции в Паскале
a) Арифметические операции бывают унарными и бинарными. К унарным относится операция изменения знака.
В следующей таблице представлены бинарные арифметические операции Паскаля. А и В обозначают операнды, для типов величин использованы обозначения: I — целый, R — вещественный.
Выражение | Типы операндов | Тип рез-та | Операция |
А + В | R, R | R | Сложение |
I,I | I | ||
I, R R, I | R | ||
А - В | R,R | R | Вычитание |
I,I | I | ||
1, R R, I | R | ||
А * В | R, R | R | Умножение |
I,I | I | ||
I, R R, I | R | ||
А/В | R, R | R | Вещественное |
I,I | R | деление | |
I,R R, I | R | ||
A div В | I,I | I | Целое деление |
A mod В | I,I | I | Остаток от целого деления |
b) Стандартные математические функции Паскаля представлены в следующей таблице:
I – integer – целый тип; R – real – вещественный тип.
Обращение | Тип аргумента | Тип рез-та | Функция |
abs (х) | I, R | I, R | Модуль аргумента |
arctan (х) | I, R | R | Арктангенс(радианы) |
cos (х) | I, R | R | Косинус (х в радианах) |
ехр(х) | I, R | R | ех — экспонента |
ln(x) | 1, R | R | Натуральный логарифм |
random | R | Псевдослучайное число в интервале [0, 1 ] | |
random (х) | I | I | Псевдослучайное число в интервале [0,х] |
sin(x) | I, R | R | Синус (х — в радианах) |
sqr(x) | I, R | R | Квадрат х |
sqrt(x) | 1, R | R | Корень квадратный |
Старшинство операций
Мы знаем теперь, что Паскаль допускает использование сложных выражений, в которых могут объединяться арифметические, логические и некоторые другие операции. В этом случае следует учитывать порядок выполнения операций.
Порядок выполнения операций определяется их старшинством, или приоритетом. В следующей таблице приведены приоритеты операций. Первый уровень приоритетов является наивысшим, а четвертый — низшим.
Операция | Приоритет |
not | Первый |
*, /, div, mod, and, shl, shr | Второй |
+, -, or, xor | Третий |
-, o, <, >,<=, >=, in | Четвертый |
При определении порядка выполнения операций следует учитывать следующее:
Операнд, находящийся между двумя операциями с различными приоритетами, относится к операции, имеющей более высокий приоритет.
Операнд, находящийся между двумя операциями с равными приоритетами, относится к той операции, которая находится слева от него.
Выражение, заключенное в скобки, перед использованием вычисляется как отдельный операнд.
Операции с равным приоритетом выполняются слева направо, если этот порядок не изменен с помощью круглых скобок.
c) Дополнительные функции в Паскале
· Inc (Dec)
Функции Inc и Dec используются для увеличения и уменьшения значения аргумента на единицу.
Пример
Inc(7) = 8;
Dec(7) = 6;
· Odd
Логическая функция Odd из модуля System принимает значение «истина» только в том случае, когда аргумент — нечетное число.
Пример
Odd(7) = true;
Odd(6) = false;
· Trunc
Функция возвращает целую часть аргумента как значение целого типа. Дробная часть аргумента при преобразовании не учитывается, т. е. функция не производит округление.
Пример
Trunc(7,2856) = 7;
Trunc(4,99) = 4;
· Round
Функция Round преобразует вещественное значение в ближайшее к нему значение типа LongInt, т. е. округляет аргумент до целого числа.
Пример
Round(7,2856) = 7;
Round(4,99) = 5;
· Int
Функция возвращает целую часть аргумента как значение вещественного типа. Дробная часть аргумента при преобразовании не учитывается, т. е. функция не производит округление.
Пример
Int(7,2856) = 7,0000;
· Frac
Функция возвращает дробную часть аргумента как значение вещественного типа. Дробная часть аргумента при преобразовании не учитывается, т. е. функция не производит округление.
Пример
Frac(7,2856) = 0,2856;
6. Линейное программирование на языке Pascal
a) Начало программы
Тело программы, или раздел инструкций, начинается со служебного слова begin, на алгоритмическом языке оно обозначается словом начало, блок-схема же выглядит как овал:
После слова begin никогда не ставится точка с запятой.
b) Конец программы
Слово begin в программе автоматически подразумевает, что после выполнения некоторых действий будет употреблено служебное слово end. End с точкой после него означает конец всей программы.
На алгоритмическом языке end обозначается словом конец, а в блок-схемах – овалом, как и begin.
c) Команда вывода данных на экран
Для вывода информации на экран используются две команды: Write (вывод данных на экран) и WriteLn (вывод данных на экран, начиная с новой строки).
Окончание -Ln означает переход в новую строку.
Эти команды позволяют выводить на экран текст: write('текст'); writeln('текст') (пользователь увидит на экране надпись, заключенную в одиночные кавычки, в данном случае слово текст). Если использовать эти команды без одиночных кавычек: write(x), writeln(x), на экран выведется значение переменной x.
На алгоритмическом языке команда записывается: вывести, а блок-схема выглядит следующим образом:
d) Команда ввода данных
Здесь также используются две команды: Read (загрузка введенных пользователем данных в переменную) и ReadLn (загрузка введенных пользователем данных в переменную и перевод каретки в новую строку).
Пример Read(x); readln(x) - переменная x приобретет значение, введенное пользователем с клавиатуры.
На алгоритмическом языке команда обозначается словом ввести (ввод), а в блок-схемах – параллелограммом.
e) Математическое действие
Присваивание переменной некоторого вычисляемого значения обозначается следующей записью: <перем.1> := F (переменная 1 задается некоторой формулой, которая может быть как арифметическим выражением, так и функцией от других переменных соответствующего типа).
Математическое действие на алгоритмическом языке записывается так же, как и на языке программирования, а в блок-схеме обозначается прямоугольником:
Пример
Найдем сумму некоторых натуральных чисел a и b.
Решение задачи оформим в виде блок-схемы, на алгоритмическом языке и на Паскале.
Алгоритм
Алгоритм: сумма;
Целые:a, b, s;
Начало
Ввести: a, b;
s:=a+b;
Вывести: s;
Конец.
Блок-схема
Pascal
Program summa;
Uses crt;
Var a,b,s: integer;
Begin
clrscr;
Writeln(‘введите числа’);
Read(a,b);
s:=a+b;
writeln(‘сумма равна ‘,s);
end.
Комментарии
· Вводим переменные целого типа.
· Надпись «введите числа» пользователь увидит на экране.
· Числа a и b вводятся с клавиатуры
Вопросы для самостоятельной работы
1. Какие служебные слова обязательно содержатся в программе?
2. Какие из следующих заголовков можно использовать в Паскале в качестве имен программы: «Задача», «Zadacha1», «1zadacha», «zadacha 1», «zaDAcha_1», «zadacha1: summa»
3. Что входит в состав модуля?
4. Что нужно сделать, чтобы включить в программу процедуру очистки экрана?
5. Какой тип включает в себя наибольший диапазон вещественных значений?
6. Чем отличаются функции div и mod?
7. Расставьте функции в порядке убывания их приоритета: xor, div, in, not.
8. Какая функция могла быть использована в выражении: f(18,759)=1,70000000000E+1
9. Чем отличаются команды write и writeln; read и readln?
10. В каком элементе блок-схемы содержалась бы запись: «inc(n)»?
Задачи
Уровень A
1. Даны числа x и y. Вычислить их разность, произведение и частное.
2. Написать программу вычисления площади прямоугольника со сторонами a и b.
3. Написать программу вычисления объема прямоугольного параллелепипеда по трем его измерениям.
4. Написать программу вычисления площадь поверхности куба по длине ребра.
5. Написать программу вычисления объема цилиндра по радиусу основания и высоте.
6. Написать программу вычисления стоимости покупки, состоящей из нескольких тетрадей и карандашей.
7. Написать программу вычисления площади треугольника, если известны длины двух сторон и угол между ними.
8. Вычислить длину окружности и площадь круга радиусом r.
9. Написать программу вычисления сопротивления электрической цепи, состоящей из двух параллельно соединенных сопротивлений.
10. Дано действительное число x. Написать программу вычисления значения выражения 2 x 4 – 3 x 3 + 4 x 2 – 5 x + 6.
Уровень B
11. Вычислить расстояние между точками с координатами (x 1, y 1) и (x 2, y 2).
12. Найти произведение цифр заданного четырехзначного числа.
13. Найти площадь кольца, ограниченного окружностями радиусами R и r (R > r).
14. Вычислить корни квадратного уравнения ax 2 + bx + c = 0, заданного коэффициентами a, b, c (a ≠ 0 и D >0).
15. Написать программу, которая преобразует введенное с клавиатуры дробное число в денежный формат. Например, число 12,5 должно быть преобразовано к виду 12 руб. 50 коп.
16. Написать программу пересчета величины временного интервала, заданного в минутах, в величину, выраженную в часах и минутах.
Уровень С
17. Найти сумму первых n членов арифметической прогрессии, если известны ее первый член и знаменатель.
18. Найти площадь равнобедренной трапеции с основаниями a и b и углами при основании u (в радианах).
19. Написать программу вычисления величины дохода по вкладу. Процентная ставка (в процентах годовых) и время хранения (в днях) задаются во время работы программы.
20. Написать программу, которая вычисляет площадь треугольника, если известны координаты его вершин.
7. Ветвящиеся алгоритмы
a) Оператор условия
Часто в программах требуется выполнить одно или другое действие в зависимости от того, истинно или ложно некоторое условие. На алгоритмическом языке эта ситуация выглядит следующим образом:
Если <условие>, тогда <действие 1>, иначе <действие 2>
На языке Pascal эта конструкция записывается аналогично:
If <условие> then <действие 1> else <действие 2>;
Условие может быть простым или сложным, т.е. состоящим из нескольких простых, соединенных логическими условиями.
Иногда под каждой ветвью алгоритма нужно провести несколько действий:
В таком случае конструкция в Паскале остается прежней, но блоки действий ограничиваются служебными словами begin и end, причем перед командой else слово end употребляется без точки с запятой:
If <условие> then begin
<действие k1>;
…
<действие kn>;
end
else begin
<действие m1>;
…
<действие kn>;
end;
Запись на алгоритмическом языке остается неизменной:
Если <условие>, тогда <действие k1>;
…
<действие kn>,
иначе <действие m1>;
…
<действие kn>;
Неполное ветвление
В Паскале также возможна конструкция, когда под одной ветвью алгоритма не выполняется никаких действий, т.е. алгоритм сокращается до фразы:
Если <условие>, тогда <действие 1>
Подразумевается, что иначе никакие действия не производятся. Блок-схема тоже несколько упрощается.
Аналогично и на языке Паскаль мы просто отбрасываем часть конструкции (else…) и получаем:
If <условие> then <действие 1>
Так же, как и в полных алгоритмах, здесь можно произвести несколько действий, включая в конструкцию слова begin и end.
If <условие> then begin
<действие k1>;
…
<действие kn>;
end;
Пример
Определить, является ли треугольник со сторонами a, b, c равносторонним.
Решение
Алгоритм: треугольник;
Целые:a, b, c;
Начало
Ввести: a, b, c;
Если a=b=c, то вывод ‘да’, иначе вывод ‘нет’
Конец.
Program treugolnik;
Uses crt;
Var a,b,s: integer;
Begin
clrscr;
Writeln(‘введите стороны’);
Read(a,b,c);
if (a=b) and (b=c) then writeln(‘равносторонний‘) else writeln(‘неравносторонний’);
end.
b) Оператор выбора
В Паскале существует конструкция, которая так же дает возможность выполнить некоторые операции в зависимости от определенного условия, но, в отличие от условного оператора, можно рассматривать не два случая (выполнение или невыполнение условия), а больше. Инструкции выполняются в том случае, если значение выражения или переменной совпадает с константой из соответствующего списка.
case Выражение of
Константа 1: begin
<Инструкции 1>;
end;
Константа 2: begin
<Инструкции 2>;
end;
Константа N: begin
<Инструкции N >;
end;
end;
Если это не так, то выполняются инструкции, следующие после else:
case Выражение of
Константа 1: begin
<Инструкции 1>;
end;
Константа 2: begin
<Инструкции 2>;
end;
Константа N: begin
<Инструкции N >;
end
else <Инструкции>;
end;
Пример
По номеру дня недели определить его название.
Решение
Program dni_nedeli;
uses crt;
var k: integer;
begin
clrscr;
writeln(‘введите номер’);
read(k);
case k of
1: writeln(‘понедельник’);
2: writeln(‘вторник’);
3: writeln(‘среда’);
4: writeln(‘четверг’);
5: writeln(‘пятница’);
6: writeln(‘суббота’);
7: writeln(‘воскресенье’)
else writeln(‘не существует’);
end;
Вопросы для самостоятельной работы
1. Для чего используются ветвящиеся алгоритмы?
2. Сколько ветвей может быть у условного алгоритма? Что такое неполное ветвление?
3. Как записывается на языке Pascal оператор условия с двумя ветвями, под каждой из которых выполняется одно действие; несколько действий?
4. Как записывается на языке Pascal оператор условия с неполным ветвлением? (2 варианта)
5. Как можно включить в алгоритм несколько условий одновременно?
6. В чем отличие применения оператора выбора от оператора условия?
7. Как записывается на языке Pascal оператор выбора? Какие варианты существуют в записи?
8. Как обозначается сложное условие в блок-схеме? На алгоритмическом языке?
9. В каком случае знак препинания после слова end не ставится?
Задачи
Уровень A
21. Написать программу, которая вычисляет частное от деления двух чисел. Программа должна проверять правильность введенных пользователем данных и, если они неверные (делитель равен нулю), выдавать сообщение об ошибке.
Дата добавления: 2015-11-14; просмотров: 43 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
I. Рекомендации по использованию методического пособия | | | Характеристика и особенности языка 2 страница |