- •Общая функциональная схема эвм
- •Языки программирования
- •Этапы решения задач на эвм
- •Понятие алгоритма и его свойства
- •Типы алгоритмов
- •Ос эвм. Понятие о файловой системе
- •Команды ms dos
- •Программирование на языке паскаль
- •Структура программы на языке паскаль
- •Описание данных
- •1. Константы
- •2. Переменные
- •Комментарии
- •Операторы языка паскаль
- •Операторы обработки данных
- •1. Операторы ввода
- •2. Операторы вывода
- •3. Вычисление по формулам. Оператор присваивания
- •Линейные программы
- •Управляющие операторы
- •1. Разветвляющиеся алгоритмы. Оператор if (если)
- •2. Пример разветвляющейся программы
- •3. Оператор case
- •Циклические алгоритмы и программы
- •1. Общая схема цикла
- •2. Циклы со счетчиком
- •3. Итерационные циклы
- •3.1. Оператор цикла с пост-условием
- •3.2. Оператор цикла с пред-условием
- •Tипы данных, используемых в паскале
- •1.Представление данных в эвм
- •2. Стандартные функции Паскаля и Турбо Паскаля
- •3. Булевские переменные и выражения
- •4.Функции для работы с символами
- •5. Массивы
- •Примеры программ обработки массивов
- •Особенности алгоритмов и программ с накапливанием
- •Алгоритм нахождения минимума и максимума
- •Задача сортировки
- •Обработка многомерных массивов
- •Итерационные циклы
- •Типовые алгоритмы с итерационными циклами
- •1. Приближенное вычисление функций
- •2. Решение уравнений приближенными методами
- •2.1. Метод Ньютона
- •Программы обработки строк символов (текстов)
- •1. Простейшие алгоритмы и программы обработки строк
- •Типовые программы обработки строк
- •Задача 1 выделения слов из текста (слова разделены одним пробелом)
- •Задача 2 выделения слов из текста (слова разделены несколькими пробелами)
- •Алгоритмы поиска
- •Алгоритм линейного поиска
- •Библиографический список
- •Содержание
Примеры программ обработки массивов
Пример1.
Ввести в ЭВМ массив из 100 чисел. Вывести каждое второе число из массива.
РROGRAM WTR;
VAR
X: ARRAY[1..100] OF REAL;
I: INTEGER;
BEGIN
Writeln('Введите массив из 100 чисел');
FOR I:= 1 TO 100 DO
READ (x[I]);
FOR I:= 1 TO 50 DO
WRITE (x[2*I]);
END.
Пример 2.
Ввести в ЭВМ массив (последовательность) из 100 чисел. Подсчитать количество положительных и отрицательных чисел, их суммы и средние значения.
Алгоритм
1. Ввести числа.
2. Положить количества положительных, отрицательных чисел и суммы = 0
3. Для номера числа от 1 до 100
вычислить суммы и подсчитать количество
4. Вывести суммы, количество и средние.
5. Закончить.
Уточняем
1.1. Для номера числа от 1 до 100
ввести число [номер]
2. Положить количества положительных, отрицательных чисел и суммы =0
3. Для номера числа от 1 до 100
3.1. Если число [номер]>0, то
количество пол.= кол.пол.+1 и
суммапол. = суммапол. + число [номер]
иначе
количество отр.= кол.отр.+1 и
суммаотр. = суммаотр. + число [номер]
4.1 Если кол. пол. > 0, то
Среднее пол.=суммапол./кол.пол.
4.2 Если кол. отр. > 0, то
Среднее отр.=суммаотр./кол.от.
Программа для этого алгоритма будет иметь вид:
PROGRAM ABC;
CONST
N=100;
VAR
X:ARRAY[1..N] OF REAL;
I, KO, KP: INTEGER;
SO, SP, SRO, SRP:REAL;
BEGIN
Writeln('Введите массив из 100 чисел');
FOR I:=1 TO N DO
READ(x[I]);
KO:=0;
KP:=0;
SO:=0;
SP:=0;
FOR I:=1 TO N DO
IF X[I]>=0 THEN
BEGIN
KP:=KP+1;
SP:=SP+X[I]
END
ELSE
BEGIN
KO:=KO+1;
SO:=SO+ X[I]
END;
If KO<>0 Then
SRO:= SO/KO;
If KP<>0 Then
SRP:= SP/KP;
WRITELN(KO, KP, SO, SP, SRO, SRP);
`END.
Особенности алгоритмов и программ с накапливанием
Вычисление суммы и произведения нескольких чисел, а также подсчет количества в большинстве языков программирования выполняется постепенно, путем накапливания.
1) Сумма вычисляется по формуле
сумма:= cумма + слагаемое
Перед вычислениями начальному значению суммы нужно присвоить ноль.
2) Произведение вычисляется по формуле
произведение := произведение * сомножитель
Перед вычислениями начальному значению произведения нужно присвоить 1.
3) Подсчет количества выполняется по формуле, подобной формуле для вычисления суммы
количество := количество + 1
Начальное значение количества = 0.
Алгоритм нахождения минимума и максимума
Задача 1.
Ввести в ЭВМ последовательность из n чисел x1, х2,..., х[n], n<200. Найти минимум и максимум из них.
При поиске минимума или максимума используется переменная min или max, которой:
1) вначале присваивается значение первого числа из последовательности (x1);
2) начиная со второго числа, производится сравнение этого числа со значением переменной min (или max) и, если число из массива меньше min (больше max), то на место min (max) записывается это число.
Программа для этого алгоритма будет иметь вид:
PROGRAM MINMAX;
CONST
N=200;
VAR
X:ARRAY [1..N] OF REAL;
MIN,MAX:REAL;
I:INTEGER;
BEGIN
{ВВОД ПОСЛЕДОВАТЕЛЬНОСТИ}
Writeln('Введите последовательность чисел');
FOR I:=1 NO N DO
READ(x[i]);
MIN:=X[1];
MAX:=X[1];
FOR I:=2 TO N DO
IF MAX <X[I] THEN
MAX:=X[I]
ELSE
IF MIN > X[I] THEN
MIN:=X[I];
WRITELN ('MIN', MIN,'MAX=', MAX);
END.
В некоторых случаях бывает необходимо не только найти минимальное или максимальное число в последовательности из n чисел, но и запомнить его номер (индекс).
Задача 2.
Найти минимум в последовательности из 100 чисел и номер минимального числа.
В этой задаче необходимо использовать ещё одну переменную: не только min, но и номер – например, imin. Каждый раз нужно запомнить и число, и его индекс. Соответствующая программа может быть представлена в виде:
PROGRAM MINIMUM;
CONST
N=100;
VAR
X:ARRAY[1..N] OF REAL;
MIN:REAL;
I,IMIN: INTEGER;
BEGIN
Writeln('Введите последовательность чисел');
FOR I:=1 TO N DO
READ(x[I]);
MIN := x[1];
IMIN:=1;
FOR I:=2 TO N DO
IF MIN > x[I] THEN
BEGIN
MIN:=x[i];
IMIN:=i;
END;
WRITELN('MIN=', MIN, HOMEP=', IMIN)
END.
