Учебное пособие Основы программирования Система программирования Турбо Паскаль 1 часть







Основы программирования



Система программирования
Турбо Паскаль







Составитель А.В. Дейнекин

Редактор Ревенко М.А. Пр. ВГПУ




Мужичанская Средняя Школа
2006г.
Основы понятия

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

Программа – это алгоритм, записанный на языке исполнителя,
(на «понятном» компьютеру языке программирования).

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

Язык программирования – это фиксированная система обозначений для описания алгоритмов и структур данных.
Язык программирования образуют 3 составляющие: алфавит, синтаксис, семантика.
Алфавит – это фиксированный для данного языка набор основных символов.
Синтаксис – это система правил, определяющие допустимые конструкции из букв алфавита.
Семантика – это система правил истолкования отдельных языковых конструкций.
Популярные языки программирования Паскаль, Бейсик, Си, Фортран.


Алфавит языка ПАСКАЛЬ
Алфавит языка ПАСКАЛЬ состоит из букв, цифр и спец символов.
буквы: латинские буквы, русские буквы используются в комментариях {нахождение гипотенузы} или в текстовых константах (введите х’).
цифры: 0 1 2 3 4 5 6 7 8 9.
Спец символы:
Знаки арифметических операций +, -, *, /.
Знаки логических операций >, <, =, >=, <=, <>.
Разделители ; , : . () [ ] { } ’ ^
Служебные слова – зарезервированные слова, которым системой программирования предписан определённый смысл (операторы, процедуры).

Служебные слова:
And
И
For
Для
Program
Программа



Array
Массив
Function
функция
Repeat
Повторяй



Begin
Начало
Goto
Переход
String
Строка



Case
В случае
If
Если
Then
Тогда



Const
Константа
In
Ин
To
До



Div
Целочис.дилен
Label
Метка
Type
Тип



Do
делай
Mod
Остат от делен
Until
До тех пор



Downto
В обрат. поряд
Not
Отрицание
Var
раздел описан



Else
Иначе
Of
Типа
while
пока



end
окончание
Or
или
Xor
отрицание



File
Файл
Procedure
Процедура

и др.






Для создания и использования на компьютере программы, написанной на языке программирования, используют систему программирования.
Система программирования – это программное обеспечение компьютера, предназначенное для разработки, отладки и исполнения программ, записанных на определённом языке программирования.
Популярные системы программирования: Турбо Паскаль, Q Basic, СИ++, Delphi.
Компьютер – исполнитель, работает с определёнными данными, по определённой системе команд.
Любые данные (константы, переменные, значения функций) характеризуются своими типами.

Существуют три основных типа данных:
числовой – целочисленный, вещественный.
символьный – строковый и литерный.
логический.

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

Поэтому необходимо «чтобы компьютер понимал» переменные, какого типа используются в программе.
Для этого необходимо объявление типа переменных используемых в программе иначе «Паскаль» откажется выполнять программу, выведет на экран монитора ошибку в случае обнаружения не описанной переменной.
Основные типы данных:

I Числовые типы данных

Целый тип данных:
Integer (интеджер) – целый.
- целые числа от -32768 до 32767
- в памяти компьютера занимает 2 байта
- операции, используемые для работы с целыми переменными:
+; -; *;
div – деление нацело;
mod – нахождение остатка от деления нацело.
- функции, дающие вещественный результат:
Abs(x) – Абсолютная величина Х
Sqr(x) – Возведение Х в квадрат
Trunc(x) – Выделение целой части числа Х
Round(x) – Округление Х до целого числа
( Trunc(x) и Round(x) преобразуют тип данных из Real в Integer )
Succ(x) – Следующее за Х число
Pred(x) – Предыдущее перед Х число
Int(x) – Выделяет целую часть вещественного числа Х
Random(x) – Случайное число от 0 до Х-1 (Если функция не содержит аргумента, то генерируется случайное число от 0 до 1).
Randomize; - Оператор, позволяющий генерировать новую последовательность случайных чисел при новом запуске программы на выполнение. Обеспечивает не совпадение последовательностей случайных чисел, генерируемых функцией random.
Вещественный тип данных:
Real (риэл) – вещественный.
- числа от 2,9 Е-39 до1,7 Е+38
- в памяти компьютера занимает 6 байта
- операции используемые для работы с переменными вещественного типа: +; -; *; /;
- функции, дающие вещественный результат:
sin(x) – Синус числа Х
cos(x) – Косинус числа Х
sin(x)/cos(x) – Тангенс числа Х
arctan(x) – Арктангенс числа Х
ln(x) – Натуральный логарифм числа Х
exp(x) – Экспонента числа Х
sqrt(x) – Корень квадратный числа Х
frac(x) – Выделяет дробную часть числа Х
II Строковые переменные

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

Строковый тип данных
STRING (стринг) – строка

Описание строковых переменных
VAR a, b : string; или
VAR stroka1, stroka2 : string [20];

Значением строковой переменной – произвольная цепочка символов, которые могут выводиться на экран монитора максимальной длиной до 255 символов.
Значение строки заключается в апострофы ( ’ ’) – одинарные кавычки.
В квадратных скобках [20] можно указывается максимальное количество символов возможных в строке описанной переменной, это делается с целью экономии ячеек памяти (один символ – одна ячейка) в противном случае под строковую переменную будет отведено 255 ячеек при любой длине строковой переменной.
В программе, текст строковой переменной должен браться в апострофы (кавычки), а в памяти компьютера текст хранится без кавычек и на экран переменная выводится без кавычек.
Строковую переменную можно задавать и оператором присваивания a:=’добро пожаловать’ и оператором ввода READLN (а) строка символов вводится с клавиатуры, после чего необходимо нажать клавишу Enter.

Функции и операции для работы над строками
+ соединяет две строки в одну
пример: s1:=’мото’;
s2:=’роллер’;
s3:=s1+s2;
результат: s3=’мотороллер’
Length определяет фактическую длину текстовой строки – количество символов в строке
Пример: s1:=’мотороллер’;
I := Length(s1);
результат: I = 10
UpCase преобразовывает символ из строчного в прописной
Copy копирует фрагмент строки из одной переменной в другую
Пример: s1:=’астроном’;
s2 := Copy(s1, 3,4);
(3 – с третьей позиции 4 – копировать четыре символа)
результат: s2= ’трон’

Pos осуществляет поиск позиции, начиная с которой в строке определённого фрагмента подстрока входит в строку
Пример: s1:=’мотороллер’;
К := POS(’рол’,s1);
результат: К = 5
если вхождения нет, К=0.
Insert вставляет фрагмент из одной строки в другую
Пример: s1:=’рука’;
s2:=’баш’;
Insert (s2, s1, 3)
(в строку s1 вставляется строка s2, начиная с 3 символа)
результат: s1= ’рубашка’

Delete удаляет фрагмент из строки
Пример: s1:=’коробочка’;
s2 := Delete(s1, 4,2);
(4 – с третьей позиции 2 – удалить два символа)
результат: s2= ’корочка’

Str преобразовывает число в строку
Пример: х := 2.73284;
Str(x:4:2, s1);
(:4:2 – определение формата: чисел4 – общее количество символов включая десятичную точку 2 – два символа после запятой)
результат: x = ’2.73’

Val преобразовывает строку в число
Пример: х := 2.73’;
Val(x:4:2, s1);
результат: s1 = 2.73



III Символьные переменные

Символьный тип данных
CHAR (кэр) – символ

Описание символьных переменных
VAR a, b : CHAR ;

Переменные символьного типа могут принимать значения любых символов.
Значениями символьной переменной являются символы из таблицы кодировки ASCI I
Используя переменные символьного типа возможно записать а := ’х’; b:= ’+’ с:= ’ж’, что значит присвоить переменной а значение символа х , переменной b присвоить значение символа + , а переменной с значение символа ж. Но нельзя записывать а:=’ мир ’ так как здесь не один символ, а пять.
Аналогично и с оператором READLN.
При вводе нескольких символов одним оператором RЕADLN все символы набираются на клавиатуре подряд, без пробелов, (в отличии от ввода числовых данных) после ввода последнего символа нажимается клавиша Enter. Таким образом, ввод трёх символов одним оператором Readln не отличается от ввода одной трёх символьной строки, отличие определяется в описании переменных.



Операции для работы с символами

Переменные типа CHAR можно лишь присваивать и сравнивать друг с другом.
При сравнении символов, сравниваются не они, а их ASCI I – коды, при этом один символ считается больше другого, только в том случае если он имеет больший по значению ASCI I – код.
Пример: ’В’>’A’ (ASCI I - код символа ’A’ равен 65, а символа ’В’ равен 66).





Функции для работы с символами (CHAR)
Chr (X:BYTE) : CHAR выводит символ, соответствующий ASCI I – коду числа х. (х – целое число типа BYTE)
Ord (X:CHAR) : BYTE выводит соответствующий порядковый номер символа, согласно таблице ASII - кода
UpCase(X:CHAR) : CHAR преобразует символы из строчных букв в прописные
Pred (X:CHAR) : CHAR выводит символ, который предшествует в ASII – таблице символу Х
Succ (X:CHAR) : CHAR выводит символ, который следует в ASII – таблице за символом Х


IV Логические переменные

логический тип данных
BOOLEAN (болеан) – символ

Описание логических переменных
VAR c : BOOLEAN ;

Использование логического типа BOOLEAN указывает, что переменная может принимать всего два значения TRUE – истина и FALSE – ложь, причём FALSE < TRUE.
В состав логических выражений кроме логических переменных могут входить также числа, числовые или строковые переменные, или выражения. Которые сравниваются между собой с использованием операций сравнения (>, <, =, >=, <=, <>).
Над элементами логических выражений могут производиться логические операции.
Логические операции
NOT логическое отрицание “НЕ”
AND логическое умножение “И”
OR логическое сложение “ИЛИ”
XOR логическое исключающее “ИСКЛЮЧАЮЩИЙ”

Логические функции
Odd(X) присваивает значение TRUE, если число Х нечётное.
Величины в программировании, как и в математике, могут быть представлены как переменные и константы (постоянные).

Переменные
Переменные (имя переменной) – в программировании, как и в математике, обозначаются символическими именами называемые – идентификаторами (идентифицировать-обозначать). Имя каждой переменной уникально и не может меняться в процессе выполнения программы.
Именем переменной в Паскале может служить любая последовательность латинских букв, цифр и знака подчёркивания, не начинающаяся с цифры, содержащая до 255 символов, кроме пробела, знаков препинания, других символов.

Правильная запись: Неправильная запись:
A x velisch zzz polnaja_summa Ж 2as polhaja summa er&tu

Значениями переменных могут быть данные различных типов, тип переменной определяется типом данных, которые могут быть значениями переменной.
Значениями переменных числовых типов (Real, Integer, Long Int) – являются числа.
Значениями переменных символьного типа (Char, String) – являются последовательность символов.
Значениями переменных логических типов (Boolean) – True (истина) или False (ложь).
Над различными типами данных (различными типами переменных) допустимы различные операции. Над числовыми переменными возможны арифметические операции, над логическими переменными – логические операции, над строковыми переменными операции преобразования символьных строк.
Различные типы данных требуют для своего хранения в оперативной памяти компьютера различное количество ячеек (байтов): числовые 1-8 байт; логические 1 байт; строковые 1 байт на каждый символ.

Для объявления типа переменной используется оператор (служебное слово) определения переменной VAR (вар) – переменная.

Синтаксис оператора описания переменных:
VAR (имя переменной) : (тип переменной);

С помощью одного оператора можно описать сразу несколько переменных.
(пример): VAR x, y : Integer;
shastnoe : Real;
оtvet : String;
Константы.
Переменные, значения которых не меняются в процессе выполнения программы, называются – константы

Синтаксис объявления констант:
CONST (имя константы) = (значение константы);

(пример):
CONST Pi = 3.14159;

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


Правила записи арифметических выражений на языке ПАСКАЛЬ:

Выражение должно быть записано в виде линейной цепочки символов. (2*х)/(y+3) ,а не 13 EMBED Equation.3 1415
Нельзя опускать знаки операций. (4*х, а не 4х).
Большие и сложные выражения нужно разбивать на несколько простых выражений, а повторяющиеся действия вычисляются отдельно.
В выражениях разрешается писать только круглые скобки, количество скобок не ограничено, в правильно записанном выражении число открывающих и число закрывающих скобок должно быть равным.
В десятичных дробях ставится точка . ,а не запятая , .
Аргументы функций записываются в круглых скобках ( ).





Структура программы на языке ПАСКАЛЬ.

Program <название программы>;
Var
<раздел описания> {описываются переменные, константы, процедуры, функции}
Begin {би’гин - начало}
<раздел операторов>;
End. {энд - конец}


Раздел операторов

Для задания действий над данными служит оператор (команда).
Набор допустимых операторов и их синтаксис чётко определён.
Не важно, какими буквами: заглавными или строчными и каким шрифтом записаны названия служебных слов и операторов
Пример: BEGIN или begin или bEgIn .
В конце каждого оператора ставится ; разделитель между операторами.

BEGIN читается (би’гин) – начало. Ставится в начале программы, чтобы компьютеру было видно, откуда она начинается.

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

Точкой с запятой ( ; ) необходимо отделять операторы друг от друга. Служебные слова BEGIN и END от операторов точкой с запятой отделять не нужно.

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

Синтаксис оператора присваивания

<имя переменной> : = <значение или выражение>
пример: х := 6; z := x+y; x := x+y;
Слева может стоять только переменная, не число и не выражение. Оператор сначала смотрит или вычисляет, какое значение имеет правая часть, а затем присваивает это значение переменной.
Если правая часть содержит переменную, которой не присвоено значение, то ПАСКАЛЬ может подставить любое значение вместо переменной.

Оператор ввода данных

Ввод с клавиатуры во время работы программы исходных данных (значений переменных), т.е присвоение переменным значений, выполняется с помощью операторов READ и READLN.

Синтаксис оператора ввода
READLN (рид’лайн) – читай строку
READ (Рид) – читай.

READLN ( переменная1, переменная2);

Пример: READLN (dlinna, visota, schirina);
Вводимые значения заключаются в круглые скобки.

Оператор READLN или оператор READ приказывают компьютеру остановится и ждать, когда программист введёт с клавиатуры данные, после чего продолжить работу.
Если вводятся несколько данных, то они вводятся в той последовательности, в которой записаны переменные, которым присваиваются их значения, и разделяются знаком пробела. ПАСКАЛЬ воспринимает нажатие пробела как сигнал программиста о том, что закончен набор на клавиатуре одного числа и сейчас начнётся набор другого. После набора на клавиатуре последнего числа необходимо нажать клавишу ENTER в знак того, что ввод чисел для данного оператора закончен, и компьютер может продолжать работу. Направляет числа в память, в соответствующие ячейки и переходит к следующему оператору.
В принципе оператор присваивания ( := ) и оператор ввода (READLN и READ) делают одно и тоже, присваивают переменным значения. Однако программа с использованием оператора ввода (READLN и READ) гораздо универсальнее, если оператор присваивания ( := ) решает задачу с конкретными данными (числами), то оператор ввода (READLN и READ) решает задачу с любыми значениями данных (чисел) введённых с клавиатуры.
Оператор READLN может использоваться и без скобок READLN;
В таком случае, компьютер остановится и будет ждать, но не ввода какой-то информации, а просто нажатия клавиши ENTER. Таким образом, это просто оператор создания паузы в процессе выполнения программы.
НАПРИМЕР: выполнив программу, ПАСКАЛЬ торопится погасить экран с результатами решения задачи. Поэтому результат не возможно разглядеть. Оператор READLN поставленный после оператора вывода WRITELN, выводящего результат на экран, задаёт паузу. Во время этой паузы экран не гаснет, так как программа ещё не завершена до конца (END.) и можно посмотреть результаты. После этого нажатие клавиши ENTER позволяет компьютеру продолжить выполнение программы, то есть закончить её командой END. .

Оператор вывода данных

Вывод на экран монитора сообщений и значений переменных (результат) выполняется с помощью операторов вывода WRITE и WRITELN.
Синтаксис оператора вывода

WRITELN (райт’лайн) – пиши строку
WRITE (райт) – пиши.

1) WRITELN ( результат1, результат2); или
2) WRITELN ( выражение1, выражение2);
Выводимые значения заключаются в круглые скобки.

Пример:
1) WRITELN (ploschad, objm);
программа выведет на экран значение переменных 34 18
2) WRITELN (dlina*schirina, ploschad*visota);
программа подставит значения переменных, произведёт вычисления и выведет на экран результат 34 18

Правила записи и выполнения операторов WRITELN и WRITE одинаковые с одним исключением, после выполнения оператора WRITELN следующий оператор WRITELN или WRITE печатает свою информацию с начала следующей строки (при использовании WRITELN курсор переводится на новую строку), а после выполнения оператора WRITE продолжает печатать в той же строке.
Пример: WRITE(5) ; WRITE(8); на экране будет 58

WRITELN(5); WRITELN(8); на экране будет 5
8
Вывод чисел типа REAL

Переменные, описанные как REAL, ПАСКАЛЬ выводит на экран в экспоненциальном формате ( число 72 будет выведено как 7.20000000000000Е+0001 ).
Чтобы ПАСКАЛЬ выводил вещественные числа типа REAL в обычном виде необходимо записывать WRITELN (ploschad:10:3), а не WRITELN (ploschad).
Число 10 значит, что всё изображение числа не должно занимать больше 10 символов, включая: целую часть, дробную часть, знак числа, и десятичную точку, число 3 означает три знака после десятичной точки. Целая часть числа будет составлять 10 – (3 знака после запятой) – (1 знак числа) – (1 десятичная точка) = 5 знаков. Если целая часть меньше 5 знаков, то пробелы отображаться не будут, если больше 5 знаков, то целая часть числа всё равно будет печататься полностью.




Порядок составления программы:

Определить последовательность решения задачи - разработать алгоритм решения
( Программа - это инструкция по её решению, определить формулы её решения).
Определить количество используемых переменных и придумать имена переменных.
(Имя переменной должно говорить о её смысле. Чтобы и после какого-то времени можно было бы легко разобраться в программе, лучше писать schirina, а не Х ).
Определить тип используемых переменных и описать их.
Определить способ и задать исходные данные решения задачи – продумать интерфейс. (Используя оператор присваивания := или оператор ввода READLN).
Задать действия, которые надо проделать с исходными данными, чтобы получить результат.
Вывести на экран полученный результат.
( Используя операторы вывода WRITELN или WRITE).


Интерфейс пользователя
Некоторые приёмы, делающие программу более наглядной, простой для понимания и для работы с ней.
Когда программа запускается на выполнение, она делает паузу на операторе ввода и ждёт вводимых данных. Мы видим пустой экран монитора, на котором нет никаких обозначений, что от нас ждёт компьютер или какие данные мы должны ввести. То есть трудно догадаться, особенно с течением времени после создания программы или использованием её другим пользователем, что компьютер чего-то ждёт. Это не очень удобно, хорошо было бы, если на экране выводилось указание дальнейших действий. Это касается и вывода результатов. На пустом экране выводятся числа, не всегда понятно их значение.
Всё это означает, что у нашей программы неудобный интерфейс пользователя, то есть пользователю, применяющему нашу программу не удобно с ней работать.
Чтобы интерфейс стал более удобным, необходимо ввести новые элементы.

1) Перед выводом данных, вывести на экран указания к вводу данных, в форме текстовых констант (текст комментария заключённый в апострофы (кавычки)).
Синтаксис
WRITELN(комментарий – текстовая константа’);
Пример:
WRITELN (введите значение длинны, ширины и высоты’);
На экране во время паузы для ввода данных появится надпись: введите значение длинны, ширины и высоты.

2) Подобно выводятся пояснения к выводимому результату.
Синтаксис
WRITELN(комментарий ’,переменная, комментарий ’,переменная);
Пример:
WRITELN (площадь фигуры равна’, ploschad, ’объём фигуры равен’ , objm:10:3);
На экране будет выведен результат виде:
площадь фигуры равна 34 объём фигуры равен 18

3)В программе также могут использоваться комментарии взятые в фигурные скобки { комментарии}
Пример: ploschad := dlina *schirina; { нахождение площади фигуры}
Пример:
Программа с «неудобным» интерфейсом
program korobok;
var shirina, tol, ploshad : integer;
visota, objom : real;
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·


Программа с «удобным» интерфейсом.

program korobok; {нахождение площади основания и объёма параллелепипеда}
var shirina, tol, ploshad : integer;
visota, objom : real;
begin
writeln('введите ширину, толщину, высоту');
readln(shirina, tol, visota);
ploshad:=shirina * tol;{нахождение площади основания}
objom:=ploshad * visota;{вычисление объема параллелепипеда}
writeln('площадь ',ploshad,' ','объём',objom:10:2);
readln
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·('здравствуй, я компьютер, а тебя как зовут?');
readln(imya);
writeln('очень приятно, ',imya,'. Сколько тебе лет?');
readln(vozrast);
writeln('ого! целых ',vozrast,' лет! Ты уже совсем взрослый!')
end.



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

БЛОК-СХЕМА














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

PROGRAM <название программы>;
VAR <описание переменных>;

BEGI
READLN (ввод данных) ;

ОПЕРАТОР 1 ;
ОПЕРАТОР 2 ;
ОПЕРАТОР 3 ;
ОПЕРАТОР n ;

WRITELN (вывод результата) ;
END. Пример:
Найти гипотенузу и площадь прямоугольного треугольника, если известны катеты. ( Значения катетов вводятся с клавиатуры.)

PROGRAM poisk gipotenuzi I ploschadi;
VAR katet_1, katet_2, gipotenuza, ploschad : REAL;

BEGIN
WRITELN (введите значение катетов’);
READLN (katet_1, katet_2);
gipotenuza := sqrt ( sqr ( katet_1) + sqr ( katet_2));
ploschad := ( katet_1 * katet_2) / 2;
WRITELN (гипотенуза равна’,gipotenuza:5:2, ’площадь треугольника равна’ ,ploschad:5:2);
END.
Условные алгоритмические конструкции

Оператор «ветвление»

В алгоритмическую структуру «ветвление» в отличие от линейного алгоритма входит условие. В зависимости от выполнения или не выполнения, которого реализуется та или иная последовательность команд (операторов). Условием называется высказывание, которое может быть либо истинным, либо ложным.
Условие, записанное на формальном языке – называется логическим выражением. Логические выражения могут быть простыми и сложными. Сложное – это объединение простых условий по средствам логических операций (и, или, не).

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

Синтаксис оператора.

IF <условие> THEN <оператор1> ELSE <оператор2>;

IF (иф) – если
THEN (зэн) – то
ELSE (элз) – иначе

После THEN и ELSE – стоять может только один оператор, (любой оператор ПАСКАЛЯ).
Перед ELSE точку с запятой ставить запрещено.

Под условием будем понимать арифметические выражения соединённые знаком сравнения ( <, >, =,<>, <=, >= ), или несколько выражений сравнения, соединенных знаками логических операций AND (и), OR (или), NOT (не). Условия, к которым применяются логические операции, заключаются в круглые скобки, пример: IF (a>b) and (a Если условие справедливо, то результатом будет логическая величина «истина» и выполнение программы продолжается по ветви «да» (по пути THEN (то)), в противном случае логическое выражение примет значение «ложь» и выполнение программы пойдёт по ветви «нет» (по пути ELSE (иначе)).

БЛОК СХЕМА
















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

PROGRAM <название программы>;
VAR <описание переменных>;

BEGIN

IF <условие>

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

ELSE <оператор 2>;
END.
Пример:
Найти большее из двух чисел. (Числа вводятся с клавиатуры).


PROGRAM bolschee iz dvug;
VAR a,b : REAL;

BEGIN
WRITELN (ведите 2 числа’) ; {пояснительная надпись}
READLN (a,b) ;

IF a>b {определение большего числа
THEN WRITELN(a) и вывод результата на экран}
ELSE WRITELN(b);

READLN; {установка паузы для просмотра результата}
END.









Условный оператор может быть записан и в краткой форме.

Синтаксис оператора «не полное ветвление»

IF <условие> ТHEN <оператор> ;

БЛОК СХЕМА

















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

PROGRAM <название программы>;
VAR
· <описание переменных>;

BEGIN
WRITELN <ввод данных>;

IF <условие>

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

END.


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

PROGRAM bolschee iz dvug;
VAR a : REAL;
BEGIN
WRITELN (ведите число’) ; {пояснительная надпись}
READLN (a) ;

IF a<0 {определение знака числа}
THEN a := ABS (a) ; { значение числа берётся по модулю}
WRITELN (a); { вывод результата на экран}

READLN ; {установка паузы для просмотра результата}
END.

Если выбор необходимо сделать из 3 вариантов. Для этого используется схема вложенного ветвления. Где после THEN и ELSE может стоять ещё одно ветвление.
БЛОК СХЕМА



















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

PROGRAM <название программы>;
VAR <описание переменных>;

BEGIN
WRITELN <ввод данных>;
IF <условие>
THEN
IF <условие>
THEN <оператор 1>
ELSE <оператор 2>

ELSE
IF <условие>
THEN <оператор 3>
ELSE <оператор 4>;
END. Пример: Найти большее из трёх чисел. (Числа вводятся с клавиатуры).

PROGRAM bolschee_iz_3;
VAR a,b,c :REAL;
BEGIN
WRITELN (введите три числа’);
READLN (a,b,c);
IF a>b
THEN
IF a>c
THEN WRITELN (a)
ELSE WRITELN (c)
ELSE
IF b>c
THEN WRITELN (b)
ELSE WRITELN (c);
READLN;
END. Существует неудобство от того, что после THEN и ELSE можно писать только один оператор.
В ПАСКАЛЕ есть средство превратить последовательность записанных друг за другом операторов формально в один оператор. Для этого последовательность операторов заключается между словами begin и end. Получившаяся конструкция называется – составным оператором.
Составной оператор используется в тех местах программы, в которые разрешёно использование только одного оператора.
Слова, составляющие пару THEN и ELSE, BEGIN и END записываются друг под другом.































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

Синтаксис оператора

CASE <переменная> OF {в случае, если переменная равна }
<значение переменной> : <оператор 1> ;
<значение переменной> : <оператор 2> ;
<значение переменной> : <оператор 3> ;
<значение переменной> : <оператор n> ;
ELSE <оператор n+1>;
END; {конец оператора CASE}

CASE (кейс) – случай {в случае если переменная равна}
OF (эв) – предлог


БЛОК СХЕМА

















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

PROGRAM название программы
VAR описание переменных

BEGIN
RЕADLN (ввод данных)
CASE переменная OF
Значение переменной : оператор 1;
Значение переменной : оператор 2;
Значение переменной : оператор 3;
ELSE оператор 4;
END ;
WRITELN (вывод результата);
END.

Пример:
По введённому номеру ноты вывести на экран её словесное название.

PROGRAM notnaj azbuka;
VAR nomer_noti : INTEGER ;
BEGIN
WRITELN (введите номер ноты’);
RЕADLN (nomer_noti);
CASE nomer_noti OF
1 : WRITELN (ДО’);
2 : WRITELN (РЕ’);
3 : WRITELN (МИ’);
4 : WRITELN (ФА’);
5 : WRITELN (СОЛЬ’);
6 : WRITELN (ЛЯ’);
7 : WRITELN (СИ’)
ELSE WRITELN (ТАКОЙ НОТЫ НЕТ’);
END ;
END.
В процессе исполнения оператора CASE компьютер по очереди сравнивает значение переменной со всеми значениями, перечисленными перед двоеточиями. Встретив совпадающее значение, он выполняет оператор, стоящий после двоеточия. На этом исполнение оператора CASE завершается. Если же совпадающего значения так и не нашлось, то выполняется оператор стоящий после слова ELSE. После ELSE может стоять цепочка операторов записанных через точку с запятой.
Если оператор CASE не найдёт совпадения с переменной, не выберет ни один из своих вариантов и при отсутствии ELSE, то он завершает свою работу, так ничего и не сделав.

У оператора CASE есть ограничения – переменная стоящая после слова CАSE должна быть порядкового типа (Integer, Long Int, Char).








Циклические алгоритмические конструкции
Циклические программы

Циклы позволяют многократно выполнять отдельный оператор или последовательность операторов, причём при этом нет необходимости записывать в тексте программы одинаковые операторы несколько раз.
То есть ЦИКЛ – главное средство заставить компьютер много раз сделать одно и тоже.
Циклы позволяют многократно выполнять отдельный оператор или последовательность операторов, причём при этом нет необходимости записывать в тексте программы одинаковые операторы несколько раз.

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

Синтаксис конструкции цикл со счётчиком.

FOR <параметр цикла> := <выражение 1> TO <выражение 2> DO
<оператор> ;

FOR <фор> - для
TO <ту> - до
DO <ду> - делай
{для I изменяющегося от1 до 50 делай(операторы)}

Вариант использования «обратного» счётчика DOWNTO.

FOR <имя переменной> := <выражен1> DOWNTO <выражен2> DO
<оператор> ;

DOWNTO (даунту) – вниз до
{для I изменяющегося от 50 до 1 делай(операторы)}






БЛОК СХЕМА















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

PROGRAM название программы
VAR описание переменных

BEGIN
RIADLN (ввод данных);

FOR i:= (нач.зн) TO (кон.зн) DO

ОПЕРАТОР 1 ;
ОПЕРАТОР 2 ;
ОПЕРАТОР n ;
WRITELN (вывод результата);
END.


В операторе FOR обязательно указываются параметры:
Имя переменной – в которой хранится число повторений цикла (счётчик цикла – порядковая перечисляемая переменная).
Начальное значение или Выражение 1 – начальное значение для переменной цикла (счётчика), которое она получает при первом выполнении цикла.
Конечное значение или Выражение 2 – некоторое конечное значение (для переменной цикла) достигнув которое повторение цикла прекращается (условие завершение цикла).

В качестве переменной цикла должна выступать порядковая (перечисляемая) переменная типа INTEGER. Тип REAL не допустим.
Пример: FOR j := 1 TO 15 DO k:=k+1 ;
В начале выполнения цикла значение переменной счётчик (i) устанавливается равным начальному значению. При каждом проходе цикла переменная счётчик увеличивается на величину шага. Если она достигает величины, большей конечного значения, то цикл завершается и выполняется следующая за ним команда.

Выражение 1 и выражение 2 – произвольные выражения порядкового (целого) типа.
Пример: FOR j := a+b TO 2*S DO k:=k+1 ;
Вычисляется выражение1 и переменной цикла i присваивается его значение. Затем вычисляется выражение 2 и сравнивается с i. Если i> выражения 2, то оператор FOR завершает работу, так не чего и не сделав.

В противном случае выполняется оператор (составной оператор) стоящий после DO. После выполнения этого оператора значение i увеличивается на единицу и снова сравнивается с выражением 2.
Если i > выражения 2 то оператор FOR завершает работу, иначе снова выполняется оператор стоящий после DO, снова значение i увеличивается на единицу и так далее.
После DO может стоять только один оператор, по этому при необходимости используют составной оператор, заключённый в операторные скобки BEGIN и END.

Произвольные значения, хранящиеся изначально в переменных должны быть ”уничтожены” – обнулены. Поэтому мы присваиваем переменной обозначающей сумму значение ноль (summa:=0), а переменной обозначающей произведение значение единицы (proizvidenie:=1). Иначе в операции сложения при выполнении цикла будет участвовать произвольное значение переменной summa (proizvedenie ) т.е. любое произвольное число выбранное ПАСКАЛЕМ, а в повторном выполнении значение предыдущего сеанса работы.


Пример:
Написать 20 раз слово ИНФОРМАТИКА.

PROGRAM kopirovanie ;
VAR i : INTEGER ;
BEGIN
FOR i:= 1 TO 20 DO
WRITELN (ИНФОРМАТИКА’);
END.


Пример:
Найти сумму натуральных чисел от 1 до 20.
PROGRAM summa_schisel ;
VAR i , summa : INTEGER ;
BEGIN
summa = 0;
FOR i:= 1 TO 20 DO
summa := summa + i;
WRITELN (сумма 20 чисел равна’, summa);
END.



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

Цикл с постусловием (оператор REPEAT):

Синтаксис конструкции цикл с постусловием.
REPEAT <оператор 1; оператор 2; ... оператор n;> UNTIL <условие>
REPEAT (рипит) - повторяй.
UNTIL (ан’тил) - до тех пор, пока не станет истинным условие.

Принцип работы оператора REPEAT - повторяй выполнение операторов, стоящих между словами REPEAT и UNTIL до тех пор, пока не станет истинным условие.
С начала компьютер по очереди выполняет операторы, стоящие после слова REPEAT, пока не дойдёт до слова UNTIL. После чего проверяет истинность условия, стоящего после UNTIL. Если условие ложно, то компьютер снова по очереди выполняет эти операторы и снова проверяет истинность условия и так далее.
Если условие оказывается истинным, то работа оператора REPEAT прекращается и компьютер переходит к выполнению следующего по порядку оператора.
Таким образом, инструкции, находящиеся между REPEAT и UNTIL, выполняется до тех пор, пока условие ложно (значение выражения равно FALSE).
Обратите внимание:
Инструкция цикла, между REPEAT и UNTIL, всегда будут выполнены хотя бы один раз.
Для того, чтобы цикл завершился, необходимо, чтобы инструкции цикла, находящиеся между REPEAT и UNTIL, изменяли значения переменных, входящих в выражение условие.


БЛОК СХЕМА

















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

PROGRAM название программы
VAR описание переменных

BEGIN
RIADLN (ввод данных);

REPEAT
ОПЕРАТОР 1 ;
ОПЕРАТОР 2 ;
ОПЕРАТОР n ;
UNTIL (условие)

WRITELN (вывод результата)
END. Пример:
Возведите число a в степень n (число и значение степени вводится с клавиатуры).
PROGRAM vozvedenie v stepen ;
VAR a : INTEGER ;
n : INTEGER ;
i : INTEGER ;
otvet : INTEGER ;
BEGIN
WRITELN (введите число a ’);
READLN (a);
WRITELN (введите значение степени n ’);
READLN (n);
otvet := 1;
i := 1;

REPEAT
otvet := otvet *a ;
i := i + 1 ;
UNTIL i > n ;
WRITELN (a , в степени , n , = , otvet);
END.

Цикл с предусловием (оператор WHILE):
Оператор WHILE - близнец оператора REPEANT, они почти равны по возможностям и почти одинаково выполняются.
Синтаксис конструкции цикл с постусловием.
WYILE <условие> DO <оператор>;
WHILE (вайл) - пока.
DO (ду) - делай.
Принцип работы оператора WHILE - пока истинно условие, делай (выполняй) оператор.
С начала компьютер проверяет истинность условия, стоящего после слова WНILE, если условие истинно, то выполняется оператор, стоящий после DO. Затем снова проверяется истинность условия и в случае истинности, снова выполняется этот оператор и так далее. Если условие ложно, то оператор WHILE прекращает свою работу и компьютер переходит к выполнению следующего оператора.
После WHILE может стоять только один оператор, но он может быть составным, по этому тело цикла у оператора WHILE, так же как и у оператора REPEAT, может состоять из многих операторов, заключённых между операторными скобками BEGIN – END.

БЛОК СХЕМА
















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

PROGRAM название программы ;
VAR описание переменных ;

BEGIN
RIADLN (ввод данных);

WHILE (условие) DO
ОПЕРАТОР 1 ;
ОПЕРАТОР 2 ;
ОПЕРАТОР n ;

WRITELN (вывод результата)
END.
Пример:
Возведите число a в степень n (число и значение степени вводится с клавиатуры).
PROGRAM vozvedenie v stepen ;
VAR a : INTEGER ;
n : INTEGER ;
i : INTEGER ;
otvet : INTEGER ;
BEGIN
WRITELN (введите число a ’);
READLN (a);
WRITELN (введите значение степени n ’);
READLN (n);
otvet := 1;
i := 1;

WHILE i <= n DO
BEGIN
otvet := otvet *a ;
i := i + 1 ;
END ;
WRITELN (a , в степени , n , = , otvet) ;
END.




Отличие операторов REPEAT и WHILE:
компьютер выходит из цикла оператора REPEAT тогда, когда условие истинно, а из цикла оператора WHILE - когда условие ложно;
в конструкции WHILE может ни разу не выполнится оператор, стоящий после DO, в конструкции REPEAT операторы, стоящие между REPEAT и UNTIL хотя бы раз выполняются;
в операторе REPEAT не надо использовать составной оператор, операторные скобки BEGIN – END;
при компиляции оператор WHILE даёт несколько более эффективную программу, чем оператор REPEAT.




Коротко о главном.
Программа с линейной структурой:
Программы с линейной структурой является простейшими и используются, как правило, для реализации обычных вычислений по формулам;
В программах с линейной структурой инструкции выполняются последовательно, одна за другой;
2. Ветвление(IF):
Конструкция IF используется для выбора одного из двух направлений дальнейшего хода программы (последовательности инструкций, которые должны быть выполнены);
Выбор последовательности инструкций осуществляется во время выполнения программы в зависимости от выполнения условия;
Условие - это выражение логического типа, которая может принимать одно из двух значений: TRUE (истина - условие выполняется) или FALSE (ложь - условие не выполняется);
При помощи логических операций AND (логическое «И») и OR (логическое «ИЛИ») из простых условий можно строить сложные.
3. Выбор (CASE):
Конструкция CASE используется для выбора одного из нескольких направлений дальнейшего хода программы (последовательности инструкций, которые должны быть выполнены);
Выбор последовательности инструкций осуществляется во время выполнения программы в зависимости от равенства значения переменной - селектора константе, указанной перед группой инструкций;
В качестве переменной - селектора можно использовать переменную порядкового типа: целого (INTEGER) или символьного (CHAR).
4. Цикл со счётчиком (FOR):
Конструкция FOR используется для организации циклов с фиксированным, определяемым во время разработки программы, числом повторений;
Количество повторений цикла определяется начальным и конечным значениями переменной - счётчика;
Переменная - счётчик должно быть порядкового типа: целого (INTEGER) или символьного (CHAR)

.
5. Цикл с постусловием (REPEAT):
Число повторений инструкций цикла REPEAT определяется ходом выполнения программы;
Инструкции цикла REPEAT выполняется до тех пор, пока условие, стоящие после слова UNTIL, ложно;
После слова UNTIL надо записывать условие завершения цикла;
Для завершения цикла REPEAT в теле цикла обязательно должны быть инструкции, выполнение которых влияет на условие завершения цикла;
Цикл REPEAT - это цикл с постусловием, то есть инструкции тела цикла будут выполнены хотя бы один раз;
Цикл REPEAT, как правило, используется для организации приближённых вычислений, задач поиска и обработки данных, вводимых с клавиатуры или из файла;
6. Цикл с предусловием (WHILE);
Число повторений инструкций цикла WHILE определяется ходом выполнения программы;
Инструкция цикла WHILE выполняется до тех пор, пока условие, записанное после слова WHILE, истинно;
После слова WHILE надо записывать условие выполнения инструкций цикла;
Для завершения цикла WHILE в теле цикла обязательно должны присутствовать инструкции, влияющие на условие выполнения инструкций цикла;
Цикл WHILE - это цикл с предусловием, то есть инструкции тела цикла вообще могут быть не выполнены;
Цикл WHILE, как правело, используются для организации приближённых вычислений, задач поиска и обработки данных, вводимых











Массивы.

Массив- числовой рад, это несколько чисел, выстроенных по порядку, чисел в раду может быть бесконечно много.
Пример: 1[1] -1[365] – температура по дням.
Иногда имеется большое количество данных, эти данные, компьютер должен обработать, выполнить какую-то операцию. Раньше мы выполняли подобные операции и при этом вводили данные в компьютер с клавиатуры одно задругам в одну и туже ячейку памяти, но часто удобно или необходимо иметь данные в оперативной памяти все сразу, иметь массив данных.
Массив- это можно сказать рад ячеек памяти отведённых для хранения значений индексированных переменных.

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

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

В одномерном массиве для получения доступа к его элементам достаточно одной индексной переменной.
Чтобы в программе использовать элемент массива, надо указать имя массива и номер элемента - индекс (выражение целого типа), заключив его в квадратные скобки.
а[i] а[i+1] a[i+2] а[i+3] ...

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



1) Описание массива
Перед использованием массив, как и любая переменная, должен быть объявлен в разделе объявления переменных. В общем виде объявление массива выглядит так:
имя : array [нижний _индекс верхний_индекс] of тип переменных

-имя – имя переменной массива;
- array - ключевое слово, обозначающее, что переменная является массив
- нижний-индекс и верхний-индекс - целые числа, определяющие диапазон изменения индексов (номеров) элементов массива и, неявно, количество элементов (размер) массива;
- тип переменных - тип элементов массива.

При меры объявления массивов :
Var temper : array [1..31] of real; -массив из 31 вещественных числа
Var D : array [1..12] of integer; - массив из 12 целых чисел
Var name : array [1..31] of string [25];
2) Ввод массива - задание начальных значений
Под вводом массива понимается ввод значений элементов массива. Как и вывод массива, ввод удобно реализовать при помощи цикла (инструкции For). Чтобы пользователь программы знал, ввода какого элемента массива ожидает программа, следует организовать вывод подсказок перед вводом очередного элемента массива. В подсказке обычно указывают индекс элемента массива.
Пусть объявлен массив а, состоящий из 5 элементов типа integer. Тогда значения могут быть заданы следующими способами:
С клавиатуры

С помощью Генератора случайных чисел

for i:=1 to 5 do
begin
write (введите число’);
readln (a[i]);
end;
или
for i:=1 to 5 do
begin
write (a[, i ,’]=’);
readln (a[i]);
end;
Randomize
for i:=1 to 5 do
begin
a[i] := Random(10);
write (a[, i ,’]=’ ,a[i],’ );
end;


Ввод значений массива по условию:
for i:= 1 to 5 do
begin
a [i] := 3* i+2;
5
8
11
14
17

writeln ( a[i] );
end;
Пример: в результате выполнения данного фрагмента в ячейки запишутся значения
a [1] a[2] a[3] a[4] a[5]

3) Работа с элементами массивов

1. Нахождение суммы (произведения) с поиском.

1.1 Вычисление суммы элементов.
Summa := 0;
For i:=1 to n do
Summa := summa + a[i];

1.2 Найти сумму положительных элементов массива:
Summa := 0;
For i:=1 to n do
If a[i] >0 Then Summa := summa + a[i];

1.3 Найти сумму элементов делящихся на 5
Summa := 0;
For i:=1 to n do
If a[i] mod 5 = 0 Then Summa := summa + a[i];
1.4 Найти произведение элементов массива стоящих на нечётных местах (чётных)
p := 1
For i:=1 to n do
If i mod 2 = 1 Then p:= p * a[i];
(2 = 0)








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

2.1 Найти все элементы массива больше его среднего арифметического
summa := 0;
For i:=1 to n do
summa := summa + a[i];
Sred_Arif := summa / n
For i:=1 to n do
If a[i] > Sred_Arif Then Writeln ( a[i] );

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

Нахождение МАКС/МИН значения массива и его адреса (темпера туры за месяц).
max := а[1]; { max - максимальный, элемент}
Nmax := 1 ; { Nmax- номер макс. элемента}
For i:=1 to n do
If a[i] > max Then ( If a[i] < min Then )
Begin
max := a[i];
Nmax := i;
end;
1)если в условии знак > то мы находим максимальный элемент, если знак < то минимальный.
2) если неравенство строгое (> или <) то мы находим первый максимальный или минимальный элемент, а если нестрогое (>=или<=) то последний.
3. Нахождение количества элементов по условию.
Пример: найти количество чётных элементов массива. Коl:=0;
For i:=1 to n do
If a[i] mod 2 = 0 Then kol:= kol + 1;
4. Изменение элементов массива.
Пример: увеличить вдвое каждый элемент массива.
For i:=1 to n do
a [i] := a[i] * 2;
5. Сортировка массива.
5.1 Сортировка методом прямого выбора.
Алгоритм сортировки массива по возрастанию методом прямого выбора:
1. Просматривая массив от первого элемента, найти минимальный элемент и поместить его на место первого элемента, а первый - на место минимального.
2. Просматривая массив от второго элемента, найти минимальный элемент и поместить его на место второго элемента, а второй - на место минимального.
3. И так далее до предпоследнего элемента.
BEGIN
For k :=1 to 5 do read (a[k]); {ввод массива}
For i:= to 5-1 do
Begin
min := i;
for c := i + 1 to 5 do
Begin
if a[c] < a[min] then min := c;
buf := a[i];
a[i] := a[min];
a[min] := buf;
For k :=1 to 5 do write (a[k],’ ); {вывод массива}
readln;
readln;
End;
END;
buf- буфер обмена,
с- элемент сравниваемый с минимальным
min - номер минимального элемента в части от i до верхней
границы массива.
k - номер элемента массива.
5.2 Сортировка методом прямого обмена
В основе алгоритма лежит обмен соседних элементов массива. Каждый элемент массива, начиная с первого, сравнивается со следующим, и если он больше следующего, то элементы меняются местами. Таким образом, элементы с меньшим значением продвигаются к началу массива (всплывают), а элементы с большим значением к концу массива (тонут), поэтому этот метод иногда называют методом "пузырька". Этот процесс повторяется на единицу меньше раз, чем элементов в массиве.
Ниже показан пример процесса сортировки массива. Буквой "а" обозначено исходное состояние массива и перестановки на первом проходе, буквой "б" состояние после перестановок на первом проходе и перестановки на втором проходе и т. д.
I=1 3 2 2 2 1
I=2 2 3 3 1 2
I=3 4 4 1 3 3
I=4 5 1 4 4 4
I=5 1 5 5 5 5
а б в г д


Метод «пузырька».
BEGIN
For k :=1 to 5 do read (a[k]); {ввод массива}
For i:= to 5-1 do
Begin
For k := i to 5-1 do
Begin
If a[k] > a[k+1] then
Begin
buf := a[k];
a[k] := a[k+1];
a[k+1] := buf;
End;
End;
End;
For k :=1 to 5 do write (a[k],’ ); {вывод массива}
readln;
readln;
END;
Вывод массива.
Под выводом массива понимается вывод на экран значений элементов массива. Если в программе необходимо вывести значения всех элементов массива, то для этого удобно использовать инструкцию For, переменная-счетчик которой может быть использована как индекс элемента массива.

For i:=1 to n do Writeln (a[i]); - вывод массива в столбец.

For i:=1 to n do Write (a[i]);-вывод массива в строку.

For i:=1 to n do Writeln (a[,i,’]=’,a[i]); - вывод массива с указанием номера элемента в столбец.





































Графический интерфейс системы программирования Turbo PASCAL .

Для запуска Турбо ПАСКАЛЯ необходимо запустить файл turbo.exe.

Основные режимы работы
Режим строки меню
Режим клавиш

Развернуть окно программы на весь экран

ALT + ENTER

Переход к режиму работы с помощью строки меню

F10 клавиши управления курсором
ALT + первая буква пункта меню

Создание новой программы
File Nev ENTER


Запуск, компиляция и выполнения программы
Run Run ENTER
CTRL + F9

Открытие окна вывода результата работы программы

ALT + F5

Переход из окна вывода результата в окно программы

ENTER

Сохранение файла на диске
File Save ENTER
F2

Сохранение нескольких программ на диске
Save All ENTER


Открыть хранящуюся на диске программу
File Open ENTER
F3

Переход между листами введённых программ

ALT + номер листа

Выход из среды ТУРБО-ПАСКАЛЬ
File Exit ENTER
ALT + X

Компиляция программы
Compile
ALT + F9

Справка
Help
F1

Отладочный режим

F4

Увеличение строки отладки на весь экран

F5

Смена окна редактора на отладочное

F6

Выделение фрагмента программы

SHIFT + перемещение курсора

Вырезать фрагмент
Edit Cut
CTRL + DELETE

Скопировать фрагмент
Edit Copy
CTRL + INSERT

Вставить фрагмент
Edit Paste
SHIFT + INSERT

Переход с русского языка на английский



Переход с английского языка на русский














13PAGE 15


13PAGE 14115



НАЧАЛО

ВВОД

КОМАНДА 1
КОМАНДА 2
КОМАНДА 3
-----------------
КОМАНДА N

ВЫВОД

КОНЕЦ

НАЧАЛО

ВВОД

УСЛОВИЕ

СЕРИЯ КОМАНД 1

СЕРИЯ КОМАНД 2

ВЫВОД

КОНЕЦ

НАЧАЛО

ВВОД

УСЛОВИЕ

СЕРИЯ КОМАНД


СЕРИЯ КОМАНД

ВЫВОД

КОНЕЦ

НАЧАЛО

ВВОД

УСЛОВИЕ

УСЛОВИЕ

СЕРИЯ КОМАНД 3

СЕРИЯ КОМАНД 4

УСЛОВИЕ

СЕРИЯ КОМАНД
1

СЕРИЯ КОМАНД
2

ВЫВОД

КОНЕЦ

КОНЕЦ

ВЫВОД

НАЧАЛО

ВВОД

УСЛОВИЕ
1

СЕРИЯ КОМАНД 1

УСЛОВИЕ
2

УСЛОВИЕ
3

СЕРИЯ КОМАНД 2


СЕРИЯ КОМАНД 3


СЕРИЯ КОМАНД 4


СЕРИЯ
КОМАНД


КОНЕЦ

ВЫВОД

НАЧАЛО

ВВОД

СЧЁТЧК

СЕРИЯ
КОМАНД


КОНЕЦ

ВЫВОД

НАЧАЛО

ВВОД

УСЛОВИЕ

СЕРИЯ
КОМАНД


КОНЕЦ

ВЫВОД

НАЧАЛО

ВВОД

УСЛОВИЕ



Root Entry