
- •Как написать простейшую программу
- •1. Описание переменной файлового типа
- •2. Связь переменной файлового типа с конкретным внешним файлом.
- •3. Чтение из файла
- •4. Закрытие файла
- •5. Признак конца файла
- •6. Запись в файл
- •Логическая функция Eoln()
- •Описание данных логического типа
- •Логические операции
- •Стандартные логические функции
- •Решение задач
- •Окно редактора кода
- •Окно вывода
- •Окно ввода
- •Запуск и остановка программы
- •Оператор цикла с предусловием while
- •Оператор цикла с постусловием repeat
- •Решение
- •Параметры процедур и функций
- •Передача параметров
- •Глобальные и локальные переменные
- •Вызов процедуры
- •Вызов функции
- •Операции для данных символьного типа
- •Функции для данных символьного типа
- •Перечисляемый тип
- •Набор операций
- •Стандартные функции
- •Интервальный тип (диапазон)
- •Описание массива
- •Особенность языка Паскаль
- •Заполнение одномерного массива значениями
- •Вывод значений элементов массива на экран
- •Изменение значений некоторых элементов
- •Заполнение массива по заданному правилу
- •Работа с несколькими массивами
- •Вставка одного элемента
- •Вставка нескольких элементов
- •Сортировка массива методом простого выбора
- •Сортировка массива методом простого обмена (методом пузырька)
Изменение значений некоторых элементов
Задача 1. Заменить отрицательные элементы одномерного массива на противоположные по знаку. Решение.
Массив обходим один раз. Если встретятся отрицательные элементы, присвоим им новое значение, противоположное по знаку. Оформим алгоритм в виде процедуры. На входе и на выходе у нас один и тот же массив. На выходе некоторые его элементы могут быть изменены. Поэтому опишем его как выходной параметр (с ключевым словом var).
Procedure Zamena (Var m : MyArray;); {Процедура замены отрицательных элементов массива на противоположные по знаку.} Var i : integer; Begin for i := 1 to n do if m[i] < 0 then m[i] := -m[i]; End; |
Задача 2. Прибавить к каждому элементу одномерного массива число 25.
Решение
Преобразуем предыдущую процедуру. Присвоим каждому элементу массива новое значение, увеличив старое значение на 25.
Procedure Zamena2 (Var m : MyArray;); {Процедура увеличения всех элементов массива на 25.} Var i : integer; Begin for i := 1 to n do m[i] := m[i] + 25; End; |
Задача 3. Если элемент массива чётный, то прибавить к нему первый элемент, если нечётный - прибавить последний. Первый и последний элементы не изменять.
Решение
Просматриваем все элементы массива со второго до предпоследнего.
Если элемент чётный (делиться на 2 без остатка), то увеличим его на значение первого элемента, иначе - на значение последнего элемента. На входе и на выходе у нас будет один и тот же массив. Описываем его как выходной параметр. Процедура будет иметь вид:
Procedure Zamena3(Var m: myarray); {Процедура изменения элементов массива по заданному правилу} Var i : Integer; Begin For i:=2 To n-1 Do If (i<>1) And (i<>n) Then If m[i] Mod 2=0 Then m[i]:=m[i]+m[1] Else m[i]:=m[i]+m[n]; End; |
Заполнение массива по заданному правилу
Правила заполнения массивов могут быть разными. Рассмотрим два примера.
Задача 4. Даны два одномерных массива одинаковой размерности. Получить третий массив такой же размерности, каждый элемент которого равен сумме соответствующих элементов данных массивов.
Решение
Пусть даны два массива А и В, состоящие из пяти элементов. Создадим новый массив С, заполнив его по заданному правилу. Первому элементу массива присвоим сумму первых элементов массивов А и В, второму - сумму вторых элементов, и т. д.
i |
1 |
2 |
3 |
4 |
5 |
A |
16 |
4 |
9 |
10 |
11 |
B |
5 |
8 |
7 |
14 |
6 |
C |
21 |
12 |
16 |
24 |
17 |
Оформим алгоритм решения этой задачи в виде процедуры.
Procedure Sum_Array(a, b: myarray; Var c: myarray); {Процедура заполнения массива-суммы двух одномерных массивов. А, B - исходные массивы.С - результирующий массив. } Var i : Integer; Begin For i:=1 To n Do c[i]:=a[i]+b[i]; End; |
Пример 5. Дан первый член арифметической прогрессии и её разность. Найти её первые n членов.
Решение
Пусть a1 - это первый член арифметической прогрессии, а p - это её разность. Тогда i-й член можно найти по формуле: а[i] = a[i-1] + p.
Опишем процедуру, которой передаём эти два параметра. Результатом выполнения будет являеться массив. Первый элемент его равен первому члену прогрессии, второй - второму и так далее.
Procedure Progress (a1, p: Integer; Var a: myarray); {Заполнение массива первыми n-членами арифметической прогрессии. a1 - первый член арифметической прогрессии;p- разность арифметической прогрессии. } Var i : Integer; Begin a[1]:=a1; For i:=2 To n Do a[i]:=a[i-1]+p End; |