- •1. Системы счисления
- •Десятичная система счисления
- •Двоичная система счисления
- •Восьмеричная и шестнадцатеричная системы счисления
- •Перевод чисел из любой системы счисления в десятичную
- •Перевод чисел из десятичной системы счисления в любую другую
- •2. Алгебра логики
- •2.1. Логические операции
- •Инверсия
- •Конъюнкция
- •Дизъюнкция
- •Эквиваленция (равнозначность)
- •Импликация
- •Антиконъюнкция
- •Антидизъюнкция
- •2.2. Нормальные формы
- •Конъюнктивная нормальная форма
- •Дизъюнктивная нормальная форма
- •3. Классические основы построения ЭВМ
- •3.1. Машина Тьюринга
- •Основные положения машины Тьюринга
- •3.2. Автомат Неймана
- •3.3 Архитектура классической ЭВМ
- •4. Применение средств алгебры логики для описания функционирования устройств компьютера
- •Логические схемы
- •Построение логических схем
- •5. Введение в алгоритмизацию
- •6. Знакомство со средой Турбо Паскаль
- •6.1. Общие сведения
- •6.2. Запуск Турбо-Паскаля на выполнение
- •6.3. Назначение функциональных клавиш системы Турбо-Паскаль
- •6.4. Работа с текстовым редактором Турбо-Паскаля
- •Клавиши перемещения курсора
- •Работа с блоками текста
- •7. Основы алгоритмизации
- •7.1. Алгоритм
- •7.2. Алгоритмические структуры
- •8. Программирование на языке Pascal
- •8.1. Алфавит языка
- •8.2. Арифметические выражения и правила их записи
- •Знаки операций
- •Операции div и mod
- •8.3. Типы данных
- •Целые типы
- •Логический тип
- •Символьный тип
- •Строковый тип
- •Вещественный тип
- •8.4. Стандартные функции
- •8.5. Структура программы на языке Паскаль
- •8.6. Описательная часть программы
- •8.7. Исполнительная часть программы
- •8.8. Оператор присваивания
- •8.9. Операторы ввода-вывода
- •Оператор ввода
- •Оператор вывода
- •8.10. Комментарии в программе
- •9. Ветвления
- •9.1. Операторы условия и перехода
- •Логический оператор
- •Операции отношения
- •Логические операции
- •9.2. Оператор выбора
- •10. Циклические вычислительные процессы
- •10.1. Оператор цикла с параметром
- •10.2. Оператор цикла с постусловием
- •10.3. Оператор цикла с предусловием
- •10.4. Вложенные циклы
- •10.5. Оператор прерывания цикла
- •11. Операции с индексированными переменными
- •11.1. Массивы одномерные
- •11.2. Описание массивов
- •Ввод элементов массива
- •Вывод элементов массива
- •11.3. Обработка одномерных массивов
- •12. Двумерные массивы
- •12.1. Матрицы
- •12.2. Описание двумерного массива
- •Ввод элементов двумерного массива
- •Вывод элементов двумерного массива
- •12.3. Обработка двумерных массивов
- •13. Подпрограммы
- •13.1. Функции и процедуры
- •Структура программы, содержащей процедуру (функцию)
- •13.2. Процедуры
- •13.3. Вложенные процедуры
- •Директива forward
- •13.4. Функции
- •14. Обработка строк текста
- •14.1. Символьные переменные
- •Фрагмент таблицы ASCII-кодов букв латинского алфавита
- •Фрагмент таблицы ASCII-кодов букв русского алфавита
- •14.2. Функции обработки символьных переменных
- •14.3. Строковые переменные
- •14.4. Функции обработки строковых переменных
- •14.5. Процедуры обработки строковых переменных
- •14.6. Примеры обработки строковых переменных
- •15. Структурированные типы данных
- •15.1. Записи
readln;
end.
Если a=b=c - то все три оператора if будут выполнены.
9.2. Оператор выбора
Этот оператор предназначен для замены конструкций из вложенных if. Структура:
case N of N1: P1; N2: P2; NN: PN; [else P;] end;
[else P;] - необязательная часть оператора.
где N - целочисленная переменная, или выражение целого типа; N1, N2 , … NN - возможные значения переменной N;
P, P1, P2, … PN - простые или составные операторы. По этому оператору:
если значение N = N1, то выполняется P1 (после чего управление передается оператору, следующему за оператором case...of);
если значение N = N2, то выполняется P2, (после чего управление передается оператору, следующему за оператором case...of);
…
если N не принимает ни одного из перечисленных значений, управление передается оператору P;
если структура else - отсутствует и N - не принимает ни одного из перечисленных значений, управление передается следующему за
case...of оператору.
Например: case N of
1, 2, 5: writeln (’a’); 7 .. 10: writeln (’b’); end;
1, 2, 5 - перечисляемые значения разделяются « , » .
7 .. 10 - интервал задается начальными и конечными значениями через «..».
10. Циклические вычислительные процессы
10.1. Оператор цикла с параметром
Процессы, в которых ряд действий повторяются многократно по одним и тем же математическим зависимостям, называются циклическими.
При организации циклов необходимо:
•определить параметр цикла и его начальное значение;
50
•изменять значение параметра цикла на каждом шаге итерации;
•организовать проверку на выход из цикла.
for i:=N to K do P ; (для) (до) (выполнять) где i - параметр цикла;
N, K - его начальное и конечное значение; P - простой или составной оператор;
i,N,K - переменные или константы целого типа. Шаг изменения i - равен 1.
Если K<N, т.е. имеем дело с циклом с отрицательным шагом: (-1)
for i:=N downto K do P;
Оператор цикла с параметром автоматически устанавливает начальное значение параметра цикла, изменяет значение параметра на шаг (+1 или -1), организовывает проверку на выход из цикла.
Задача.
Вычислить сумму ряда
S= 1+1/2+1/3+ … +1/50
Выделим переменную для накапливания суммы - sum. Значение этой переменной необходимо предварительно обнулить. program cikl;
var
i: integer; sum: real; begin sum: =0;
for i: = 1 to 50 do sum: = sum + 1/i;
Writeln (' сумма = ', sum); end.
Оператор for применяют в тех случаях, когда значения параметра цикла целые и меняются с шагом +1, -1.
10.2. Оператор цикла с постусловием
repeat
p1;p2 ;…pn ; until <условие>;
где p1; p2 ; … pn ; - любые операторы, образующие тело цикла.
По этому оператору выполняется «тело цикла», а затем проверяется <условие>, если оно не выполнилось, цикл повторяется. И так до тех пор, пока <условие> не будет выполнено. Необходимо помнить: если <условие> выполнилось c первого раза, цикл будет пройден один раз.
Задача.
51
Вычислить значение функции:
y = a sin (x ) , При x = 0.1 , с шагом x =0.2
program cikl_1; var
y,a,x:real; begin
writeln(‘Введите а’); read(a);
x:=0; repeat
y:=a*sin (x); writeln (‘y=’,y:8:3,’ x=’,x:8:3); x:=x+0.2; until x>1;
end.
Действия, которые подчеркнуты, необходимы для организации цикла. Для организации цикла необходимо выполнить три действия:
•восстановить начальное значение параметра цикла;
•сформировать текущее значение параметра цикла;
•организовать проверку на выход из цикла.
В операторе for … to … do перечисленные действия выполняются автоматически. В остальных операторах цикла эти действия необходимо организовать составителю программы.
10.3. Оператор цикла с предусловием
while <условие> do P;
Где P - простой или составной оператор.
По этому оператору проверяется <условие> и, если оно выполняется, то выполняется - P, после чего опять проверяется <условие> и т. д.
Итак, P выполняется до тех пор, пока выполняется <условие>.
Если условие ни разу не выполнилось, P игнорируется, управление передается следующему оператору.
Задача.
Вычислить сумму ряда:
y = sin x − sin 2x + sin 3x −...+(−1n+1 ) sin nx 1! 2! 3! n!
где n! = 1*2*…*n
Значение аргумента х и количество итераций n ввести с клавиатуры. Введем дополнительную переменную для вычисления n! – f.
program cikl_2; uses
52
crt; var x,y : real; i,n,f : integer;
begin writeln (' введите x, n '); read (x, n); y: =0; f: =1; i:=1;
while i<=n do
{ составной оператор } begin
f:=f*I;
y:=y+sin(i*x)/f;
i:=i+1;
end;
writeln (' y = ', y:8:3); readln;
end.
10.4. Вложенные циклы
В теле любого оператора цикла могут находиться другие операторы цикла. При этом цикл, содержащий в себе другой, называется внешним, а цикл, находящийся в теле первого, - называется внутренним (вложенным). Правила организации внешнего и внутреннего циклов такие же, как и для простых циклов.
Рассмотрим задачу вывода на экран таблицы умножения, решение которой предполагает использование вложенных циклов.
var
i,j : byte; begin
writeln(‘ Таблица умножения ’); for i:=1 to 9 do
begin
for j:=1 to 9 do
writeln( i , ‘ * ‘ , j ,‘ = ’, i*j ); writeln;
end;
readln;
end.
При организации вложенных циклов необходимо помнить, что параметр внешнего цикла меняется медленнее, чем параметр внутреннего. При одном значении параметра внешнего цикла параметр внутреннего – пробегает все свои возможные значения.
10.5. Оператор прерывания цикла
Для досрочного прерывания цикла можно использовать оператор goto или стандартную процедуру break.
53