12+  Свидетельство СМИ ЭЛ № ФС 77 - 70917  Пользовательское соглашение      Контактная и правовая информация
 
Педагогическое сообщество
УРОК.РФ
УРОК
Материал опубликовал
Ольга18

 ЯЗЫК ПРОГРАММИРОВАНИЯ ПАСКАЛЬ

I. Общий вид программы на языке Паскаль

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

TYPE <описание дополнительных переменных>;

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

FUNCTION <функции>;

PROCEDURE <процедуры>;

BEGIN

<список операторов>

END.

Имя программы состоит из английских букв и цифр и начинается с буквы. Каждый оператор заканчивается ";". Знак ";" не ставится только после оператора BEGIN.

Строки от PROGRAM до BEGIN - называются заголовком программы и содержат раздел описаний.

II. Алфавит

- буквы английского алфавита от A до Z и от а до z;

- буквы русского алфавита от А до Я и от а до я;

- специальные символы: ; ! " # $ % & ' ( ) _ = : ?;

- арифметические операции: "+" (сложение), "-" (вычитание), "/" (деление), "*" (умножение);

- операции сравнения: "<" (меньше), ">" (больше), "<=" (меньше рав­но), ">=" (больше равно), "<>" (неравно);

- логические операции: "and" (и), "or"(или), "not" (не).

III. Стандартные математические функции

Abs(x) – Модуль числа х

Cos(x) – Косинус

Sin(x) – Синус

Sqr(x) – Квадрат х

Sqrt(x) – Корень квадратный из х

Int(x) – Целая часть х

Frac(x) – Дробная часть х

Round(x) - Округление до ближайшего целого

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

х MOD у – Остаток от деления

х DIV у – Целочисленное деление

Random – Псевдослучайное число [0,1]

Random(x) – Псевдослучайное число [0,х]

Arctan(x) – Арктангенс

Exp(x) – экспонента (ех)

Ln(x) – Натуральный логарифм

 

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

1. Константы – такие данные, которые не изменяются в процессе выполнения программы.

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

Типы данных

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

Все переменные простого типа делятся на числовые и строковые.

Запишем в тетради следующую таблицу:

Тип

Обозначение в Паскале

Диапазон значений

Числовой

   

А) Целый

integer

-128…127

Б) Вещественный

real

2,9*10-39…1,7*1038

Строковый

   

А) Символьный

char

1 символ

Б) Строковый

string

от 0 до 255 символов

Логический

boolean

true (истина), false (ложь)

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

Если точка отсутствует, то число считается целым.

Перед числом может стоять знак «+» или «-». Если знака нет, то число считается положительным.

Описание переменных

Описание переменных происходит по следующей схеме:

<имя переменной>:<тип переменной>;

Например,

VAR a,b:integer; S:real; t:string;

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

Оператор присваивания применяется для формирования нового значения переменной. Она аналогична равенству в математике.

Запись оператора (синтаксис):

<имя переменной> := <выражение>;

Требования к оператору:

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

2. Слева всегда должно стоять имя переменной.

3. Типы левой и правой частей должны совпадать.

Исполнение оператора: переменной, стоящей в левой части, присваивается определенное значение в виде выражения или константы (постоянного зна­чения), стоящих в правой части.

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

В данной задаче используются четыре величины:

а, b - стороны треугольника, Y - угол треугольника, данный в ради­анах, S - площадь треугольника. Все величины могут принимать дробное значение, поэтому имеют тип real.

PROGRAM treugolnik;

VAR а, b, Y, S : real;

BEGIN

S:=(а*b*sin(Y))/2;

Пример 2. Записать заголовок программы и оператор присваивания для вычисления суммы квадратов четырех натуральных чисел.

В данной задаче используются пять величин:

n1, n2, n3, n4 - натуральные числа, C - их сумма. Все числа нату­ральные по условию задачи, поэтому их тип integer.

PROGRAM summa;

VAR n1, n2, n3, n4, C : integer;

BEGIN

C:=n1*n1 + n2*n2 + n3*n3 + n4*n4;

В операторе присваивания в этой программе квадрат числа можно записать как n*n или как SQR(n).

VI. Оператор вывода информации на экран.

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

WRITE(<информация>);

Информацией может быть текст (текст должен быть заключен в специ­альные знаки, которые называются "апостроф"), имя переменной (тогда оно ставится без "апострофов") или комбинация этих видов информации. Исполнение команды: на экран выводится та информация, которая стоит в скобках.

Например,

WRITE('Уравнение не имеет корней.'); - на экран выводится предложение, заключенное в апострофы.

WRITE(x1); - на экран выводится значение переменной x1.

WRITE('Площадь треугольника равна', S); - на экран выводится предложение, заключенное в апострофах, и значение переменной S.

Для того, чтобы после вывода информации курсор перемещался в начало следующей строки, в команде вывода добавляются буквы LN:

WRITELN('текст');

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

WriteLn(‘Ответ’, 2*x + 9*y/(3*t));

VII. Оператор ввода информации с клавиатуры.

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

READ(<имена переменных>);

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

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

Для того, чтобы значения переменных можно было вводить через клавишу ENTER, и после исполнения оператора курсор перешел в начало следующей строки, к слову READ добавляют буквы LN: ReadLn(a, b, c);

Требования к оператору:

1. количество вводимых с клавиатуры значений должно совпадать с коли­чеством переменных, указанных в операторе;

2. типы и порядок вводимых значений должны совпадать с типами и порядком переменных в операторе.

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

В данной программе будут использованы переменные: день (d), месяц (m), год (g). Типы этих переменных: день и месяц - литерные величины типа string, год - целое число (тип - integer).

PROGRAM data;

VAR d, m : string, g : integer;

BEGIN

WRITE ('Введите день');

READLN (d);

WRITE ('Введите месяц');

READLN (m);

WRITE ('Введите год');

READLN (g);

WRITELN ('Сегодня:', d, ‘ ‘, m, ‘ ‘, g);

END.

Пример 4. Составить программу вычисления суммы трех вещественных чи­сел и вывести результат на экран.

В этой программе используются четыре переменные: три числа и их сум­ма. Все переменные имеют тип real.

PROGRAMM summa;

VAR a, b, c, S : real;

BEGIN

WRITE ('Введите числа');

READLN (а,b,c);

S:= а + b + c;

WRITELN ('Сумма чисел равна', S);

END.

VIII. Ветвление

Оператор условного перехода (оператор ветвления) имеет следующий вид:

IF <условие>

THEN <оператор 1>

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

В переводе на русский язык слова IF, THEN, ELSE означают: "если", "то", "иначе". Условие, записанное в строке If, является сравнением и может содержать знаки “=”, “<”, “>”, “<=”, “>=”, “<>”.

Требования к оператору:

1. Если условие состоит из нескольких неравенств, то каждое из них заключается в скобки и между ними ставится союз and или or.

Например,

If (a>0) and (b>0)

2. Если в строках Then и Else выполняется более одного оператора, то добавляются операторные скобки Beginend, внутри которых сохраняются точки с запятой.

Например,

Then begin

X := 2 * T – 4 * Z;

Y := SQRT(ABS(7 * T – 3 * Z)); end

3. Если задача на ветвление, то количество Then и Else должны совпадать.

Если задача не на ветвление, то строка ELSE может отсутствовать. Такое ветвление называется неполным.

Ис­полнение оператора: проверяется условие; если оно имеет значение "истинно", то выполняется оператор или серия операторов, стоящая после слова THEN. Если условие имеет значение "ложно", то выполняется оператор или серия операторов после слова ELSE или ничего не исполняется, если строка ELSE отсутствует.

Существует вложенное ветвление, когда в строке THEN или ELSE стоит еще одно ветвление. Такое ветвление применяется, если в задаче больше двух условий.

Например,

IF <условие 1>

ТHEN < оператор 1>

ELSE IF <условие 2>

THEN < оператор 2>

ELSE < оператор 3>

Существуют и другие варианты вложенного ветвления.

В записи ветвления могут быть допущены следующие ошибки:

1. Отсутствие операторных скобок для исполнения серии команд в стро­ках THEN и ELSE.

2. Поставлен знак ";" там, где он не нужен, или не поставлен в конце ветвления.

3. Условие записано неправильно: отсутствие скобок при составном ус­ловии (например, (а>0) and (а<9)), тип переменной и значения в условии не совпадает.

Пример 5. Составить программу вычисления корней квадратного уравне­ния ах2+bx+c=0.

В данной задаче используются следующие переменные: коэффициенты уравнения а,b,c; дискриминант уравнения D; корни уравнения х1,х2. Все эти величины имеют тип real.

PROGRAM KWUR;

VAR a,b,c,D,x1,x2 : real;

BEGIN

WRITELN ('Введите коэффициенты уравнения');

READLN (a, b, c);

D:=b*b-4*a*c;

IF D>0

THEN BEGIN

x1:=(-b + sqrt((x)/(2*a);

x2:=(-b - sqrt((x)/(2*a);

WRITELN('Корни уравнения:',х1, ‘ ‘,х2);

END

ELSE IF D=0

THEN WRITELN ('Корень уравнения, (-b)/(2*а))

ELSE WRITELN('Корней уравнения нет');

END.

Пример 6. Составить программу решения системы уравнений:

х2+2х-1, если х<-2;

y= х2-5х+4, если -2<=х<=8;

7х-9, если х>8.

В данной программе используются две переменные х и у типа REAL.

PROGRAM sistema;

VAR х, у : real;

BEGIN

WRITELN ('Введите значение х');

READLN (x);

IF x<-2

THEN у:=х*х+2*х-1

ELSE IF (x>=-2)and(x<=8)

THEN у:=x*x-5*x+4

ELSE у:=7*x-9

WRITELN ('Значение у равно', у);

END.

Пример 7. Составить программу вычисления площади фигуры по заданным значениям формы и размерам.

В данной задаче используются следующие величины: форма фигуры (круг, квадрат, правильный треугольник) - переменная f, ее тип - string; раз­меры фигуры: радиус, длина стороны, высота треугольника, площадь фигуры - переменные r,a,h,S. Тип этих переменных real.

PROGRAMM ploshad;

VAR f:string; a,r,h,S : real;

BEGIN

WRITE ('Введите форму фигуры ');

READLN (f);

IF f='круг'

THEN BEGIN

WRITE('Введите радиус круга');

READLN (r);

S:=3.14*r*r;

WRITELN ('Площадь круга равна ', S);

END

ELSE IF f='квадрат'

THEN BEGIN

WRITE ('Введите сторону квадрата ');

READLN (a);

S:=a*a;

WRITELN ('Площадь квадрата равна ', S2);

END

ELSE BEGIN

WRITE ('Введите сторону и высоту треугольника');

READLN (a,h);

S:=(a*h)/2;

WRITELN ('Площадь треугольника равна ',S:3:2);

END;

END.

IX. Выбор.

Оператор выбора имеет вид:

case <имя переменной> of

<константное выражение 1>:<оператор 1>;

<константное выражение 2>:< оператор 2>;

..............

<константное выражение n>:< оператор n>;

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

end;

Требования к оператору:

- имя переменной, стоящее после слова "case", может быть только типа integer, string или char;

- типы константных выражений N1,N2,...Z1,Z2,... должны быть совмести­мы с типом имени переменной после слова "case".

Выполнение оператора происходит следующим образом: значение имени переменной сравнивается со значениями константных выра­жений. Если значение переменной совпадает с одним из константных выра­жений, то выполняется соответствующая команда, на этом выполнение опе­ратора "case" заканчивается. Если же такого не произошло, то выполняет­ся команда, указанная после слова "else" или не выполняется ничего, ес­ли строка "else" отсутствует.

Примеры:

1. case Operator of plus : z:=x+y;

minus : z:=x-y;

times : z:=x*y;

else z:=x/y;

end;

2. case i of

0,2,4,6,8 : writeln('Четное число');

1,3,5,7,9 : writeln('Нечетное число'); end;

Пример 8. Для поступления на факультеты ЯГПИ надо набрать следующие

баллы: ФМФ - 13 баллов, EГФ - 14 баллов, ИФФ - 14.5 баллов, ФИЯ - 15

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

В данной задаче одна переменная - названия факультетов, она имеет тип string.

program fakultet;

var fakultet: string;

begin

write ('Введите название факультета');

readln (fakultet)

case fakultet of

ФМФ’ : writeln ('Kоличество баллов : 13');

ЕГФ’ : writeln ('Количество баллов : 14');

ИФФ’ : writeln ('Количество баллов : 14,5');

else writeln ('Количество баллов : 15'); end;

end.

Ц И К Л Ы.

1. Цикл c параметром

Цикл "для" имеет вид:

for <параметр>:=<нач.знач.> to <кон.знач.> do

begin

<тело цикла>;

end;

Выполнение цикла "for" происходит следующим образом:

Вначале параметру присваивается начальное значение; происходит выполнение операторов, стоящих в теле цикла. Затем параметру присваивается следующее зна­чение и снова выполняются операторы и т.д. Выполнение операторов в теле цикла происходит до тех пор, пока параметр не примет значение, равное следу­ющему после конечного значения число. Как только параметр примет значение, равное следующему после конечного значения, программа выходит из цикла.

Требования к циклу с параметром:

1. Параметр цикла всегда является целым числом и изменяется на единицу.

2. Если в теле цикла выполняется более одного оператора, то добавляются операторные скобки beginend, внутри которых сохраняются точки с запятой.

3. Если начальное значение больше конечного, то слово To заменяется на Downto.

Пример 9.

Одна штука некоторого товара стоит х руб. Сколько рублей стоят 2, 3, 4, …, 20 штук этого товара?

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

Program Tovar;

Var x:real; i:integer;

Begin

Writeln(‘введите цену одной штуки товара’);

Readln(x);

For i:=1 to 20 do

Writeln(i , ‘штук стоят ‘ , x*i , ‘руб.’);

END.

Пример 10. Известны оценки в аттестате выпускника по 12 предметам. Найдите его средний балл.

Для того, чтобы найти средний балл, сначала надо найти сумму всех оценок, затем разделить ее на 12. Сумма вычисляется путем накапливания (S := S+…)

program ball;

var a, S:real; i:integer;

begin

S :=0;

for i:=1 to 12 do begin

writeln(‘введите оценку по ‘, i , ‘ предмету’);

readln(a);

S := S + a; end;

writeln (Среднее арифметическое равно ', S/12);

end.

Пример 11. Дана последовательность 10 натуральных чисел. Найти среди них количество четных чисел.

Program chet;

Var a, i, kol: integer;

Begin

kol:=0;

For i:=1 to 10 do begin

Readln (a);

If a mod 2 = 0

Then kol:=kol+1; end;

Writeln(‘количество четных ‘, kol);

END.

2. Цикл с предусловием

Цикл с предусловием имеет вид:

while <условие> do begin

<тело цикла>;

end;

Требования к циклу с условием:

1. Условие представляет собой некоторое сравнение.

2. Переменная, стоящая в условии, перед началом цикла должна иметь начальное значение.

3. Переменная, стоящая в условии, в теле цикла должна каким-либо образом изменяться (уменьшаться или увеличиваться, вводиться с клавиатуры).

Выполнение цикла "пока":

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

Пример 12. Дано натуральное число. Определить, встречается ли в нем цифра «4».

Для того, чтобы определить, встречается в числе цифра «4», необходимо выделять последнюю цифру числа и сравнивать ее с 4. Для этого необходимо воспользоваться функцией mod. Затем эту цифру необходимо «вычеркнуть» из числа. Для этого надо воспользоваться функцией div. «Отбрасывание» последней цифры в числе и является изменением исходного значения.

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

 

program chislo;

var a, c, k:niteger;

begin

k:=0;

writeln (‘введите число’);

readln (a);

while a <> 0 do begin

c := a mod 10;

if c = 4

then k := k+1;

a := a div 10; end;

if k = 0

then writeln (‘цифра 4 не встречается’)

else writeln (‘цифра 4 встречается ’, k ‘ раз’);

END.

Пример 13. Дана последовательность натуральных чисел, оканчивающаяся нулем. Найдите среднее арифметическое четных чисел.

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

Program chisla;

Var a, k, s:integer;

Begin

Writeln (‘Введите первое число’);

Readln (a);

s :=0;

While a <>0 do begin

If a mod 2 = 0

Then begin

s := s + a;

k := k + 1; end;

writeln (‘Введите следующее число’);

readln (a); end

writeln (‘Среднее арифметическое ’, s/k);

END.

3. Цикл с постусловием

Общий вид цикла с постусловием:

repeat

<тело цикла>;

until <условие>;

Требования к циклу с условием:

1. Условие представляет собой некоторое сравнение.

2. Переменная, стоящая в условии, перед началом цикла должна иметь начальное значение.

3. Переменная, стоящая в условии, в теле цикла должна каким-либо образом изменяться (уменьшаться или увеличиваться, вводиться с клавиатуры).

4. Цикл выполняется, пока условие в строке until ложно. Как только условие становится истинным, машина выходит из цикла.

Рассмотрим решение тех же задач, что и для цикла с предусловием.

Пример 14. Дано натуральное число. Определить, встречается ли в нем цифра «4».

program chislo;

var a, c, k:niteger;

begin

k:=0;

writeln (‘введите число’);

readln (a);

repeat

c := a mod 10;

if c = 4

then k := k+1;

a := a div 10;

until a=0

if k = 0

then writeln (‘цифра 4 не встречается’)

else writeln (‘цифра 4 встречается ’, k ‘ раз’);

END.

Пример 15. Дана последовательность натуральных чисел, оканчивающаяся нулем. Найдите среднее арифметическое четных чисел.

Program chisla;

Var a, k, s:integer;

Begin

Writeln (‘Введите первое число’);

Readln (a);

s :=0;

repeat

If a mod 2 = 0

Then begin

s := s + a;

k := k + 1; end;

writeln (‘Введите следующее число’);

readln (a);

until a=0;

writeln (‘Среднее арифметическое ’, s/k);

END.

МАССИВЫ

Массивы - структурированный тип данных, представляющий из себя набор однотипных пронумерованных компонент. Например, список учеников в классе представляет собой набор фамилий с номерами - вид массива.

Массив можно представить в виде некоторой таблицы. Если в таблице одна строка, то это одномерный массив. Если несколько – то двумерный.

В 9 классе изучается только одномерный массив.

ОДНОМЕРНЫЕ МАССИВЫ

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

М:

i: 1

2

3

4

n

-3.8

9.2

11.4

-5.2

-13

Для того, чтобы с массивом можно было работать, надо, чтобы он имел имя (М); каждый элемент должен иметь свой номер (индекс) и значение.

Обращение к элементу массива:

M[1] := -3.8;

M[2] := 9.2;

Вызов элемента массива в общем виде: M[i], где i – индекс элементов массива.

а) Описание (объявление) массива

Существует два способа описания (объявления) массива.

I способ. Описание массива происходит между строками program и var. Для работы с массивом вводят дополнительный тип:

type tabl = array [<нач.зн.>..<кон.зн.>] of <тип компонент>;

var M:tabl;

II способ. Описание массива происходит в строке Var.

Var M : array [<нач.знач.> .. <кон.знач.>] of <тип компонент>;

Для того, чтобы программа могла быть применима для любого количества элементов массива, конечное значение принимают равным n, а значение переменной n дается в строке const (после строки program):

Например, const n = 10;

б) Ввод элементов массива с клавиатуры.

for i:=1 to <кон.зн.> do

readln(M[i]);

в) Вывод элементов массива на экранможет осуществляться двумя способами: в строку и в столбец.

1) вывод в строку:

For i:=1 to <кон.зн.> do

Write(M[i], ‘ ‘);

Writeln;

2) вывод в столбец

for i:=1 to <кон.зн.> do

writeln (i ‘ элемент ’ , M[i]);

Пример 16. Найти среднее арифметическое элементов массива.

Program massiv;

Const n = 15;

Var A:array[1..15] of real; S:real; i:integer;

Begin

Writeln(‘введите элементы массива’);

For j:=1 to n do

Readln(A[i]);

S:=0;

For i:=1 to n do

S := S + A[i];

Writeln (‘Среднее арифметическое’ , S/n);

END.

Пример 17. Найти наибольший элемент массива.

Program massiv_2;

Const n = 15;

Var A:array[1..15] of real; max:real; i:integer;

Begin

Writeln(‘введите элементы массива’);

For j:=1 to n do

Readln(A[i]);

Max := A[1];

For i:=1 to n do

If A[i] > max then max := A[i];

Writeln (‘Наибольшее значение’ , max);

END.

Опубликовано

Комментарии (0)

Чтобы написать комментарий необходимо авторизоваться.