
- •Кабель типа «витая пара» (twisted pair)
- •Оптоволоконный кабель
- •Радиосвязь
- •Связь в микроволновом диапазоне
- •Инфракрасная связь
- •При определении типа-диапазона нужно руководствоваться следующими правилами:
- •Массив в Паскале
- •Действия над массивами
- •Действия над элементами массива
- •Одномерные массивы
- •Массив в Паскале
- •Действия над массивами
- •Действия над элементами массива
- •Двумерные массивы
- •Описание матрицы на языке Паскаль
- •Соотношение индексов в квадратной матрице
- •Сортировка обменами (метод пузырька)
- •Оператор выбора
Сортировка обменами (метод пузырька)
В этом методе организуется последовательный перебор элементов массива A1, A2, ... AN и сравнение значений 2 соседних элементов. Если впереди находится элемент с большим значением, выполняется перестановка (при сортировке по возрастанию). Сортировка по убыванию будет отличаться только знаком операции (<, а не >) в операторе сравнения соседних элементов. Переменная m теперь используется как буфер для перестановки 2 соседних элементов в массиве.
Этот метод называют также методом пузырька, так как при его реализации наибольшие или наименьшие текущие элементы как пузырьки "поднимаются" к началу массива (или "опускаются" к его концу).
procedure Sort2 (n:integer; var a:array of integer);
{Сортировка обменами (метод пузырька)}
var m,i,j,n1,n2:integer;
begin
n1:=Low(a); n2:=Low(a)+n-1;
for i:=n1 to n2-1 do
for j:=n1 to n2-i-1 do
if a[j]>a[j+1] then begin
m:=a[j]; a[j]:=a[j+1]; a[j+1]:=m;
end;
end;
Число сравнений оценивается аналогично. Вообще, при сравнении элементов массива по принципу "каждый с каждым" проще всего представить эти элементы в виде прямоугольной таблицы-матрицы. Поскольку сравнить элементы 1 и 3 - то же самое, что сравнить 3 и 1, а сравнивать элемент с самим собой не нужно, получаем, что из n2 всех возможных сравнений нужно отнять n элементов на главной диагонали ("сравнения элемента с самим собой") и взять от этой величины половину:
Условный оператор и оператор выбора в TURBO PASCAL. Назначение. Формат. Сравнительная характеристика. Примеры использования.
Оператор условного перехода в Турбо Паскаль имеет вид:
if условие then оператор 1 else оператор 2;
условие - это логическое выражение, в зависимости от которого выбирается одна из двух альтернативных ветвей алгоритма. Если значение условия истинно (TRUE), то будет выполняться оператор 1, записанный после ключевого слова then. В противном случае будет выполнен оператор 2, следующий за словом else, при этом оператор 1 пропускается. После выполнения указанных операторов программа переходит к выполеннию команды, стоящей непосредственно после оператора if.
Необходимо помнить, что перед ключевым словом else точка с запятой никогда не ставится!
else - часть в операторе if может отсутствовать:
if условие then оператор 1;
Тогда в случае невыполнения логического условия управление сразу передается оператору, стоящему в программе после конструкции if.
Следует помнить, что синтаксис языка допускает запись только одного оператора после ключевых слов then и else, поэтому группу инструкций обязательно надо объединять в составной оператор (окаймлять операторными скобками begin ... end). В противном случае возникает чаще всего логическая ошибка программы, когда компилятор языка ошибок не выдает, но программа тем не менее работает неправильно.
Оператор выбора
Часто возникают ситуации, когда приходится осуществлять выбор одного из нескольких альтернативных путей выполнения программы. Несмотря на то, что такой выбор можно организовать с помощью оператора if .. then, удобнее воспользоваться специальным оператором выбора. Его формат:
case выражение of
вариант : оператор;
...
вариант : оператор;
end;
или
case выражение of
вариант : оператор;
...
вариант : оператор;
else оператор
end;
выражение, которое записывается после ключевого слова case, называется селектором, оно может быть любого перечисляемого типа. вариант состоит из одной или большего количества констант или диапазонов, разделенных запятыми. Они должны принадлежать к тому же типу, что и селектор, причем недопустимо более одного упоминания вариантав записи инструкции case. Из перечисленного множества операторов будет выбран только тот, перед которым записан вариант, совпадающий со значением селектора. Если такого варианта нет, выполняется оператор, следующий за словом else (если он есть).
Оператор цикла FOR... в TURBO PASCAL. Назначение. Формат. Примеры использования.
FOR <пар_цик> := <нач_знач> ТО <кон_знач> DO
<тело цикла>.
Здесь FOR, TO, DO - зарезервированные слова (для, до, выполнить);
<пар_цик> - параметр цикла - переменная типа INTEGER
<нач_знач> - начальное значение - выражение того же типа;
<кон_знач> - конечное значение - выражение того же типа;
<тело цикла> - произвольный оператор Турбо Паскаля.
При выполнении оператора FOR вначале вычисляется выражение <нач_знач> и осуществляется присваивание <пар_цик> : = <нач_знач>. После этого циклически повторяется:
1.проверка условия <пар_цик> <= <кон_знач>; если условие не выполнено, оператор FOR завершает свою работу;
2.выполнение оператора <тело цикла>;
3.наращивание переменной <пар_цик> на единицу.
Пример:
Вычислить суммы всех целых чисел от 1 до N.
var
i, n, s : integer;
begin
Write('N = ');
ReadLn(n); .
s := 0;
for i : =1 to n do
s : = s + i; {использовали параметр цикла i}
writeln('Сумма = ',s);
readln;
end.
Существует другая форма оператора:
FOR<пар_цик>: = <нач_знач> DOWNTO <кон_знач> DO <оператор>
Замена зарезервированного слова ТО на DOWNTO означает, что шаг наращивания параметра цикла равен (-1).
Пример:
var
i, n, s : integer;
begin
Write('N = ');
ReadLn(n); .
s := 0;
for i : =n downto 1 do
s : = s + i; {использовали параметр цикла i}
writeln('Сумма = ',s);
readln;
end.
Операторы цикла WHILE ...и REPEAT... UNTIL в TURBO PASCAL. Назначение. Формат. Сравнительная характеристика. Примеры использования.
WHILE <условие> DO
<тело цикла>
Здесь WHILE, DO - зарезервированные слова (пока [выполняется условие], делать);
<условие> - выражение логического типа;
<тело цикла> - произвольный оператор Турбо Паскаля.
Если выражение <условие> имеет значение TRUE, то выполняется <тело цикла>, после чего вычисление выражения <условие> и его проверка повторяются. Если <условие> имеет значение FALSE , оператор WHILE прекращает свою работу.
Пример:
var
i, n, s : integer;
begin
Write('N = ');
ReadLn(n); .
s := 0;
i : = 0;
while i<n do begin
i:=i+1;
s : = s + i;
end;
writeln('Сумма = ',s);
readln;
end.
Оператор цикла REPEAT... UNTIL с постпроверкой условия:
REPEAT <тело_цикла>
UNTIL <условие>.
Здесь REPEAT, UNTIL- зарезервированные слова (повторять до тех пор, пока не будет выполнено условие);
<тело_цикла> - произвольная последовательность операторов Турбо Паскаля;
<условие> - выражение логического типа.
Операторы <тело_цикла> выполняются хотя бы один раз, после чего вычисляется выражение <условие>: если его значение есть FALSE, операторы <тело_цикла> повторяются, в противном случае оператор REPEAT. . . UNTIL завершает свою работу.
Пример:
var
i, n, s : integer;
begin
Write('N = ');
ReadLn(n); .
s := 0;
i:=0;
repeat
i:=i+1;
s : = s + i;
until i=n;
writeln('Сумма = ',s);
readln;
end.
Оператор присваивания. Совместимость и преобразование типов данных при выполнении присваивания. Стандартные процедуры BREAK, CONTINUE, EXIT, HALT. Их назначение. Примеры использования.
Основное преобразование данных, выполняемое компьютером, - присвоение переменной нового значения.
Общий вид оператора присваивания:
Имя_переменной:=арифметическое выражение;
При выполнении оператора присваивания рассматривается арифметические выражения, из ячеек оперативной памяти, соответствующих стоящим там именам, вносятся в процессор значения и выполняется указанные действия над данными. Полученный результат записывается в ячейку памяти, имя которой указано слева от знака присваивания.
Например:
x:=3.14 |
Переменной х присвоить значение 3.14 |
a:=b+c |
Из ячеек b и c считываются заранее помещенные туда данные, вычисляется сумма, результат записывается в ячейку а |
i:=i+1 |
Значение переменной увеличивается на единицу |
Для типов переменной слева и арифметического выражения справа от знака присваивания существуют ограничения:
1) если переменная вещественного типа, то арифметическое выражение может быть как целого, так и вещественного типа, т. е. содержать либо целые переменные и допустимые для них операции, либо вещественные, либо и те, и другие (тогда выражение преобразуется к вещественному типу);
2) если переменная слева целого типа, то арифметическое выражение только целочисленное.
Это означает, что можно, например, вещественной переменной присвоить целое значение.
Если в процессе выполнения программы встречается пере присваивание (т.е. та же самая переменная принимает другое значение), то старое значение переменной стирается, на свободное место записывается новое значение. Команда присваивания позволяет лучше понять смысл слова переменная (т.е. меняющая своё значение по ходу программы).
BREAK применяется для досрочного прекращения циклов WHILE, REPEAT…UNTIL и FOR.
Пример: Определение номера первого нулевого элемента в массиве А
VAR i, num : Integer; A : array[1..10] of Integer; BEGIN . . . { Ввод элементов массива А } num := 0; FOR i:=1 TO 10 DO { Цикл для i от 1 до 10 } IF A[i]=0 THEN begin { если найден нулевой элемент } num := i; { запоминаем его номер } BREAK { прекращаем цикл } end; IF num <> 0 THEN WriteLn(num) ELSE WriteLn(‘Нулевых элементов нет’); END.
Процедура CONTINUE вызывает переход к следующей циклической итерации игнорируя расположенные ниже операторы, составляющие тело цикла.
Пример: Определение наибольшего общего делителя (НОД) двух чисел
VAR CommDiv, { кандидат в НОД } num1, { первое число } num2 : Integer; { второе число } BEGIN Write(‘Введите первое число: ’); ReadLn(num1); Write(‘Введите второе число: ’); ReadLn(num2); FOR CommDiv := num1 DOWNTO 1 DO begin IF (num2 mod CommDiv)<> 0 THEN CONTINUE; IF (num1 mod CommDiv) = 0 THEN begin WriteLn(‘Наибольший общий делитель: ’, CommDiv); BREAK end {if} end {for}
EXIT
Процедура EXIT завершает работу своего программного блока. Если EXIT вызывается внутри процедуры или функции, то их работа завершается. Если EXIT вызывается в основном блоке программы, то это приводит к ее завершению.
HALT
Процедура HALT, завершает работу программы.