- •Министерство образования и науки российской федерации
- •Оглавление предисловие
- •Составление структурных схем алгоритмов и программ
- •Пример 1
- •Пример 2
- •Задания
- •Пример 3
- •Задания
- •Пример 4
- •Пример 5
- •Задания
- •Алфавит языка pascal. Типы данных. Раздел описаний. Оператор присваивания. Ввод-вывод. Составление простейших программ
- •Стандартные процедуры
- •Стандартные функции
- •Пример 1
- •Пример 2
- •Задания
- •Пример 3
- •Задания
- •Задания
- •Использование переменных логического типа. Логический оператор присваивания
- •Логический оператор присваивания
- •R операция_сравнения s
- •Пример 1
- •Задания
- •4. Программирование разветвляющихся структур
- •4.1. Использование в программах условного оператора
- •Пример 1
- •Задания
- •4.2. Использование в программах оператора варианта
- •Case выражение-селектор of метка_случая : оператор;
- •Пример 1
- •Задания
- •5. Использование переменных типа char
- •Задания
- •6. Реализация циклических структур
- •6.1. Применение оператора цикла с параметром
- •Шаг изменения параметра цикла:
- •Пример 1
- •Задания
- •Пример 2
- •Пример 3
- •Задания
- •Пример 4
- •Задания
- •Таким образом изображаются циклы в структурных схемах (в лабораторных работах, курсовых работах и т.Д.). Пример 5
- •Задания
- •Задания
- •Пример 6
- •Задания
- •Не смотря на то, что есть еще другие операторы цикла, обычно вводят и выводят массивы с помощью оператора цикла с параметром.
- •6.2. Применение оператора цикла с постусловием
- •Пример 1
- •Задания
- •6.3. Применение оператора цикла с предусловием
- •Основные различия между операторами циклов с постусловием и предусловием
- •Пример 1
- •Задания
- •6.4. Работа с двухмерными массивами.
- •Задания
- •Пример 1
- •Задания
- •7. Поиск и сортировка числовых данных
- •Пример 1
- •Задания
- •8. Решение задач с применением подпрограмм
- •Procedure имя(список параметров);
- •Var идентификаторы:имя типа;...; var идентификаторы: имя типа
- •Var идентификаторы:имя типа;...;var идентификаторы: имя типа;...; идентификаторы:имя типа;...;идентификаторы:имя типа
- •Идентификаторы:имя типа;идентификаторы:имя типа; ...;идентификаторы:имя типа
- •Локальные переменные доступны только внутри процедур, в которых они определены!
- •Пример 1
- •Задания
- •9. Использование переменных перечисляемого типа
- •Ввод и вывод значений переменных перечисляемого типа запрещен.
- •Задания
- •10. Использование переменных ограниченного типа
- •Задания
- •11. Использование переменных множественного типа
- •Var идентификатор : set of порядковый тип;
- •Запрещен.
- •Правила приоритета для множественных операций:
- •Задания
- •12. Использование записей
- •With префикс[,префикс [...]] do оператор
- •Пример 1
- •Задания
- •13. Работа со строками
- •Каждая переменная типа string вводится отдельной процедурой readln
- •Пример 1
- •Задания
- •14. Работа с файлами
- •Пример 1
- •Пример 2
- •Пример 3
- •Задания
- •Библиографический список
Пример 3
Задан массив X=(0,5,-3). Получить массив Y, при этом:
y1=x1; y2=x2; y3=x3.
Решение
У нас два массива: X и Y. Оба они одномерные, состоят из трех элементов: X=(x1, x2, x3); Y=(y1, y2, y3). По размерности, количеству элементов и типу они совпадают (они вообще совпадают, даже значения элементов одни и те же). Отсюда следует, что их можно описать вместе одним описанием.
1-й вариант
Var
x,y:array [1..3] of integer;
Begin
x[1]:=0;
x[2]:=5;
x[3]:=-3;
y[1]:=x[1];
y[2]:=x[2];
y[3]:=x[3];
Writeln(y[1],y[2],y[3])
End.
А если же у нас в массивах X,Y будет, например, по 100 элементов? Что же мы будем писать 100 операторов присваивания, например, для каждого элемента массива Y? Конечно, нет. В этом случае надо воспользоваться оператором цикла.
Заметим закономерность для операторов, в которых вычисляются значения для элементов массива Y. Индекс в квадратных скобках у элементов массива Y и соответствующих им элементах массива X изменяется от 1 до 3. Общий вид этих вычислений получается следующий:
т.е. при i=1 будем иметь: y1= x1 и т.д.
Итак, для i, изменяющейся от 1 до 3, производить вычисления по формуле:
yi = xi.
Запишем то же на языке PASCAL:
for i:=1 to 3 do
y[i]:=x[i];
Если элементов в массивах будет не 3, а, например, 100, изменится только заголовок цикла:
for i:=1 to 100 do
и количество элементов в массивах в описании.
Давайте организуем ввод массива X с клавиатуры. Во-первых, с целью изменять значения элементов массива X (т.к. сейчас они «зашиты» в программе и, если мы захотим взять другие значения для элементов этого массива, то придется изменять их в тексте программы), а, во-вторых, опять же, нам нужно будет писать, например, 100 операторов присваивания для задания исходных данных, если в массиве X будет 100 элементов.
Любой массив вводят в цикле. Введем наш массив Х:
for i:=1 to 3 do
read(x[i]);
При i=1 будет вводиться элемент x[1];
при i=2 - x[2];
при i=3 - x[3].
Вывод - аналогичен.
Итак, какая же программа у нас получается?
Так как у нас появилась новая переменная i (целого типа), ее надо описать.
2-й вариант
Var
i:integer;
x,y:array [1..3] of integer;
Begin
for i:=1 to 3 do
Read(x[i]); {ВВОД с экрана}
for i:=1 to 3 do
y[i]:=x[i];
-
for i:=1 to 3 do
Writeln(y[i])
{значения Y будут выведены в столбик}
End.
Итак, любой массив выводят в цикле.
Вы, наверное, уже увидели, что эти три цикла можно объединить в один, т.е. организовать цикл следующим образом: ввод первого элемента массива Х, нахождение первого элемента массива Y и сразу же вывод его значения на экран; после этого ввод следующего элемента массива X и т.д. У нас получится такой вариант программы:
3-й вариант
Var
i:integer;
x,y:array [1..3] of integer;
Begin
for i:=1 to 3 do
Так
как в теле цикла надо выполнить более
одного оператора, то нужно их заключить
в операторные скобки begin…end.
Read(x[i]);
y[i]:=x[i];
Writeln(y[i])
end
End.
Ниже приведен еще один вариант записи этой программы. Если массивы по типу описания совпадают, то присвоить значения элементов одного массива другому можно так, как показано в девятой строке программы.
4-й вариант
Type
ar = array [1..3] of integer;
Const
x : ar = (0,5,-3);
Var
i:integer;
y:ar;
Begin
y:=x; {Знач. массива X присваив. массиву Y}
for i:=1 to 3 do
Writeln(y[i])
End.