- •Общая функциональная схема эвм
- •Языки программирования
- •Этапы решения задач на эвм
- •Понятие алгоритма и его свойства
- •Типы алгоритмов
- •Ос эвм. Понятие о файловой системе
- •Команды 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 выделения слов из текста (слова разделены несколькими пробелами)
- •Алгоритмы поиска
- •Алгоритм линейного поиска
- •Библиографический список
- •Содержание
4.Функции для работы с символами
Символы в ЭВМ представляются двоичными кодами. Для латинских букв коды упорядочены по возрастанию от 'А' до 'Z'. В Паскале имеются 4 функции, позволяющие работать с символами. ORD (символ) – вычисляет порядковый номер (код) символа, СHR (код) – определяет символ с заданным кодом. PRED (символ) – определяет символ, предшествующий данному. SUCC (символ) – определяет символ, следующий за данным.
Пример.
PRED('C') => 'B'
SUCC('C') => 'D'
Пример.
Ввести на экран дисплея номера (коды) букв латинского алфавита.
PROGRAM BUKVA;
VAR
Sim: Char;
BEGIN
FOR Sim:= 'A' TO 'Z' DO
WRITELN(ORD(Sim),' ' , Sim);
END.
Основные функции языка Паскаль сведены в табл. 1.3
Таблица 1.3. Функции языка Паскаль
№ |
Общий вид |
Название |
Типы |
|
|
|
|
аргумент |
результата |
1 |
ABS(x) |
абсолютная величина |
число (цел., вещ.) |
число |
2 |
SQR(x) |
квадрат х |
число (цел., вещ.) |
число |
3 |
SQRT(x) |
корень квадратный |
число (цел., вещ.) |
вещ. |
4 |
EXP(x) |
экспонента |
число (цел., вещ.) |
вещ. |
5 |
LN(x) |
натуральный логарифм |
число (цел., вещ.) |
вещ. |
6 |
SIN(x) |
синус |
число (цел., вещ.) |
вещ. |
7 |
COS(x) |
косинус |
число (цел., вещ.) |
вещ. |
8 |
ARCTN(x) |
арктангенс |
число (цел., вещ.) |
вещ. |
9 |
TRUNC(x) |
округление с отбрасыванием |
вещ. |
Целое |
10 |
ROUND(x) |
округление |
вещ. |
Целое |
11 |
SUCC(x) |
следующий элемент |
целое, символ |
целое, символ |
12 |
PRED(x) |
предшествующий элемент |
целое, символ |
целое, символ |
13 |
ORD(x) |
порядковый номер |
целое, символ |
целое |
14 |
CGR(x) |
символ для кода |
целое |
символ |
15 |
ODD(x) |
нечётность |
целое |
булев. |
16 |
EOLN(x) |
конец строки |
нет |
булев. |
5. Массивы
Массив – это совокупность элементов, имеющих одинаковое имя и отличающихся номером (индексом) их расположения в последовательности.
До сих пор мы рассматривали так называемые стандартные типы данных (скалярные данные). Если в задачах данные являются родственными например, средний балл студента в группе определяется по баллам 25 человек), скалярные типы неудобны. Если бы понадобилось определить количество студентов, имеющих балл выше среднего, то пришлось бы выполнить 26 операторов вида:
счетчик:=0;
IF BALL1>SR THEN
счетчик:= счетчик+1;
IF BALL2> ...
Поскольку обрабатываются данные одного типа, удобнее использовать массивы.
Пример.
1) последовательность чисел (оценок)
х1, x2, x3, ..., xn – 1 индекс
2) матрица чисел
Пример матрицы – таблицы сложения и умножения, коэффициенты в системе линейных уравнений.
Для описания массива необходимо кроме служебных слов задать:
1) имя массива;
2) количество и диапазон изменения индексов.
Количество индексов называется размерностью массива.
Различают:
1-мерные массивы (последовательность чисел, символов);
2-мерные массивы (матрицы);
3-мерные и т.д.
Массивы описываются с помощью известного нам описателя переменных VAR вида:
VAR
имя: ARRAY[min..max] OF тип;
где имя – имя массива;
ARRAY – служебное слово (массив);
min..max – границы изменения индекса;
тип – тип элементов массива.
Пример.
Const
N=100;
M=5;
Var
X:ARRAY[1..N] OF Real; – массив вещественных чисел.
A:ARRAY[1..M,1..M] OF Integer; – мaтрица целых чисел.
Следует различать описание массива и значение его элемента при обработке (внутри программы, после первого Begin). Элемент массива записывают в виде:
имя[индекс] или
имя[список индексов]
Пример:
X[2] => x2
A[I,J] => Aij
ВАLL [K,I+2] => BALLK,i+2
Индекс – это число, переменная или выражение перечисляемого целого или символьного типа.
Рассмотрим пример программы обработки массива.
Условие задачи:
Ввести в ЭВМ оценки 25 студентов по 1 предмету. Подсчитать средний балл и количество оценок выше средней.
Алгоритм
1. Ввести оценки.
2.1. Положить сумму баллов = 0.
2.2. Для номера оценки (i) от 1 до 25.
Подсчитать сумму баллов.
3. Вычислить средний балл.
4. Положить количество оценок выше средней=0.
5. Для номера i от 1 до 25
подсчитать количество оценок выше средней.
6. Конец
Уточняем алгоритм.
1.1. Ввести оценки количество оценок n.
1.2. Для номера оценки (i) от 1 до n.
1.2.1. Ввести балл [i]
2.1. Положить сумму баллов = 0.
2.2. Для номера оценки (i) от 1 до n
2.2.1. Сумма = сумма + балл [i]
3. Вычислить средний балл.
4. Положить количество оценок выше средней=0.
5. Для номера от 1 до n
5.1. Если балл [i] > среднего, то
количество = количество +1.
Программа для этого алгоритма будет иметь вид:
PROGRAM BALL;
CONST
M=25;
VAR
B:Array[1..M] OF Integer;
S:Real; {сумма и средний балл}
N,I,K:Integer; {K - счетчик}
BIGIN
Writeln('Введите количество оценок'); { п.1.1 }
READ (N);
Writeln('Введите оценки'); { п.1.2 }
FOR I:= 1 TO N DO
READ(B[I]);
{ п.п. 2.1 - 2.2 - сумма баллов }
S:=0;
FOR I:= 1 TO N DO
S:= S+B[I];
{ п.3 - средний балл }
S:= S/N;
Writeln('Средний балл - ',S);
K: = 0; { п.4 }
{ п.5 }
FOR I:= 1 TO N DO
IF B[I]>S THEN
K:=K+1;
WRITELN('Kоличество оценок выше средней = ',K)
END.
Итак, программа обработки массива – цикл, в котором параметром является индекс (номер элемента). Если индексов несколько, то зачастую для обработки массивов используются циклы, вложенные друг в друга. Количество таких циклов зависит от числа индексов.
