Pascal: проверь себя (решенные задачи, операторы цикла)

Задание 20.2

Напишите про­грам­му для ре­ше­ния сле­ду­ю­щей задачи. Камера на­блю­дения ре­ги­стри­ру­ет в ав­то­ма­ти­че­ском ре­жи­ме ско­рость про­ез­жа­ю­щих мимо неё автомобилей, округ­ляя зна­че­ния ско­ро­сти до целых чисел. Не­об­хо­ди­мо опре­де­лить ми­ни­маль­ную за­ре­ги­стри­ро­ван­ную ско­рость автомобиля. Если ско­рость хотя бы од­но­го ав­то­мо­би­ля была боль­ше 80 км/ч, вы­ве­ди­те «YES», иначе вы­ве­ди­те «NO».Программа по­лу­ча­ет на вход число про­ехав­ших ав­то­мо­би­лей N (1 =< N =< 30), затем ука­зы­ва­ют­ся их скорости. Зна­че­ние ско­ро­сти не может быть мень­ше 1 и боль­ше 300.Программа долж­на сна­ча­ла вы­ве­сти ми­ни­маль­ную скорость, затем YES или NO.Пример ра­бо­ты программы:

Входные данныеВыходные данные
47469639663YES

Что необходимо знать для решения задания 20.2 ОГЭ по информатике 9 класс?

  • Типы переменных.
  • Оператор цикла FOR
  • Условный оператор IF

Пример решения верного решения на 2 балла.

var a, b, c, min: integer; //Объявляем переменные целочисленного типа d: boolean;//объявляем переменную логического типа. Для определения верности условия (скорость больше 80 км/ч)begin//******инициализируем переменные******* min := 300;//переменная для нахождения минимальной скорости. По условию задачи, скорость не может быть более 300 a := 0;//обнуляем переменную c := 0;//обнуляем переменную d := false;//задаём исходное логическое значение 0 readln(a);//чтение с клавиатуры числа количества машин for b := 1 to a do //задаём цикл от 1 до a количества машин begin readln(c);//считываем значение скорости if c <= min then//Задаём условие, которым будем находить минимальную скорость. min := c;//Каждый раз присваиваем значение переменной min наименьшую введённую скорость if c > 80 then//производим проверку была ли скорость больше 80 d := true;//если была скорость более 80, то переменная d меняет логическое значение на true (1) end; writeln(min);//Выводим минимальную скорость if d = true then //Проверяем значение логической переменной writeln(‘YES’)//Выводим YES, если логическая переменная = true else writeln(‘NO’);//выводим NO, если логическая переменная не равна true readln;//Чтобы программа не закрывалась

end.

Скачать исходник программы задание 20.2 ОГЭ:

Программу можно написать и проще.

Пример решения задания в упрощённой форме.

var a, b, c,d, min: integer;begin min := 300; readln(a); for b := 1 to a do begin readln(c); if c <= min then min := c; if c > 80 then d := 1; end; writeln(min); if d = 1 then writeln(‘YES’) else writeln(‘NO’); readln;

end.

В чём разница решений?

Во втором, упрощённом варианте, не инициализированы переменные. Это не обязательно в PascalABC.Net, так как переменные изначально имеют значения «0». Но делать это желательно, так как это считается правилом хорошего тона. Плюс ко всему в других версиях интерпретатора Pascal без инициализации код работать не будет.

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

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

Итак, что же входит в «иерархию» данной программы?

По своей структуре этот язык делится на 3 раздела:

  • название;
  • данные;
  • действия.

Обратите внимание: переменные нужно перечислять через запятую, а после через «:» указать их тип. Завершить написанное «;».. Действия начинаются с «begin» и заканчиваются «end» с точкой

Действия начинаются с «begin» и заканчиваются «end» с точкой.

Структуру можно представить так:

Кстати, операторы между собой разделяются точкой с запятой.

Вывод

Как таковых операторов вывода в этом языке нет, но есть специальные слова, которые помогают запустить необходимые функции. Это write, writeln.

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

Ввод

Для ввода существуют тоже свои слова: read, readln (= readkey).

Они отличаются друг от друга точно так же, как и предыдущие операторы (при выводе).

Целый тип данных

Выделяют 3 основных вида:

  1. Integer.
  2. Byte.
  3. Longint.

С ними также проводят простые действия:

  • сложение – «+»;
  • вычитание – «-»;
  • умножение – «*»;
  • деление – «div».

Кроме того, разрешено проводить отношения и сравнения (больше или равно — ˃ =).

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

К таким переменным относятся дробные числа (например, число пи). Здесь они называются real.

Что нужно помнить? Чтобы ввести формулу дробного числа, надо вместо запятой использовать точку. Для записи степеней (х * 10у) 10 заменяется Е и число имеет запись:

х Е у.

С ними можно выполнять как самые простые арифметические действия, так и более сложные:

  • квадратный корень – sqrt;
  • абсолютная величина – abs;
  • квадратичная функция – sqr;
  • синус – sin;
  • косинус – cos;
  • арктангенс – arctan;
  • натуральный логарифм – ln;
  • экспонента – exp.

Обработка данных

Помимо перечисленных выше функций (в предыдущих 2 пунктах), есть и другие:

  • целая часть числа – int;
  • дробная часть числа – frac;
  • получение целой части числа – trunc;
  • округление до целого – round;
  • преобразование порядкового типа – ord;
  • преобразование кода в символьный тип – chr;
  • определение предыдущего значения величины – pred;
  • определение последующего значения величины – succ.

Математические операции

Математические функции и операции были рассмотрены при разборе целых и вещественных данных.

Остановимся на типах констант и переменных. Какие они бывают?

Простые включают в себя подтипы:

  • целые – integer;
  • логические – boolean;
  • символьные – char;
  • перечисляемые;
  • интервальные;
  • вещественные.

Строковые записываются командой string. Ссылочные представлены соответствующей формой.

Структурированные делят на:

  • массивы – array;
  • записи – record;
  • множества – set;
  • файл – file.

Для каждого типа характерны свои наборы операций.

Условия

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

Схема представлена на рисунке ниже.

Логические операции

Операции основаны на истине факта или его лжи.

Выделяют 3 вида таких функций:

  1. Odd – если нечетное число, то истина (наоборот – ложь).
  2. Eoln – истина на конце строки (в другом месте – ложь).
  3. Eof – истина в конце файла (в другом месте – ложь).

Объявление множеств

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

Размер множества в Turbo Pascal всегда ограничен некоторым предельно допустимым количеством элементов. Во множествах допускаются только такие элементы, порядковые значения которых не выходят за границы 0..255. Для целочисленных множеств это означает, что в них могут присутствовать только числа от 0 до 255. Отрицательные элементы множеств в Turbo Pascal не допускаются. Поэтому базовыми типами не могут быть типы shortint, integer, longint. Если же необходимо множество целочисленных объектов, то базовый тип должен объявлен как диапазон типа byte. Для множеств, содержащих символы, подобных затруднений нет, поскольку базовым типом для них является char (а в нем 256 значений с порядковыми номерами от 0 до 255).

В математике для обозначения множества используют фигурные скобки (например, {4, 7, 12}), в Паскаль — квадратные (например, ). Порядок элементов во множестве не имеет значения. Так, записав или , мы будем иметь дело с одним и тем же множеством. Более того, многократное повторение одного и того же элемента не меняет множество. Например, и – это одно и то же множество.

По форме записи объявление переменной типа множество сходно с объявлением одномерного массива:

var
	имя set of тип;

Например, объявление переменной , рассматриваемой как множество с базовым типом char, имеет вид:

var
	ch set of char;

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

Можно сначала объявить тип множества, а потом использовать его для объявления переменных:

type
	t_ch = set of char;
var
	ch1, ch2 t_ch;

Довольно часто в качестве базового типа множества используется тип перечисления или некоторый его диапазон:

type
	week_days = (Mon, Tue, Wed, Thu, Fri);
var
	work_days set of week_days;
	lett set of 'A'..'Z';

Объявление переменной-множества не дает ей определенного значения.

Pascal операторы цикла — While

While 1: Определите значение переменной P после выполнения следующего фрагмента программы:

1
2
3
4
5
P=1; i=3;
while i <= 9 do begin
  P = P * (i div 3);
  i = i + 1;
end;

Варианты:1) 12) 33) 94) 24

Проверить:

While 2: Определите значение переменной S после выполнения следующего фрагмента программы:

1
2
3
4
5
S=; i=7;
while i > 1 do begin
  S = S + i div 2;
  i = i - 1;
end;

Варианты:1) S = 02) S = 73) S = 124) S = 24

Проверить:

While 3: Даны целые положительные числа N и K. Используя только операции сложения и вычитания, найти частное от деления нацело N на K, а также остаток от этого деления.

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

While 4: Дано целое число N (> 0). С помощью операций деления нацело и взятия остатка от деления определить, имеется ли в записи числа N цифра «2». Если имеется, то вывести TRUE, если нет — вывести FALSE.

Проверить:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
var
numberinteger;
flag boolean;
begin
writeln('введите целое число (number>0) number=');
readln(number);
flag=false;
while (number div 10)> do
begin
     if (number mod 10) = 2 then flag=true;
     number=number div 10;
end;
writeln(flag);
end.

While 5:
Дано целое число N (>1). Найти наибольшее целое число K, при котором выполняется неравенство 3K<N

* Из задачника М. Э. Абрамян (While10)

Предлагаем посмотреть разбор задачи на видео:

While 6:
Дано число A (>1). Вывести наибольшее из целых чисел K, для которых сумма 1+1/2+…+1/K будет меньше A, и саму эту сумму

* Из задачника М. Э. Абрамян (While14)

Проверить:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
var
  TempReal;
  A,K Integer;
begin
  Write('Введите A: ');
  Readln(A);
  K=;
  Temp=;
  while Temp<=A do
  begin
   inc(K,1);
   Temp=Temp+1K;
  end;
  Writeln(K-1,' ',Temp-1K);
end.

While 7:
Дано целое число K и набор ненулевых целых чисел; признак его завершения — число . Вывести количество чисел в наборе, меньших K

* Из задачника М. Э. Абрамян (Series14)

Проверить:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
var
  i,R,KLongint;
begin
write('Введите K : ');
readln(K);
R=1;
i=;
  while(R<>) do
   begin
     write('Введите число из набора: ');
     Readln(R);
     if R<K then i=i+1;
   end;
  i=i-1;
  Writeln(i);
  readln;
end.

While 8:
Спортсмен-лыжник начал тренировки, пробежав в первый день 10 км. Каждый следующий день он увеличивал длину пробега на P процентов от пробега предыдущего дня (P — вещественное, 0<P<50). По данному P определить, после какого дня суммарный пробег лыжника за все дни превысит 200 км, и вывести найденное количество дней K (целое) и суммарный пробег S (вещественное число).

* Из задачника М. Э. Абрамян (While16)

Проверить:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
var
  P, S, DReal;
  K Integer;
begin
  Write('Введите процент: ');
  Readln(P);
  K=1;
  D=10;
  S=10;
  while S<=200 do
  begin
   inc(K,1);
   D=D+D*P100;
   S=S+D;
  end;
  Writeln(K,' ',S);
end.

Паскаль ОГЭ как решать?

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

Разберем несколько вариантов задач, с которыми придется столкнуться на экзамене по информатике в 9 классе.

Решение:

Читая условие задачи, явно видим, что нам необходим цикл с предусловием. А также нам нужно будет отбирать четные числа, да еще и кратные 5. Следовательно, в программе будем записывать два условия:

  1. определение четности числа: a mod 2 =0
  2. определение кратности 5: a mod 5 =0

Причём эти условия должны выполняться одновременно. А значит, нужно составить из них одно сложное условие, используя логическую операцию — умножение. Вот так:

(a mod 2 =0) and (a mod 5 =0)

Теперь, для большего понимания, сделаем блок-схему

Как это работает?

  1. Программа получает на вход число а.
  2. Далее оно проходит через условие окончания цикла a<>0. Если условие не выполняется, то заходим внутрь цикла и проверяем число а по критериям задачи.
  3. Если критерии выполнены, то число заносится в счетчик (k+1).
  4. Далее вводится следующее значение числа а (новое число).
  5. Идем по стрелке на проверку условия цикла. Если оно  выполняется, то повторяем предыдущие шаги внутри цикла.
  6. При невыполнении (a=0) выводим полученное значение k и завершаем программу.

Текст программы на Паскале:

var a, k integer;
begin 
  k=;
  readln(a);
   while a<> do
    begin
     if (a mod 5=) and (a mod 2=) then k=k+1;
     readln(a);
    end;
  writeln(k)
end.

Решение:

Читая условие задачи, явно видим, что нам необходим цикл с параметром. А также нам нужно будет сумму только тех чисел,  которые оканчиваются цифрой 3. Следовательно, в программе будем записывать одно условие: a mod 10 =3 Если все еще не понятно, почему такое условие, советую сначала почитать статью «Операции с целыми числами»

Теперь, для большего понимания, сделаем блок-схему

Как это работает?

  1. Программа получает на вход количество чисел n.
  2. Начинается цикл, который выполнится ровно столько раз сколько указано количество чисел. В качестве счетчика введенных чисел, используется переменная цикла i (параметр цикла).
  3. На первом шаге цикла программа получает первое число а. Проверяется условие. Если число оканчивается цифрой 3, то сумма s увеличивается на значение введенного числа а (s+a).
  4. Далее шаги внутри цикла повторяются с каждым новым числом.
  5. После обработки в цикле последнего числа выводится результат вычисленной суммы.

Текст программы на Паскале:

var a,i,s,n integer;
begin 
  readln(n);
  s=;
   for i=1 to n do
    begin
     readln(a);
     if a mod 10=3 then s=s+a;
    end;
  writeln(s);
end.

Блок

Блок программы состоит из шести разделов, следующих в строго определенном порядке:

  1. раздел меток (label)
  2. раздел констант (const)
  3. раздел типов (type)
  4. раздел переменных (var)
  5. раздел процедур и функций
  6. раздел действий (операторов).

Раздел действий должен присутствовать всегда, остальные разделы могут отсутствовать.

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

Раздел меток (label)

Любой выполняемый оператор может быть снабжен меткой – целой положительной константой, содержащей не более 4-х цифр. Все метки, встречающиеся в программе, должны быть описаны в разделе label.

Общий вид:

label l1, l2, l3…;

здесь l1, l2, l3 – метки.

Пример. label 5, 10, 100;

Метка отделяется от оператора двоеточием.

Пример. Пусть выражение a := b имеет метку 20. Тогда этот оператор выглядит так:

20 a = b;

Раздел констант (const)

Если в программе используются константы, имеющие достаточно громоздкую запись (например, число пи с 8-ю знаками), либо сменные константы (для задания варианта программы), то такие константы обычно обозначаются какими-либо именами и описываются в разделе const, а в программе используются только имена констант. Это делает программу более наглядной и удобной при отладке и внесении изменений.

Общий вид:

const a1 = c1; a2 = c2; …

здесь a1 – имя константы, c1 – значение константы.

Пример. const pi = 3.14; c = 2.7531;

Раздел типов (type)

Если в программе вводится тип, отличный от стандартного, то этот тип описывается в разделе type:

type t1 = вид_типа;
        t2 = вид_типа;

где t1 и t2 – идентификаторы вводимых типов.

Затем тип используется при объявлении переменных.

Пример использования нестандартных типов:

const
	len=40;
type
	year=1930..2010;
	names=stringlen;
var
	empl names;
	y year;

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

Раздел переменных (var)

Пусть в программе встречаются переменные v11, v12,…; все они должны быть описаны следующим образом:

var v11, v12,… type1;
      v21, v22,… type2; …

здесь v11, v12,… — имена переменных; type1 – тип переменных v11, v12,…; type2 – тип переменных v21, v22,….

Пример. var k, i, j: integer; a, b: real;

Каждая переменная должна быть описана до ее использования в программе и отнесена к одному и только одному типу. Названия разделов (const, type, var…) указываются только один раз.

Пример.

var a real;
      b real;

Таким образом, в разделе var вводится имя каждой переменной и указывается, к какому типу эта переменная принадлежит. Тип переменной можно задать двумя способами: указать имя типа (например, real, color и т.д.), либо описать сам тип, например: array of char

Pascal операторы цикла — For

For 1: Дано вещественное число — цена 1 кг конфет. Вывести стоимость 0.1, 0.2, …, 1 кг конфет.

* Из задачника М. Э. Абрамян

Проверить:

1
2
3
4
5
6
7
8
9
10
11
12
var c,mreal;
   iinteger;
begin
writeln('Цена?');
readln(c);
m=0.1;
for  i = 1 to 10 do
begin
     writeln(' price of ',m, ' kg = ',c*m);
     m=m+0.1;
end;
end.

For 2: Даны два целых числа A и B ( A<B ). Вывести в порядке убывания все целые числа, расположенные между A и B (не включая числа A и B), а также количество N этих чисел.

* Из задачника М. Э. Абрамян

Проверить:

1
2
3
4
5
6
7
8
9
10
11
var a, b, i integer;
begin
writeln('A:');
readln(a);
writeln('B:');
readln(b);
for  i= b-1 downto a+1 do
     write(i3 );
writeln;
writeln('kolvo: ',b-a-1);
end.

For 3:
Дано целое число N>0. Найти сумму

* Из задачника М. Э. Абрамян (For11)

Проверить:

1
2
3
4
5
6
7
8
9
var
  N, Rez,i Integer;
begin
  Write('Введите N: ');
  Readln(N);
  rez=;
  For i=  to N do Rez=Rez+sqr(N+i);
  Writeln(Rez);
end.

Сейчас предлагаем решить сложную олимпиадную задачу на Паскале:

Пять делителей: Найти сумму всех чисел от 1 до заданного n, имеющих ровно пять делителей. Единица и само число входят в число его делителей

Проверить:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
var c,n,s,k,iinteger;
begin
c=;
s=;
readln(n);
for i=2 to n do
    begin
    k=i;
    while k> do begin
         if i mod k =  then
             c=c+1;
          k=k-1;
    end;
    if c= 5 then s=s+i;
    c=;
end;
writeln(s);
end.

Паскаль для начинающих – основные понятия

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

Как выглядит рабочее пространство?

Теперь рассмотрим основу: алфавит и структуру.

Алфавит Паскаль

Что нужно знать? Алфавит — это набор символов, необходимый при составлении программы.

Что к ним относится:

  1. Латинские прописные, строчные буквы (А, В, С….а,b,с).
  2. Арифметические символы (0, 1, 2…).
  3. Специальные знаки (препинания, скобки, кавычки, арифметические знаки и т. д.).
  4. Неделимые символы (:=, ˃=…).
  5. Служебные слова:
  • and – и;
  • array – массив;
  • begin – начало;
  • do – выполнить;
  • else – иначе;
  • for – для;
  • if – если;
  • of – из;
  • or – или;
  • procedure – процедура;
  • program – программа;
  • repeat – повторять;
  • then – то;
  • to – до;
  • until – до (= пока);
  • var – переменная;
  • while – пока.

Cледует учесть: константы, операции не должны носить те же названия, что и служебные слова (длина – любая).

Другие операции над множествами

Над множествами можно выполнять четыре операции сравнения: =, <>, >=, <=.

Два множества A и B равны (A = B), если каждый элемент множества A является элементом множества B и наоборот.

Два множества A и B не равны (A <> B), если они отличаются хотя бы одним элементом.

Множество A является подмножеством множества B (A <= B, или B >= A), если каждый элемент из A присутствует в B.

Имеется также возможность выяснить, принадлежит ли данный элемент некоторому множеству. Для этого служит операция in. Пусть A – множество элементов некоторого базового типа, а x – переменная (константа, выражение) этого типа. Тогда выражение x in A истинно, если значение x является элементом множества A.

Все операции сравнения множеств, а также операция in возвращают логическое значение true или false.

В сложных выражениях над множествами операции имеют следующие приоритеты:

Построение множества

Чтобы во множестве появились элементы, необходимо выполнить оператор присваивания, в левой части которого стоит имя переменной-множества, а в правой — конструктор множества или некоторое выражение над множествами.

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

type
	week_days = (Mon, Tue, Wed, Thu, Fri);
var
	work_days set of week_days;
	lett set of 'A'..'Z';
begin
	work_days = Mon, Wed, Thu;
	lett = 'C', 'E'..'M', 'Z'
end.

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

Множество, в котором нет элементов, называется пустым (или нуль-множеством). В языке программирования Паскаль обозначается квадратными скобками, между которыми нет элементов:

work_days =  ;

Множество может быть объявлено типизированной константой, для чего в описании после знака равенства следует указать конструктор множества. Например:

const lett set of 'а'..'я' = 'а', 'е', 'и', 'о', 'у', 'ы', 'э', 'ю', 'я';

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

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

ch1 = 'A';
ch2 = 'K';
chs = ch1, ch2, 'M';

В результате получится множество .

Элементы множества нельзя вводить и выводить. Для организации ввода-вывода элементов множества следует использовать вспомогательные переменные. В то же время можно использовать множества как элементы типизированных файлов.

Особенности системы PascalABC.NET

Всё познается в сравнении, поэтому преимущества этой программы рассмотрим в соотношении с другим языком BASIC.

Итак, что характерно для языка Паскаль и что не подходит для Бейсика:

  1. Во-первых, наличие компилятора, позволяющего скачивать Паскаль на любые платформы.
  2. Во-вторых, все версии этой программы совместимы между собой.
  3. В-третьих, структурированные типы данных помогают программисту точно составить необходимый алгоритм решения практической задачи, при этом защищая его.
  4. В-четвертых, наглядность и логичность интерфейса программы: все команды просты и понятны.
  5. В-пятых, переход на другой, более высокий по уровню язык программирования, достаточно прост.

Цикл for

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

В заголовке цикла указываются два значения. Первое значение присваивается так называемой переменной-счетчику, от этого значения начинается отсчет количества итераций (повторений). Отсчет идет всегда с шагом равным единице. Второе значение указывает, при каком значении счетчика цикл должен остановиться. Другими словами, количество итераций цикла определяется разностью между вторым и первым значением плюс единица. В Pascal тело цикла не должно содержать выражений, изменяющих счетчик.

Цикл for существует в двух формах:

for счетчик=значение to конечное_значение do 
     тело_цикла;
for счетчик=значение downto конечное_значение do 
     тело_цикла;

Счетчик – это переменная любого из перечисляемых типов (целого, булевого, символьного, диапазонного, перечисления). Начальные и конечные значения могут быть представлены не только значениями, но и выражениями, возвращающими совместимые с типом счетчика типы данных. Если между начальным и конечным выражением указано служебное слово to, то на каждом шаге цикла значение параметра будет увеличиваться на единицу. Если же указано downto, то значение параметра будет уменьшаться на единицу.

Количество итераций цикла for известно именно до его выполнения, но не до выполнения всей программы. Так в примере ниже, количество выполнений цикла определяется пользователем. Значение присваивается переменной, а затем используется в заголовке цикла. Но когда оно используется, циклу уже точно известно, сколько раз надо выполниться.

var
    i, n integer;
 
begin
    write ('Количество знаков: ');
    readln (n);
 
    for i = 1 to n do
        write ('(*) ');
 
readln
end.

Булевы типы

Результатом логического выражения всегда является булево (логическое) значение. Булев тип данных (boolean) может принимать только два значения (true или false). Эти величины упорядочены следующим образом: false < true. Это значит, что данные булевого типа являются не только результатом операций отношения, но и могут выступать в роли операндов операции отношения. Также к ним можно применять функции ord, succ, pred, процедуры inc и dec.

Значение типа boolean занимает в памяти 1 байт.

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

var 
bboolean; 
wbwordbool; 
begin 
b= false; 
b= pred(b); 
writeln(b,' ',ord(b)); // TRUE 255 
writeln(b=true); // TRUE 
 
wb= false; 
wb= pred(wb); 
writeln(wb,' ',ord(wb)); // TRUE -1 
 
b= true; 
b= succ(b); 
writeln(b,' ',ord(b)); // TRUE 2 
 
wb= true; 
wb= succ(wb); 
writeln(wb,' ',ord(wb)); // FALSE 0 
end.

Логические операции

С помощью логических операторов можно формировать сложные логические выражения. Логические операторы часто применяются по отношению к простым логическим выражениям.

В языке программирования Pascal предусмотрены следующие логические операции:

true xor true = false
true xor false = true
false xor true = true
false xor false = false

  • Конъюнкция (логическое умножение, пересечение) — and. Выражение a and b дает значение true только в том случае, если a и b имеют значение true. Во всех остальных случаях значения выражения a and b дает false.
    true and true = true
    true and false = false
    false and true = false
    false and false = false
  • Дизъюнкция (логическое сложение, объединение) – or. Выражение a or b дает значение false только в том случае, если a и b имеют значение false. Во всех остальных случаях результат – true.
    true or true = true
    true or false = true
    false or true = true
    false or false = false
  • Отрицание (инверсия) – not. Выражение not a имеет значение, противоположное значению a.
    not true = false
    not false = true
  • Исключающее ИЛИ – xor. Выражение a xor b дает значение true только в том случае, когда только один из операндов имеет значение true.

Последовательность выполнения логических операторов: not, and, or.

В языке Паскаль сначала выполняются логические операторы (and, or, xor, not), а уже потом операторы отношений (>, >=, <, <=, <>, =), поэтому не нужно забывать расставлять скобки в сложных логических выражениях.

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

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

  • odd(x) = true, если x нечетный (x целый тип);
  • eoln(x) = true, если встретился конец строки текстового файла x;
  • eof(x) = true, если встретился конец файла x.

В остальных случаях эти функции принимают значение false.

Выводы :

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

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

program Calculate;
begin
writeln( выражение )
end.

1
2
3
4

program Calculate;

begin

writeln(выражение)

end.

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

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

Вывод данных на экран. Форматированный вывод

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

Допустим, нам требуется отобразить на экране пару фраз. Если мы хотим, чтобы каждая из них начиналась с новой строки, то надо использовать writeln(), если нет – то write().

Write() чаще используется, когда надо вывести для пользователя сообщение на экран, после чего получить данные, не переводя курсора на новую строку. Например, выводим на экран «Введи число: » и не переводим курсор на новую строку, а ждем ввода.

Еще один пример. В памяти компьютера хранятся данные. Из программы мы обращаемся к ним с помощью переменных num, fl и st. Вывести их значения на экран можно по-разному.

Во втором случае мы видим, что процедуры вывода (как write() так writeln()) позволяют конструировать выводимую информацию из различных компонент (строк-констант и переменных).

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

Оцените статью
Рейтинг автора
5
Материал подготовил
Андрей Измаилов
Наш эксперт
Написано статей
116
Добавить комментарий