Матрицы в Pascal

Распространённое понятие в программировании. Матрицы имеют огромное поле для их применения.

Матрицы в программировании рассматриваются как двумерный массив. Это массив состоящих  из нескольких строк и столбцов.

Максимальный элемент массива в Pascal

Часто встречаются задачи, где необходимо найти максимальный элемент в массиве. Рассмотрим общий алгоритм решения такой задачи.

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

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

Массивы в Pascal

Массив в программировании является набором элементов одного типа (однотипных).

Различают несколько видов массивов – одномерный (векторный) и многомерный.

Элементы в массиве характеризуются своими именами и порядковыми номерами - индексами.

Индекс – это порядковый номер элемента в массиве.

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

Итерационный цикл

Итерационном циклом называется цикл, в результате выполнения которого получается последовательность значений, в которой Yi-1 , Yi , Yi+1 , ... , YN каждый следующий член имеет более точное значение по отношению к предыдущему.

Условием выхода из такого цикла является следующее условие :

| Yi - Yi+1 | <= E 

где E - величина, называемая погрешностью вычисления, имеющая достаточно малое значение.

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

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

Задача о нахождении факториала

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

Программа на Pascal
Program factorial ;
Var i, n : integer ;
 p : real ;
Begin
 Writeln('Введите количество чисел N') ;
 Readln(N) ;
 P := 1 ;
 I := 1 ;
 Repeat 
  P := P*I ;
  I := I+1 
 Until I > N ;
Writeln(' Фактериал равен = ', p:0:0) ;
Readln ;
End.

Оператор цикла с постусловием

Этот оператор похож на оператор цикла с предусловием, но он выполняется по ложному условию.

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

Оператор цикла с постусловием имеет только сложную форму.

Repeat
 <Оператор 1> ;
 .............;
 <Оператор N> ;
Until <Условие> ;

Его служебные слова repeat until является операторными скобками.

Важно помнить, что перед словом until – точка с запятой ; не ставиться!

Для примера вам задача.

Оператора цикла с предусловием

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

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

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

Блок-схема оператора цикла с предусловием

Оператор цикла с предусловием в Pascal пишется таким образом:

While <Условие> Do <Оператор> ;
 


Такой цикл выполняется по истинности условия. Условие проверяется на входе в цикл. Поэтому оператор тела цикла может вообще не выполниться, если условие ложно.

Оператор цикла с  предусловием может быть составным, то есть состоящим из нескольких операторов в теле цикла :

While <Условие> Do 
 Begin
  <Оператор 1> ;
  ............ ;
  <Оператор N> ;
 End ;


Пример задачи с использованием цикла с  предусловием .

Задача: Посчитать n!

Program factorial ;
Var i, n : integer ;
       p : real ;
Begin
 Writeln('Введите количество чисел N') ;
 Readln(N) ;
 P := 1 ;
 I := 1 ;
 While I <= N Do
  begin
   P := P*I ;
   I := I+1 ;
  end ;
Writeln(' Фактериал равен = ', p:0:0) ;
Readln ;
End.

Посчитать факториал числа

Задача.
Посчитать сумму N! (N - факториал).

Блок-схема

Программа на Pascal
Program factorial;
Var i,n:integer;
 factorial:real;
Begin
 Writeln('Введите N');
 Readln(N);
 factorial:=1;
 for i:=1 to N do
  factorial:=factorial*i;
 Writeln('Факториал N чисел равен = ',factorial:0:2);
 Readln;
End.

Сумма A чисел

Задача с оператором цикла с параметром.
Условие :
Сумма A чисел : S=a+a+...+a+a.
Программа на Pascal

Program summa_a;
Var i,n:integer;
 a,S:real;
Begin
 Writeln('Введите a, N');
 Readln(a,N);
 S:=0;
 for i:=1 to N do
  S:=S+a;
 Writeln('Сумма равна = ',S:0:2);
 Readln;
End.

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

Оператор цикла с параметром

Оператор цикла с параметром

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

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

В Pascal этот оператор реализуется следующим образом :

For <Инициализация параметра цикла> to <Конечное значение параметра>
 do <Оператор 1> ;
For <Инициализация параметра цикла> to <Конечное значение параметра>
 downto <Оператор 1>;

Оператор цикла может быть простым и составным, как и оператор выбора Case.
Если после do стоит несколько операторов, то ставиться операторные скобки. Именно такой оператор называется составным .

Как же можно изменять шаг в этом цикле? Шаг изменения параметра в цикле с параметром может быть только 1 или -1. Других изменений, например 2, не возможно реализовать в этом цикле.

Если значение параметра изменяется от меньшего числа к большему, то используется оператор to :

For I := 1 to 10 do <Оператор> ;


Если значение параметра изменяется от большего к меньшему числу, то используется оператор downto :


For I := 10 to 1 downto <Оператор> ;


Один из главных плюсов оператора цикла с параметром является автоматическая модификация. Это упрощает решение задач программисту.

Условие выхода из цикла является достижением параметра цикла порогового значения цикла

Параметр цикла должен быть целым числом.

Циклические вычислительные процессы

Циклические вычислительные процессы. Круговорот воды в природе

Циклические вычислительные процессы

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

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

Что же такое цикл в программировании?

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

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

К примеру – круговорот воды в природе, это естественный цикл в нашей жизни.

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

Этапы циклического процесса

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

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

Вычисление суммы цифр заданного числа

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

Программа на Pascal

Program  summ;
Var a,b,c,d,n,summa:integer;
Begin
     writeln('Введите четырехзначное число ');
     readln(n);
     a:=n mod 10;
     b:=n div 1000;
     c:=(n mod 100) div 10;
     d:=(n mod 1000) div 100;
     summa:=a+b+c+d;
     writeln('Сумма равна ',summa);
Readln;
End.

Оператор выбора на блок-схеме


Оператор выбора Case

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

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

Поэтому знание и умение использовать оператор выбора Case важно в багаже знаний любого программиста.

Для начало определим, чем же является оператор вариантов ( выбора ).

Оператор выбора или вариантов Case

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

Иногда оператор Case называют еще оператором множественного выбора. Верны оба названия. Суть от них не меняется.

Оператор выбора на блок-схеме

Оператор выбора Case

Основы оператора выбора Case

Определимся с основными понятиями, изображенными на блок-схеме.

Селектор – это переменная или выражение порядкового типа данных.

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

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

К порядковому типу данных не относиться только вещественный тип (real).

Case <Селектор> Of 
  <Метка 1> : <Оператор 1> ;
  <Метка 2> : <Оператор 2> ;
  . . . . . . . . . . . .  ;
  <Метка N> : <Оператор N  ;
End;

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

Это значит, что селектор каким-то образом изменяет свое значение, а эти значения уже известны, и они уже присвоены меткам. В таком случае значение селектора совпадает с какой-либо меткой, и затем выполняется действие, указанное после метки.

Если действие должно выполняться при нескольких значениях селектора ( оператора case ), то допускается перечисление этих меток через запятую. ( Т.е. для одинаковых действий )

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

Case <Селектор > Of 
  <Метка 1> : <Оператор 1> ;
  <Метка 2> : <Оператор 2> ;
  . . . . . . . . . . . .. ;
  <Метка N> : <Оператор N>
  Else <Оператор N+1> ;
End;


Если после метки стоит не одни оператор, а несколько, то они заключаются в операторные скобки (begin end ;)

Предоставляю вашему вниманию задачу на вычисление суммы цифр в числе. Часто встречается такое условие в лабораторных работах.

Нахождения максимального элемента

Нахождения максимального элемента

Написать алгоритм нахождения максимального элемента из 3-х значений.

Блок – схема


Программа на Pascal

Program Pr_1;
Var a,b,c,max:real;
Begin
 Writeln(‘Введите числа a,b,c ’);
 Readln(a,b,c);
 If a>b then max:=a
 Else max:=b;
 If c>max then max:=c;
 Writeln(‘max = ’,max);
 Readln; { это задержка экрана }
End.

Принадлежит ли точка выделенной области графика

Задача №1 :

Точка задана своими координатами (x, y). Написать программу, которая используя логическое выражение выводит TRUE, если точка принадлежит заштрихованной области и FALSE - если не принадлежит.

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

Program  logistika;
Var b:boolean;
    x,y:real;
Begin
     write('Введите x ');
     readln(x);
     write('Введите y ');
     readln(y);
     b:=( y>=-x-1 ) and ( y>=x-1 ) and ( y<=x+1 ) and (y<=1-x );
     writeln(b);
     Readln;
End.

Разветвляющийся вычислительный процесс

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

В блок-схеме разветвляющийся процесс обозначается так :

Форматирование чисел в Pascal


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

Такое представление чисел называется полулогарифмической формой числа или экспоненциальной.

Выглядит это так :
0.01792095E-02

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

Форматирование чисел

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

В Паскале используются два оператора вывода данных ( результатов ) на экран :
  1. Write ( ) ;
  2. Writeln ( ) ;

С их помощью можно отформатировать число.

Например, пусть X – вещественное число.

Тогда сделаем вывод таким : Writeln ( X : 8 : 2 ) ;

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

Обычно точность устанавливают в районе от 2 до 4-х.

Ошибкой будет указать точность представления большее, чем общее количество позиций ( не забывайте, сюда входит и точка! ) Например так : Writeln ( X : 5 : 6 ) ;

Все указанные позиции в формате числа, которые не заняты числом ( находящиеся слева от точки ) забиваются Pascal ’ ем «пробелами».

Типы данных в Pacsal


Типы данных в Pacsal

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

Тип данных, присваиваемый переменной, определяют исходя из действий, совершаемых над ней, и её вида.

Стандартные типы данных

  1. Целое число – Integer (Числа от -32768 до + 32767) 
  2. Вещественные числа – Real (Числа с остатком и дробные) 
  3. Символьный тип – Char 
  4. Логический тип – Boolean (Принимает значения - Правда (True) или Ложь (False))

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

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

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

 Вот небольшая табличка показывающая целые типы данных.


Название Обозначения Диапазон значений Длинна в байтах
Целое Integer -32768..32767 2
Короткое целое ShortInt -128..127 1
Длинное целое LongInt
4

Байт
Byte 0..255 1

Слово
Word 0..65535 2

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

Var D : ( Mon,The,Wed,Thu,Fri,Set,Sun ) ;
{Переменная D может ;принимать только указанные значения}

Вот небольшая табличка показывающая вещественные типы данных.

Название Обозначения Количество десятичных цифр Диапазон изменения порядка Длинна в байтах
Вещественный Real 11..12 -39..+38 6
Одинарной точности Single 7..8 -45..+38 4
Двойной точности Double 15-16 -324..+308 8
Расширенный Extended 19..20 -4951..4932 10

Переменная в программировании

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

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

Данные в программе могут присутствовать в виде констант и переменных.

Понимать чем является в программировании переменная очень важно, так как она является основной действующей структурой в программах.

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

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

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