Как сделать интервал в паскале

Pascal: Занятие №3. Часть 3: Паскаль цикл for

Цикл со счетчиком в Паскаль (цикл for)

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

Блок-схема, соответствующая циклу For:
Как сделать интервал в паскале

Ну или если на простом примере:

Как сделать интервал в паскале

Паскаль цикл For: синтаксис:

Прямое направление цикла (от меньшего значения к большему):

Обратное направление (от большего к меньшему):

Решение на Паскале:
Как сделать интервал в паскале

Оператор в теле конструкции может быть одиночным или составным оператором.

Как сделать интервал в паскале

Счетчик цикла или параметр цикла — это обычная переменная, которая может быть только порядкового (целочисленного, символьного, логического) или перечислимого типа.

При прямом направлении цикла счетчик в каждой итерации увеличивается на единицу, при обратном направлении — уменьшается на единицу.

Рассмотрим на решенном примере, как используется в Паскаль цикл for:

var i,n:integer; begin write (‘количество раз’); readln(n); for i:=1 to n do write(0); end.

Более детально цикл со счетчиком в Паскале рассмотрен в видеоуроке:

Решение в виде блок-схемы:
Как сделать интервал в паскале

Решение на Паскале:

Вариант 1Вариант 2
Как сделать интервал в паскалеКак сделать интервал в паскале

Решение:

Pascal: выход из цикла

Break и Continue

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

Рассмотрим использование процедур выхода из цикла Continue и Break в Паскале (будем использовать цикл while ):

var a:integer; begin a:=1; while a a=64 происходит выход из текущей итерации ( continue ) и число не выводится на экран, а при a=256 выполнение цикла прерывается окончательно ( break ), так и не распечатав число 256.

Табулирование функции на отрезке с заданным шагом

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

Алгоритм:
Для решения задачи в области определения функции вводится сетка – совокупность точек:

Тогда задача сводится к вычислению функции f в точках xi, то есть нужно вычислить:

var x, a, y, h: real; i:integer; begin writeln(‘ведите x’); readln(x); h:=0.22; a := 0.14*x; for i:=1 to 7 do begin y := (0.15*x + a)/(sqr(a)+sqr(x)); writeln(‘a =’, a, ‘ y = ‘, y); a := a + h; end end.

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

Процедура halt в pascal завершает работу программы.

Потренируйтесь в решении задач по теме, щелкнув по пиктограмме:

Источник

Перечисляемый и интервальный тип данных Паскаль

Как организован перечисляемый и интервальный тип данных Паскаль? Всякий структурированный тип данных в языке Pascal характеризуется множеством входящих в его состав элементов. Константа или переменная такого типа всегда содержит несколько компонент, каждая из которых также может быть структурированного типа. Это напоминает нам вложенность типов.

Язык Pascal включает следующие структурированные типы: строки, массивы, записи, множества, файлы. Но перед тем, как приступить к изучению этих типов, рассмотрим два порядковых типа данных — перечисляемый и интервальный.

Перечисляемый тип Паскаль:

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

В процессе создания программы у нас может появиться необходимость объединить в одну группу по какому-либу признаку совокупность значений перечисляемого типа. К примеру, перечисляемый тип ZnakZodiaka (Знак зодиака) включает скалярные значения Oven, Strelec, Kozerog, Bliznecy, Vesy (Овен, Стрелец, Козерог, Близнецы, Весы); перечисляемый тип Planeta (Планета) объединяет скалярные значения Mercury, Venera, Earth, Mars (Меркурий, Венера, Земля, Марс). Описание перечисляемого типа происходит в разделе описания типов:

Описание переменных скалярного типа, объявленные в разделе type, производится при помощи имен типов:

Planeta = (Mercury,Venera,Earth,Mars); var Solnsystem: Planeta;

Таким образом, переменная Solnsystem может принимать следующие значения: Mercury, Venera, Earth или Mars. Также переменные, имеющие перечисляемый тип, могут быть объявлены в разделе var:

Solnsystem: Mercury,Venera,Earth,Mars;

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

Последовательность значений перечисляемого типа нумеруется автоматически, начиная с нуля:

Planeta = (Mercury,Venera,Earth,Mars);

В этом примере Mercury имеет значение 0, Venera — значение 1, Earth — значение 2, Mars — значение 3.

Интервальный тип данных Паскаль:

Диапазон значений, имеющих любой порядковый тип, определяется как интервальный тип данных. Отрезок устанавливается в диапазоне от минимального значения констант до максимального, которые отделяются друг от друга двоеточием «..». Константами могут выступать константы целого, символьного, логического или перечисляемого типа. Базовым типом называют скалярный тип, на котором задается отрезок.

Примеры диапазонов:

diap=0..255;

type

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

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

Источник

Pascal: Занятие № 4 часть II. Графика в Паскале

Графика в Паскале

Для работы с графикой в pascal abc используется модуль GraphABC. Для его подключения используется следующий код:

Система координат в Паскале соответствует экранной системе координат и выглядит следующим образом:

Как сделать интервал в паскале

Управление цветом

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

или использовать для заливки:

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

clBlack – черный
clPurple – фиолетовый
clWhite – белый
clMaroon – темно-красный
clRed – красный
clNavy – темно-синий
clGreen – зеленый
clBrown – коричневый
clBlue – синий
clSkyBlue – голубой
clYellow – желтый
clCream – кремовый
clAqua – бирюзовый
clOlive – оливковый
clFuchsia – сиреневый
clTeal – сине-зеленый
clGray – темно-серый
clLime – ярко-зеленый
clMoneyGreen – цвет зеленых денег
clLtGray – светло-серый
clDkGray – темно-серый
clMedGray – серый
clSilver – серебряный

Точки, отрезки и ломаные

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

Как сделать интервал в паскале

uses GraphABC; begin SetPixel(300,200,clred); end.

Для рисования линии используется:

Как сделать интервал в паскале

uses GraphABC; begin SetPenColor(clgreen); line(100,50,500,250); end.

Для установки размеров графического окна используется процедура

Рисование фигур

Как сделать интервал в паскале

uses GraphABC; begin Rectangle(50,50,200,200); end.

Как сделать интервал в паскале

uses GraphABC; begin Rectangle(50,50,200,200); FloodFill(100,100,clBlue); end.

Line(x1,y1,x2,y2);
LineTo(x,y);

Как сделать интервал в паскале

uses GraphABC; begin setpenwidth(20); setpencolor(clred); moveTo(300,100); lineTo(500,300); lineto(100,300); lineto(300,100); floodfill(300,200,clgreen); end.

Как сделать интервал в паскале

uses GraphABC; begin Circle(500,200,100); FloodFill(500,200,clred); end.

Как сделать интервал в паскале

uses GraphABC; Begin SetPenWidth(10); Arc(300,250,150,45,135); end.

Функция random для использования окраски

* раскрасить круги случайным цветом

Нарисовать штриховку на Паскале можно, используя процедуры рисования прямоугольника и линии:
Как сделать интервал в паскале

Программа будет выглядеть следующим образом:

Как сделать интервал в паскале

Анимация в Паскале

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

uses GraphABC; var x:integer; begin x:=40; repeat SetPenColor(clWhite); Circle(x,100,10); <Рисуем белую окружность>SetPenColor(clBlack); Circle(x,100,10); <Рисуем черную окружность>x:=x+1 <Перемещаемся немного направо>until x>600; end.

Источник

Pascal: Занятие №2. Часть 1: Условный оператор в Паскале (If)

Условный оператор в Паскале

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

Блок-схема условного оператора:
Как сделать интервал в паскале
Условный оператор в Паскале имеет следующий синтаксис:

if условие then оператор;

Полный вариант:

if условие then оператор else оператор;

Условный оператор в Паскале — if — служит для организации хода задачи таким образом, при котором изменяется последовательность выполнения операторов в зависимости от какого-либо логического условия. Логическое условие может принимать одно из двух значений: либо true (истина), либо false (ложь), соответственно, оно может быть либо истинным, либо ложным.

Как сделать интервал в паскале

Составной оператор

Операторные скобки и составной оператор в Паскале:

if логическое выражение then begin оператор1; оператор2; end else begin оператор1; оператор2; end;

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

Вариант 1
неэффективное решение
Вариант 2
эффективное решение
Как сделать интервал в паскалеКак сделать интервал в паскале
Вариант 3
эффективное решение
IFTHENELSE
ЕСЛИТОИНАЧЕ

Как сделать интервал в паскале
В условии (в логическом выражении) используются операторы отношения.
Рассмотрим список операторов отношения Паскаля:

Подробно разобраться в работе условного оператора в Паскале можно, просмотрев видеоурок:

Как сделать интервал в паскале

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

Логические операции в Паскале (в логическом выражении)

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

var n:integer; begin n:=6; if (n>5) and (n 7) or (n 7) xor (n 7) then writeln(‘истина’); end.

var a,b: integer; begin write(‘Введите A: ‘); read(a); b := a mod 2; if b>0 then writeln(‘true’) else writeln (‘false’) end.

Построение блок-схем по коду Паскаль

Существуют управляющие структуры трех типов:

Как сделать интервал в паскалеследованиеКак сделать интервал в паскалеветвлениеКак сделать интервал в паскалеповторение или цикл

Две из трех представленных структур блок-схемы мы уже можем перевести в код Pascal.

Результат:
Как сделать интервал в паскале

Источник

Занятие №15. Часть 2: Динамические структуры данных: стеки и очереди

Стеки

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

Существуют такие сокращения:

Как сделать интервал в паскале

Последовательные этапы засылки в стек чисел 1, 2, 3

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

Создание структуры узла:

Добавление элемента в стек:

procedure Push( var Head: PNode; x: char); var NewNode: PNode; begin New(NewNode); < выделение памяти >NewNode^.data := x; < запись символа >NewNode^.next := Head; < сделать первым узлом >Head := NewNode; end;

Забор элемента с вершины:

function Pop ( var Head: PNode ): char; var q: PNode; begin if Head = nil then begin < если стек пустой >Result := char(255); < неиспользуемый символ, т.е. ошибка >Exit; end; Result := Head^.data; < берем верхний символ >q := Head; < запоминаем вершину >Head := Head^.next; < удаляем вершину >Dispose(q); < удаление из памяти >end;

Проверка, пустой ли стек:

function isEmptyStack ( S: Stack ): Boolean; begin Result := (S = nil); end;

Объявления в основной программе:

Рассмотрим подробную работу со стеком на примере:

Алгоритм выполнения задания:

Создаем структуру стека:

const MAXSIZE = 50; type Stack = record < стек рассчитан на 50 символов >tags: array[1..MAXSIZE] of char; size: integer; < число элементов >end;

Процедура добавления элемента в стек:

procedure Push( var S: Stack; x: char); begin if S.size = MAXSIZE then Exit; // выход, если произошло переполнение стека S.size := S.size + 1; S.tags[S.size] := x; // добавляем элемент end;

Функция взятия элемента с вершины:

Создаем функцию для проверки, пустой ли стек:

function isEmptyStack ( S: Stack ): Boolean; begin Result := (S.size = 0); end;

Обработка строки в цикле:

for i:=1 to length(expr) < проходимся по всем символам строки expr >do begin if expr[i] = br1 then begin < открывающая скобка br1; < ошибка: стек пуст или не та скобка >break; end; if error then break; // была ошибка, значит, прерываем цикл end;

Очереди

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

Существует сокращение для очереди: FIFO = First In – First Out, с английского — «Кто первым вошел, тот первым вышел».

Для очереди доступны следующие операции:

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

Работа с очередью с помощью кольцевого массива:

Как сделать интервал в паскале

Если в очереди 1 элемент:
Как сделать интервал в паскале

Если очередь пуста:
Как сделать интервал в паскале

Если очередь заполнена:
Как сделать интервал в паскале

Определение размера массива (при пустой и заполненной очереди):
Как сделать интервал в паскале

Очередь в Паскале (использование кольцевого массива)

Создание структуры:
Как сделать интервал в паскале

type Queue = record data: array[1..MAXSIZE] of integer; head, tail: integer; end;

Как добавить в очередь:
Как сделать интервал в паскале

procedure PushTail( var Q: Queue; x: integer); begin if Q.head = (Q.tail+1) mod MAXSIZE + 1 then Exit; < очередь уже полна >Q.tail := Q.tail mod MAXSIZE + 1; Q.data[Q.tail] := x; end;

Как выбрать из очереди:
Как сделать интервал в паскале

function Pop ( var S: Queue ): integer; begin if Q.head = Q.tail mod MAXSIZE + 1 then begin Result := MaxInt; Exit; end; Result := Q.data[Q.head]; Q.head := Q.head mod MAXSIZE + 1; end;

Создание очереди посредством списка

type PNode = ^Node; Node = record data: integer; next: PNode; end; type Queue = record head, tail: PNode; end;

Добавляем новый элемент:
Как сделать интервал в паскале

procedure PushTail( var Q: Queue; x: integer ); var NewNode: PNode; begin New(NewNode); NewNode^.data := x; NewNode^.next := nil; if Q.tail <> nil then Q.tail^.next := NewNode; Q.tail := NewNode; if Q.head = nil then Q.head := Q.tail; end;

Выбираем элемент из списка:
Как сделать интервал в паскале

function Pop ( var S: Queue ): integer; var top: PNode; begin if Q.head = nil then begin Result := MaxInt; Exit; end; top := Q.head; Result := top^.data; Q.head := top^.next; if Q.head = nil then Q.tail := nil; Dispose(top); end;

Дек — англ. double ended queue, т.е. очередь с двумя концами – это динамическая структура данных, добавлять и удалять элементы в которой можно с обоих концов.

Деревья

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

Как сделать интервал в паскале

1 — предок для всех других узлов в дереве
6 — потомок для узлов 5, 3 и 1
3 — родитель узлов 4 и 5
5 — сын узла 3
5 — брат узла 4

Двоичные деревья

В двоичном (бинарном) дереве каждый узел имеет не более двух дочерних узлов (сыновей).
Объявление:
Как сделать интервал в паскале

type PNode = ^Node; < указатель на узел >Node = record data: integer; < данные >left, right: PNode; end;

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

Сравним поиск в массиве c n элементами с поиском в бинарном дереве:

Как сделать интервал в паскале

Поиск в массиве: каждое сравнение — отбрасываем 1 элемент.
Число сравнений – N.

Как сделать интервал в паскале

При каждом сравнении отбрасывается половина оставшихся элементов.
Число сравнений

Поиск в бинарном дереве на Паскале:

Создадим функцию для поиска. На вход функции из главной программы подаются два параметра: tree — адрес корня дерева и x — искомое число. Функция возвращает адрес узла с искомым значением или nil, если ничего не найдено.

Как сделать интервал в паскале

function SearchInTree(Tree: PNode; x: integer): PNode; begin if Tree = nil then begin Result := nil; Exit; end; if x = Tree^.data then Result := Tree else if x

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *