Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
OsnovPaskal.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.75 Mб
Скачать

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

Программа состоит из заголовка программы и тела программы (блока), за которым следует точка — признак конца программы. В свою очередь, блок содержит разделы описаний и раздел операторов.

Program <имя программы>;

Label <раздел меток>;

Const <раздел констант>;

Туре <раздел типов>;

Var <раздел переменных>;

Procedure (Function) <раздел подпрограмм>;

Begin

<раздел операторов>

End.

Раздел операторов имеется в любой программе и является основным. Предшествующие разделы носят характер описаний и не все обязательно присутствуют в каждой программе.

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

Раздел описания переменных начинается со слова Var (variables — переменные), за которым следует список переменных. Тип указывается после двоеточия.

Начало и конец раздела операторов программы отмечаются словами Begin (начало) и End (конец). В конце программы обязательно ставится точка. Например:

Program Division;

Var a,b,c,d,m,n: Integer;

Begin

ReadLn(a,b,с,d);

m:=a*d;

n:=b*c;

WriteLn(m,n);

End.

Необходимо строгое соблюдение правил правописания (синтаксиса) программы. В частности, в Паскале однозначно определено назначение знаков пунктуации. Точка с запятой (;) ставится в конце заголовка программы, в конце раздела описания переменных, после каждого оператора. Перед словом End точку с запятой можно не ставить. Запятая (,) является разделителем элементов во всевозможных списках: списке переменных в разделе описания, списке вводимых и выводимых величин

Комментарии. Следующие конструкции представляют собой комментарии и поэтому игнорируются компилятором:

{любой текст, не содержащий символ «}» };

(* любой текст, не содержащий символы «*)»*);

// любой текст, идущий после символов «//» до конца строки.

Буквы русского алфавита употребляются только в комментариях, в литерных и текстовых константах.

Упражнения

  1. Какой из перечисленных разделов обязателен в программе:

Раздел var;

раздел const;

раздел type;

раздел begin .. end;

раздел label?

  1. Какие заголовки программ правильны:

Program Zarplata;

Program Сумма;

Program Summa Nalogov?

  1. Каков результат выполнения программы:

Program Tutor;

Begin

Writeln(5*6);

Writeln(‘ Привет’);

End.

Измените программу, чтобы результат равнялся 35.

  1. Какие из комментариев правильны:

{Программа вычисляет логарифм введенного числа};

(* Это тоже комментарий*);

{{ Комментарий в комментарии }};

(*{ И это тоже комментарий }*);

(*(* Самый последний вариант*)*)?

Типы величин

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

Имя переменной (константы) уникально, выбирается программистом в соответствии со след. правилами:

  • Имя начинается с буквы;

  • Содержит буквы латинского алфавита, цифры и символ подчеркивания;

  • Количество символов не более 255 (не более 40);

  • Нельзя использовать служебные слова в качестве идентификатора.

Тип величины определяет форму внутреннего представления величины, множество допустимых значений величины, множество действий (операций), которые можно выполнять с этой величиной. Среди типов данных различают стандартные (предопределенные разработчиками языка) и пользовательские (определяемые программистом в своей программе). Существуют следующие стандартные типы: целые числа (Byte, Integer), вещественные числа (Real), символьный (Char) , строковый (String), логический (Boolean) типы. Программист может описать свой тип на основе этих базовых в разделе описания типов.

Таблица 1. Типы переменных и констант

Идентификатор

Длина, байт

Диапазон (множество) значений

Целые типы

Integer

2

-32768 ...32767

Byte

1

0...255

Word

2

0... 65535

Shortint

1

-128... 127

Longint

4

-2147483648 ...2147483647

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

Real

6

2,9*10-39... 1,7-1038 (11 - 12)

Single

4

1,5*10-45...3,4-1038 (7-8)

Double

8

5*10-324... 1,7-10308 (15-16)

Extended

10

3,4*10-4932... 1,1*104932 (19-20)

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

Boolean

1

true, false

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

Char

1

все символы кода ASCII

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

Упражнения

  1. Что в списке можно рассматривать как идентификаторы:

FIO, ФИО, 222, X, Y, >=, &, $< Summa, _Rezult

  1. Какие из следующих утверждений неправильны:

для диапазона 1 .. 260 подходит тип byte;

для диапазона 0 .. 75000 подходит тип word;

для диапазона ‘a’ .. ‘z’ подходит тип char;

для вещественных переменных обычно применяют тип real;

значение 32000 входит в тип integer.

  1. Какой идентификатор описывает самый широкий диапазон данных

  2. Определить типы величин:

  • Число столов в кабинете;

  • Вес Снегурочки;

  • Количество самолетов в аэропорту;

  • Скорость ракеты;

  • Ответ на вопрос: есть ли у Вас собака?

  • Текст телеграммы;

  • Сколько звезд в галактике?

  • Расстояние до Альдебарана.

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

Величина

имя

тип

примерное значение

диаметр

d

real

75.2

Объявление переменных. Перед первым использованием переменную следует объявить, т.е. указать СП имя переменной и ее тип (размер ячейки). Это делается в разделе переменных программы

Пример раздела переменных программы:

Var m,n,k: Integer;

x,y,z: Real;

Symbol: Char;

Константы. В отличие от переменных константы не могут изменять своего значения в ходе выполнения программы. Константы объявляются командой Const.

Пример:

Const

Мах=1000;

G=9.81;

Тип константы определяется по контексту, т.е. по форме ее записи в программе. Например: 125- целое десятичное число, $1FF – целое шестнадцатеричное число? 124.67 - вещественное число, -12.9 – отрицательное вещественное число.

Вещественные десятичные числа в форме с плавающей точкой записываются в экспоненциальном виде:m*E+p. Например:

5.18E+02=5.18*102=518

10E-03=10*10-3=0.01

Существуют встроенные константы, например, для вычисления значения числа π3,14 в Pascal используется стандартная функция с идентификатором PI.

Кроме стандартных типов, имеются скалярные типы, определенные самим пользователем: перечисляемый и интервальный типы (не более 256 элементов). Перечисляемый тип – тип данных, заданный списком значений, например:

Type

Gaz=(Ge, C, O, N)

Metall=(Na, K, Li, Cu, Zn);

Var

G1,G2,G3: Gaz;

M1,M2:Metall;

Season:(Winter, Spring, Summer, Autumn);

Интервальный тип позволяет задавать диапазон значений для данной переменной, например:

Type

Days=1 .. 31;

Var

RabDay: Days;

Упражнения

  1. Какие утверждения неправильны:

  • 144 – целое число;

  • 125 – шестнадцатеричное число;

  • 124.98 – вещественное число;

  • $1FF - шестнадцатеричное число;

  • ‘Адрес’ – целочисленная константа;

  • -12.3 – отрицательное вещественное число;

  • ‘Сумма’ – строковое значение?

  1. Какие числа представлены в форме с плавающей точкой:

165, 10.3Е+02, 1234.678, 3789, 5.7Е0.2, 63, 9Е-04

  1. В задаче про корабль и драгоценности объявить все величины.

Основные операторы.

  1. Присваивание. Один из способов записи в переменную значения. Формат оператора.

имя := выражение

где имя – имя переменной,

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

Например:

x:=2

x:=10*x

x:=-x

В левой части оператора может стоять переменная любого типа, но при этом тип переменной и выражения должны совпадать.

Упражнения

  1. увеличить значение переменной а на 2;

  2. удвоить значение переменной t;

  3. изменить знак x на противоположный;

  4. произвести обмен значениями x и y.

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

Операции подразделяются на несколько групп:

• арифметические операции;

• операции отношения;

• логические операции;

• операции с битами информации.

Каждой группе операций соответствуют определенные типы переменных и констант.

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

  • Формула записывается в строку без подстрочных и надстрочных знаков.

  • Для указания порядка действий используют круглые скобки. Внутри скобок действия выполняются слева направо в соответствии со старшинством (приоритетом) операций. Операции одного приоритета выполняются последовательно слева направо.

  • Два знака операций нельзя ставить рядом.

  • Операции с более высоким приоритетом выполняются раньше операций с меньшим приоритетом. Порядок убывания приоритетов:

• вычисление функции;

• унарная операция смены знака (-);

• *, /, div, mod;

• +, -•

  • Несколько записанных подряд операций одинакового приоритета выполняются последовательно слева направо.

  • Часть выражения, заключенная в скобки, вычисляется в первую очередь. (Например, (А+В) * (С—D) — умножение производится после сложения и вычитания.)

  • Не следует записывать выражений, не имеющих математического смысла. Например, деление на нуль, логарифм отрицательного числа и т. п.

  • Арифметические операции.

Арифметические операции могут применяться только к операндам целых и вещественных типов.

К арифметическим операциям относятся: :

+ (сложение),

- (вычитание),

* (умножение),

/ (деление),

div (целочисленное деление), например, 11 div 4=2,

mod (остаток от целочисленного деления), например, 11 mod 4=3,

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

Примеры записи арифметических выражений:

  1. Записать на языке Паскаль:

(x+y)/(x+1)-(x*y-12)/(34+x)

  1. Определить первые цифры двухразрядного числа х и трехразрядного у.

x div 10

y div 100

  1. Определить последнюю цифру произвольного числа b.

b mod 10

Результатом вычисления любого арифметического выражения является число;

Д/З : Упражнения.

  1. Для следующих формул записать соответствующие арифметические выражения на Паскале:

а) а + b x + c y z ; б) [(ах - b)x + c]x-d;

  1. Записать математические формулы, соответствующие следующим выражениям на Паскале:

а) ( p + q ) / ( r + s ) - p * q / ( r * s );

б) lE3+beta/(x-gamma*delta);

в) a / b * ( c + d ) - ( a - b ) / b / с + 1Е-8.

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

  • логические операции:

Операции отношения осуществляют сравнение двух операндов и определяют, истинно или ложно соответствующее отношение между ними.

x > 5; y+3 =< 7; z*z <> 0.

Логические операции выполняются над операндами булева типа. Имеются четыре логические операции:

Not — отрицание;

And — логическое умножение (конъюнкция);

Or — логическое сложение (дизъюнкция).

Xor - операция — исключающее ИЛИ

Операции перечислены в порядке убывания приоритетов. Операции отношения имеют самый низкий приоритет и поэтому записываются в скобках:

(1<=Х) And (X<=50)

Примеры логических операторов присваивания:

1) d:=true;

2) b:=(x>y) and (k<>0);

3) c:=d or b and not(odd(k) and d), (см.Таблица 2. Стандартные арифметические функции.)

  1. Вычислить значения логических выражений:

а) К mod 7= K div 5-1 при К=15;

б) odd(trunc(10*P)) при Р=0.182;

в) not odd(n)при n=0;

г) t and (P mod 3=0) при t=true, P=1010l;

д) (х*у<>0) and (у>х) при x=2, y=l;

е) a or not b при a=false, b=true.

  1. Написать оператор присваивания, в результате выполнения которого логическая переменная t получит значение true , если высказывание истинно, и значение false — в противном случае, для следующих высказываний:

а) х — положительное число;

б) р делится нацело на d;

в) каждое из чисел х, у, z положительно;

г) только одно из чисел х, у, z положительно;

д) целое число а является четным двузначным числом;

е) цифра 5 входит в десятичную запись трехзначного целого числа k;

ж) все цифры данного трехзначного числа различны.

  • Строковые выражения

Строковый тип данных. Строковые выражения.

Строковый тип относится к данным структурированного типа. Строка – это последовательность символов ASCII. Строковое значение заключается в апострофы(‘’). Для определения данных строкового типа используется идентификатор string, например:

Var

Address: String[20];

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

Для хранения строки из n символов отводится n+1 байт( 0-й байт используется для значения текущей длины строки).

К любому символу в строке можно обратиться по его номеру.

Операция сцепления (+) применяется для соединения нескольких строк в одну результирующую строку. Сцеплять можно как строковые константы, так и переменные. Результатом вычисления строкового выражения является строка символов.

Пример: 'ЭВМ' + IВМ' + ' РС’ .

В результате получится строка:

'ЭВМ IBM PC’ .

Длина результирующей строки не должна превышать 255 символов.

Операции отношения =, <, >, <=, >=, <> производят сравнение двух строк, в результате чего получается логическая величина (true или false). Операция отношения имеет более низкий приоритет, чем операция сцепления.

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

Пример:

Выражение Результат

'cosm1 ' < ' cosm2 ' True

'pascal'>’PASCAL’ True

'Ключ_'>'Ключ' True

'MS DOS'='MS DOS' True

Функции

Функция выступает как операнд в выражении. Функция – вспомогательная программа (процедура). Функция вызывается на выполнение из выражения указанием ее имени. Аргументы называются фактическими параметрами и являются в общем случае выражениями арифметического типа. Аргументы записываются в круглых скобках. Функция возвращает в точку вызова (один) результат вычисления функции — величину соответствующего типа.

Функции бывают:

  • стандартные, т.е. встроенные в систему программирования;

  • пользовательские. (объявляются с помощью оператора Function.)

Таблица 2. Стандартные арифметические функции.

Pi

Число  = 3.1415926536Е + 00

Abs(x)

Модуль аргумента х

Arctan(x)

Арктангенс х (радианы)

Cos(x)

Косинус х (х в радианах)

Ехр(х)

ех экспонента

Frac(x)

Дробная часть х

Int(х)

Целая часть х

Ln (x)

Натуральный логарифм х

Random

Псевдослучайное число винтервале [0, 1)

Random(x)

Псевдослучайное число винтервале [0, х)

Round(x)

Округление до ближайшего

Sin(x)

Синус х (х в радианах)

Sqr(x)

Квадрат х

Sqrt(x)

Корень квадратный из х целого

Trunc(x)

Ближайшее целое, не превышающее х по модулю

Например, следующее выражение:

запишется на Паскале следующим образом:

(2* a + Sqrt ( 0.5 * Sin (x+ у))) / (0.2 * С - Ln (х- у))

В Паскале нет операции или стандартной функции возведения числа в произвольную степень. Для вычисления xy рекомендуется поступать следующим образом:

• если у — целое значение, то степень вычисляется через умножение; например, х3 запишется х * х * х; большие степени следует вычислять умножением в цикле;

• если у — вещественное значение, то используется следующая математическая формула:

На Паскале это будет выглядеть так: Exp(y * Ln (x))

Очевидно, что при вещественном у не допускается нулевое или отрицательное значение х. Для целого у такого ограничения нет.

Например,

На Паскале это будет так: Exp (l/3 * Ln ( a + l))

  1. Записать выражения:

(sin(x)+cos(y))/(cos(x)-sin(y))*tan(x*y)

Ln(abs((y-sqrt(abs(x)))*(x-y/(x+sqr(x)/4))))

Cos2x –sin x2 sqr(cos(x))-sin(sqr(x))

+16x cos(x y)-2 cos(x)/(pi-2*x)+16*x*cos(x*y)-2

  1. Округлить число t с точностью до второго знака после запятой.

Round(t*100)/100

  1. Вычислить дробную часть числа x.

x- Trunc(x)

  1. . Вычислить среднюю цифру трехразрядного числа t.

  2. Присвоить целой переменной h значение цифры, стоящей в разряде сотен в записи положительного целого числа к (например, если к = 28796, то h = 7).

  3. Целой переменной S присвоить значение суммы цифр трехзначного целого числа к.

Д/З Упражнения

  1. Почему в Паскале аргумент функции всегда записывают в скобках (например, пишут ln(5), а не ln5)?

  2. Для следующих формул записать соответствующие арифметические выражения на Паскале:

  1. Вычислить выражения

а) trunc(6.9) ; д) round(6.9);

б) trunc(6.2); e) round(6.2);

в) 20 div 6; ж) 20 mod 6;

г) 2 div 5; з) 2 mod 5;

и) 3*7 div 2 mod 7 / 3 - trunc(sin (1)).

  1. Определить тип выражения:

а) 1+0.0; б) 20/4; в) sqr(4);

г) sqrt(16); д) sin(0) ; e)trunc(-3.14).

  1. Если у — вещественная переменная, а n — целая, то какие из следующих операторов присваивания правильные, а какие нет:

а) y:=n+l; д) у=n div 2;

б) n : = y - l ; e) у=у div 2;

в) n:=4 . 0; ж) n=n/2;

г) y : = trunc(у); з) n=sqr(sqrt(n))?

Таблица 3 Стандартные строковые функции

Имя функции

Значение, возвращаемое функцией

Length (S)

определяет текущую длину строки S. Результат — значение целого типа.

Concat (SI, S2, . . ., SN)

выполняет сцепление (конкатенацию) строк S1, . . . , SN в одну строку.

Copy (S, Poz, N)

выделяет из строки s подстроку длиной в N символов, начиная с позиции Poz

Pos ( S1 , S2)

обнаруживает первое появление в строке S2 подстроки S1 . Результат — целое число, равное номеру позиции, где находится первый символ подстроки S1

Процедура

Delete (S, Poz, N)

выполняет удаление N символов из строки s, начиная с позиции Poz.

Процедура

insert (SI, S2, Poz)

выполняет вставку строки SI в строку S2, начиная с позиции Poz.

Str(IBR,St)

преобразует числового значения величины IBR и помещает результата в строку St

UpCase(Ch)

преобразует строчную букву в прописную.

Пример:

Значение S Выражение Результат

'ABCDEFG' Copy(S,2,3) 'BCD'

'ABCDEFG' Copy(S, 4,4) 'DEFG'

Concat ( 'АА' , 'XX' , 'Y' ) 'AAXXY'

' test - 5 ' Length (S) 6

‘(А+В) *С’ Length (S) 7

' abcdef’ Pos (' c d ' , S2) 3

'abcdcdef’ Pos('cd',S) 3

' abcdef’ Pos('k',S2) 0

'abcdefg' Delete (S,3,2) 'abefg'

'abcdefg' Delete(S,2,6) 'a'

'ЭВМ PC Insert('IBM-',S,5) 'ЭВМ IBM-PC

‘Рис. 2’ Insert('N',S,6) 'Рис.N2'

  1. Из слова «железнодорожник» получить слова: «жезл», «колено», «крокодил».

a:=’ железнодорожник

b:= Copy(a,1,2)+ Copy(a,5,1)+ Copy(a, 3,1)

  1. В переменных x,y,z хранятся фамилия, имя и отчество. Записать в переменную а инициалы.

  2. В переменной а хранится фамилия, имя и отчество. Получить в переменную x фамилию, в y – имя, и z – отчество.

  3. Получить слова «правило» из слова «операция», используя процедуры Delete, Insert.

  4. В данном слове произвести обмен первого и последнего символов.

  5. К данному слову присоединить столько «!», сколько в нем имеется букв, например, из строки «УРА» получить «УРА!!!»).

Таблица 4 Функции, связывающие различные типы данных

Функции ord, pred и succ применимы только к порядковым типам. Из простых типов это все, кроме вещественного. Функция ord, применяемая к целому числу, дает его собственное значение. Например,

ord (-35) = - 35 ;

ord(128)=128

Если аргумент целый, то, например, оператор y:=pred(x) эквивалентен у:=х-1, a y:=succ(x) эквивалентен у:=х+1.

Для символьного типа аргумента эти функции дают соответственно предыдущий и следующий символ в таблице внутренней кодировки.

pred (' b ') = ' a ' , a succ (' b ') = ' с'

To же относится и к цифровым литерам:

pred (' 5 ') = ' 4 ' ; succ(' 5 ') = ' 6'

Функция chr(x) является обратной к функции ord(x), если х — символьная величина: chr(ord(x))= х , ord (' a ') = 97 ; chr(97) = ' a '

В некоторых случаях возникает задача преобразования символьного представления числа в числовой тип. Например, нужно получить из литеры ' 5' целое число 5. Это делается так:

N : = o r d (' 5 ') - o r d (' 0 ') ,

где N — целая переменная. Здесь использован тот факт, что код литеры ' 5 ' на пять единиц больше кода ' 0 '.

Булевский тип также является порядковым. Порядок расположения двух его значений таков: false , true. Отсюда справедливы следующие отношения:

ord(false)=0, succ(false)=true,

ord(true)=l, pred(true)=false

Упражнения

  1. Если a=true и х=1, то какое значение получит логическая переменная d после выполнения оператора присваивания:

a) d:=x<2;

б) d:=not a or odd(x);

в) d:=ord(a)<>x

  1. Пусть х, у, z — вещественные переменные. Как вы думаете, какую задачу решает следующий оператор:

z:=x*ord(х>=у)+y*ord(y>x)

Ответ такой: z — max(x, у).

  1. Строка представляет собой запись целого числа. Перевести ее в соответствующую величину целого типа.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]