Процедуры ввода – вывода в Pascal

Процедуры ввода информации Read, ReadLn в Pascal

Процедура ввода обеспечивает ввод числовых данных, символов, строк, и т.д. для следующей их обработки программой.
Формат:
Read(X1, X2,…,Xn);
Значения X1, X2,…,Xn набираются минимум через один пробел на клавиатуре пользователем. После набора данных для одной процедуры Read  нажимается клавиша ввода. Значения переменных должны вводится в строгом соответствии с синтаксисом языка Pascal. Если соответствие нарушается ( например X1 имеет тип Integer, а при вводе набирается значение типа Char), то возникает ошибка ввода.

Пример:
Var :
      I: Real;
  J: Integer;
  K: Char;
Begin
  Read(I,J,K);
  …
End. 

Процедуру Read можно использовать для организации пауз произвольной длины при выполнении программы. Для этого достаточно записать: Read(Kbd,Ch). Ch- литерная переменная, Kbd – имя стандартного файла клавиатуры. Программа продолжит работу только после того, как будет нажата любая клавиша на клавиатуре. Введенный символ на клавиатуре не отобразится.
Для ввода данных можно использовать процедуру ReadLn. Она аналогична процедуре Read. После выполнения данной процедуры курсор автоматически перейдет на новую строку.

Выражения в Pascal

Арифметические выражения в Pascal

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


Выражение
Тип данных
Тип результата
Операция
Пример
A+B
Real
Integer
Real, Integer
Real
Integer
Real
Сложение


A-B
Real
Integer
Real, Integer
Real
Integer
Real
Вычитание

A*B
Real
Integer
Real, Integer
Real
Integer
Real
Умножение

A/B
Real
Integer
Real, Integer
Real
Real
Real
Деление

A div B
Integer
Integer
Целочисленное деление
11 div 5 Þ2
10 div 3Þ3
2 div 3Þ0
A mod B
Integer
Integer
Деление с остатком
11 mod 5Þ1
10 mod 3Þ1
14 mod 5Þ4

Приоритет операций в порядке убывания: /, *, div, mod, -,  +
Для изменения приоритета операций используются круглые скобки.

Например:
(A+B)/(A-B)

Константы в Pascal

Числовые константы

В языке Pascal допускается использование чисел в 10 и 16 системах счисления. Если число представлено в 16 системе счисления, то перед ним без пробела записывается знак $. Диапазон изменения чисел в 16 системе счисления от $00000000 до $FFFFFFFF.

В 10 системе счисления числа могут записываться двумя способами: с фиксированной и с плавающей точкой. Вещественные десятичные числа с фиксированной точкой записываются по обычным правилам арифметики. Целая часть от дробной отделяется точкой. Если точка отсутствует, число считается целым.
 
Например
125 - целое десятичное число
$1FF - 16 -е число
124.674 - вещественное число

Вещественные десятичные числа с плавающей точкой представлены в виде: mE+p, где m - мантисса (целое или дробное число с десятичной точкой), E - означает "десять в степени", р - порядок (целое число).
 
Например
5.18Е +02 -> 5,18*102 -> 518
10Е-03-> 10*10-3 -> 0,01

Строковые и символьные константы

Строка символов - это последовательность любого количества символов (не более 126), расположенных на одной строке и заключенных в апострофы.
 
Например
Const
Symb='TURBO';

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

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

Структура программы 
Program <имя программы>;
{Заголовок программы необязателен}
<Раздел объявления меток>
<Раздел объявления констант>
<Раздел объявления типов>
<Раздел объявления переменных>
<Раздел объявления процедур и функций>
Begin
  <раздел операторов>
End.

Раздел объявления меток

Формат
Label 
  <имя метки, …>;
Например
Label
   1, 3, 1A, D;
Метка ставится в теле программы перед оператором и отделяется от него двоеточием.

Основные понятия языка Turbo Pascal 7.0

Понятия языка Turbo Pascal

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

Алфавит  языка

Алфавит - совокупность допустимых в языке символов.
Элементы алфавита можно разбить на четыре группы:
  • символы, используемые в идентификаторах;
  • разделители - пробел;
  •  специальные символы;
  • неиспользуемые символы.

Символы, используемые в идентификаторах

Идентификатор - имя любого объекта программы - может включать латинские буквы (прописные и строчные), арабские цифры (0…9) и символ подчеркивания.
Общие правила написания идентификаторов:
  • Идентификатор начинается только с буквы или знака подчеркивания (исключение составляют метки, которые могут начинаться и цифрой и буквой);
  • Между двумя идентификаторами должен быть, по крайней мере, один пробел.
  • Длина идентификатора может быть любой, но значимыми являются только первые 63 символа;
  • Прописные и строчные буквы в идентификаторах не различаются.
Например:
Metka12
1gr              - ошибка
Blok_5
Nomer.data - ошибка

Специальные символы

При написании программ применяются специальные символы: + - * / = > < [ ] ( ) { } . , : '# $  Составные символы, которые воспринимаются как единое целое: :=  <>  ..  <=  >=  (.  .)  (*  *)

Неиспользуемые символы

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

Файлы в Pascal. Понятия файла и файловой переменной. Внешние файлы

Файлы в Pascal.


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

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

Турбо Паскаль поддерживает три файловых типа:
  1. типизированные файлы – файлы, состоящие из компонентов одного типа, число которых заранее не определено;
  2. безтиповые файлы – файлы, где информация записывается и считывается блоками определенного размера, в них могут храниться данные любого вида и структуры; 
  3. текстовые файлы – файлы, состоящие из любых символов. Они организуются по строкам, каждая из которых заканчивается символом «конец строки». В конце файла ставиться символ «конец файла». Информацию текстового файла можно просмотреть с помощью любого текстового редактора.
Понятие файла в Паскале употребляют в двух смыслах:
  1. как поименованная область данных на внешнем носители (внешний файл)
  2. как переменная файлового типа (внутренний файл)
В программе между этими объектами устанавливают связь и все, что в процессе выполнения программы происходит с внутр. файлом, дублируется во внешний. Над элементами файла можно делать только 2 операции: читать с файла, записывать в файл.

Множества, описание множества, конструктор множества, операции над множествами Pascal

Множество в Pascal.

Множества в Pascal
Множества в Pascal.
Множество - это совокупность однотипных элементов, рассматриваемых как единое целое.

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

Тип элементов множества называется базовым типом. Базовый тип м.б. любым порядковым (целым, логическим, символьным, интервальным, перечисляемым). Элементы множества задаются в [] (например: [3,4,5], [1..10], [‘a’,’c’], [ ]-пустое множество). Порядок записи элементов множества не имеет значения: [1,2,3]=[3,1,2]

Что такое язык программирования?

Язык программирования 

Язык программирования – фиксированная система обозначений и правил для достижения определенных целей.

Языки делятся в зависимости от близости или удаленности от языка машинных команд
  1. языки высокого уровня – инструкции для ЭВМ записываюся простыми командами на аппаратном уровне, который отображает структуру ЭВМ, продуцируют быстрые и компактные продукты, но сложные для изучения и работы (отчасти C/C++, ассемблер).. Такие языки еще называют машинно – ориентированными.
  2. языки низкого уровня – инструкции для ЭВМ записываются в наглядно, легко воспринимаемом виде, имеют понятный синтаксис, близкий к человеческому общению, и удобные в работе, но создают довольно громоздкие и медленные программы (таковы, к примеру, семейства языков Basic, Java, Delphi, отчасти языки C/C++)
Проблемно-ориентированные языки – предназначены для решения узкого класса задач.

Процедурно-ориентированные языки – используют специалисты, знающие математич. модель решения задач и методы решения.

Виды алгоритмов и способы их описания

Виды алгоритмов и способы их описания.

Алгоритмы различаются на следующие виды:
  1. Линейный – перечень команд (инструкций), выполняемых последовательно друг за другом
  2. Разветвляющийся – алгоритм, при котором последовательность выполнения команд зависит от условия, которое разделяет выполнение на несколько ветвей
  3. Циклический – алгоритм, в котором одна и та же команда или последовательность команд повторяется один или некоторое количество раз. Выход из повторяющегося условия определяется данными программы или условиями задача.
Любая алгоритмическая конструкция может содержать в себе другую конструкцию того же или иного вида, т. е. алгоритмические конструкции могут быть вложенными.

Основные свойства алгоритма

Основными свойствами алгоритма являются:
  1. Детерминированность (определенность). Предполагает получение однозначного результата вычислительного процесса при заданных исходных данных. Благодаря этому свойству процесс выполнения алгоритма носит механический характер;
  2. Результативность. Указывает на наличие таких исходных данных, для которых реализуемый по заданному алгоритму вычислительный процесс должен через конечное число шагов остановиться и выдать искомый результат;
  3. Массовость. Это свойство предполагает, что алгоритм должен быть пригоден для решения всех задач данного типа;
  4. Дискретность. Означает расчлененность определяемого алгоритмом вычислительного процесса на отдельные этапы, возможность выполнения которых исполнителем (компьютером) не вызывает сомнений.

Вывод максимального и минимального из 3-х чисел

Условия задачи

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

Входная строка содержит три целых числа, разделённых пробелами.

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

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

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

Решение задачи на Pascal
Var 
  a, b, c, max, min: integer;

Begin
  readln(a, b, c);
  max := a;
  min := a;

  If b > max Then
    max := b;
  If c > max Then
    max := c;

  If b < min Then
    min := b;
  If c < min Then
    min := c;

  writeln('Max: ', max, '. Min: ', min);
End.


Немного другой вариант задачи. Если необходимо отсортировать по возрастанию введенные числа:
Var a, b, c, t: Integer;
Begin
  Write('a b c: ');
  ReadLn(a,b,c);
  If b < a Then
    Begin
      t := a;
      a := b;
      b := t;
    End;
  If c < b Then
    Begin
      t := b;
      b := c;
      c := t;
    End;
  If b < a Then
    Begin
      t := a;
      a := b;
      b := t;
    End;
  WriteLn(a);
  WriteLn(c);
End.

Определить самый левый максимальный элемент среди элементов

Условие задачи.

Определить самый левый максимальный элемент среди элементов, стоящих после элемента с заданным номером.
Умножить все элементы массива на найденное максимальное значение, а затем поменять первый элемент и предпоследний.

Решение задачи на Pascal

{ Определить самый левый максимальный элемент среди элементов, стоящих
после элемента с заданным номером, умножить все элементы массива на
найденное максимальное значение, а затем поменять первый элемент
 и предпоследний }

Const 
  n = 15;

Var 
  temp,i : integer;
  max,imax,k : integer;
  a : array [1..n] Of integer;
Begin
  write('Введите номер элемента: ');
  readln(k);
  writeln('Исходный массив:');
  For i:=1 To n Do
    Begin
      a[i] := random(n)-n Div 2;
      write(a[i]:4);
    End;
  writeln;
  max := a[k+1];
  imax := k+1;
  For i:=k+1 To n Do
    If a[i]>max Then
      Begin
        max := a[i];
        imax := i;
      End;
  writeln('Максимальный элемент: ',max,' в позиции: '
          ,imax);
  writeln('Преобразованный массив:');
  For i:=1 To n Do
    Begin
      a[i] := a[i]*max;
      write(a[i]:4);
    End;
  temp := a[n-1];
  a[n-1] := a[1];
  a[1] := temp;
  writeln;
  writeln('Преобразованный массив:');
  For i:=1 To n Do
    Begin
      write(a[i]:4);
    End;
  readln;
End.