- •Введение
- •Тема 1. Основы алгоритмизации
- •1.1. Этапы решения задач на ПК
- •1.2. Блок-схемы алгоритмов
- •2.1. Основные элементы IDE Turbo Pascal 7.1
- •2.1.1. Пункт меню File
- •2.1.2. Пункт меню Edit
- •2.1.3. Пункт меню Run
- •2.1.4. Пункт меню Compile
- •2.2. Ввод программы в среде Turbo Pascal
- •2.3.Сохранение программы в файле
- •2.4. Работа с существующей программой
- •2.5. Компиляция программы в среде Turbo Pascal
- •2.6. Выполнение программы в среде Turbo Pascal
- •2.7. Выход из среды Turbo Pascal
- •Тема 3. Элементы языка Турбо Паскаль и программирование линейных вычислительных процессов
- •3.1. Алфавит языка
- •3.2. Идентификаторы
- •3.3. Основные типы данных и операции с ними
- •3.4. Константы и переменные
- •3.5. Выражения
- •3.7. Структура программы
- •3.8. Ввод исходных данных. Операторы READ и READLN
- •3.9. Вывод данных. Операторы WRITE и WRITELN
- •3.10. Оператор присваивания
- •3.11. Пример составления программы
- •3.12. Контрольные вопросы
- •3.13. Варианты заданий
- •4.1. Методические указания
- •4.2. Условный оператор и составной оператор
- •4.4. Контрольные вопросы
- •4.5. Варианты заданий
- •Тема 5. Программирование циклических процессов
- •5.1. Общие сведения
- •5.2. Цикл с параметром
- •5.3. Цикл с предусловием
- •5.4. Цикл с постусловием
- •5.5. Контрольные вопросы
- •Тема 6. Основы работы
- •6.1. Работа с окнами в ОС Windows и запуск программ
- •6.1.1. Представление окна на экране
- •6.1.2. Изменение размеров и перемещение окон
- •6.1.3. Переключение между окнами
- •6.1.4. Как упорядочить окна на экране
- •6.1.5. Работа с диалоговыми окнами
- •6.1.6. Запуск программ
- •6.2. Задание для самостоятельного выполнения
- •6.3. Отработка приемов управления с помощью мыши
- •6.4. Создание ярлыка программы или документа
- •6.5. Изучение приемов работы с объектами
- •6.6. Настройка оформления Рабочего стола
- •6.7. Контрольные вопросы
- •Тема 7. Текстовый редактор MS Word
- •7.1. Подготовка текстового документа
- •7.2. Работа со списками и колонками текста
- •7.3. Работа с таблицами и диаграммами
- •7.4. Работа с графическими объектами и формулами
- •7.5. Контрольные вопросы
- •Тема 8. Табличный процессор MS Excel
- •8.1. Электронная таблица
- •8.2. Форматирование листа Excel
- •8.3. Построение диаграммы
- •8.4. Контрольные вопросы
- •Тема 9. Графические редакторы
- •9.1. Графический редактор Paint
- •9.2. Графический редактор CorelDraw
- •9.3. Контрольные вопросы
- •Тема 10. Электронные базы данных MS Access
- •10.1. Создание базы данных «Клиника»
- •10.2. Работа с базой данных
- •10.3. Контрольные вопросы
- •Тема 11. Интернет – общие данные
- •11.1. Основные сведения
- •11.2. MEDLINE и другие базы данных
- •11.3. Телемедицина
- •11.4. Будущее Интернета для врача
- •11.5. Задания для самостоятельного выполнения
- •ЗАДАНИЕ 1. Настройка начальной страницы браузера MS Internet Explorer
- •ЗАДАНИЕ 2. Организация рабочего окна
- •ЗАДАНИЕ 3. Работа с системой безопасности программы
- •ЗАДАНИЕ 4. Знакомство с поисковой системой Google
- •ЗАДАНИЕ 5. Знакомство с поисковой системой Яндекс
- •ЗАДАНИЕ 6. Знакомство и работа с форумами
- •11.6. Контрольные вопросы
- •Библиографический список
28. |
Y = |
p 2 x5 |
|
+ ae x |
+ ln | x3 + a 2 | |
; |
z = log 5 | 2,5x3 + y | +ea3 |
; |
|||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||
|
|
||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
ax |
|
+ 0,5 ×10-3 |
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
|
|
|
|
|
|
|
|
a + x |
|
|
|
|
|
|
|
|
|
|
|
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
a = 0,5; |
x = 5. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
+ |
x3 (b - 2) |
|
; y2 = |
|
|
|
|
|
|
|
+ y |
|
||||||||
29. |
Y = |
|
15,1×10-2 x + |
a |
|
|
|
* y2 |
|
|
x + |
a |
|
|
|
|
|||||||||||||||
|
|
|
|
|
|||||||||||||||||||||||||||
|
ea |
b |
|
||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
b |
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
A = |
x5 ×5 |
|
|
; |
|
|
|
|||||||||||||||||||||||
30. |
ax3 + 2 |
b = sin 2 / 3 (ax); |
a = 0,5; x = 0,8. |
|
|||||||||||||||||||||||||||
|
|
|
|
|
|
|
|||||||||||||||||||||||||
|
|
|
|
|
|
2 + lg 5 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Тема 4. Программирование разветвляющихся процессов
Цель работы: изучение логических операций, условного оператора, оператора отбора, составного оператора и правил программирования разветвляющихся процессов.
4.1.Методические указания
Врешении задач, подчас, необходимо вести действия с учётом некоторых условий. Процесс, который в зависимости от определённых условий обеспечивает выбор одного из заранее предусмотренных путей решения задачи, называется разветвляющимся. Алгоритм, реализующий такой вычислительный процесс,
называется алгоритмом с разветвляющейся структурой. Каж-
дое отдельное направление вычислений называетсяветвью. Выбор той или иной ветви происходит в процессе выполнения алгоритма по результатам проверки некоторого логического условия, зависящего от исходных данных или промежуточных результатов. В общем случае выполнение разветвляющегося алгоритма можно разбить на ряд этапов (рис. 4.1).
35
|
|
|
|
|
Начало |
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 Общий линейный |
|
|
|
||||
|
|
|
|
|
участок 1 |
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
False (нет) |
|
|
|
True (да) |
|||||
|
Условие |
|||||||||
|
|
|
2 |
|
|
|
||||
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3 |
1-я ветвь |
|
|
|
4 |
|
2-я ветвь |
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5 Общий линейный участок 2
Конец
Рис. 4.1
1 этап – выполнение операторов, общих для всех ветвей программы (блок 1);
2 этап – принятие решений (логический блок 2), проверяется некоторое логическое условие и в зависимости от его значения FALSE (Ложь) или TRUE (Истина) осуществляется выбор одной из ветвей программы;
3 этап – реализация одного из выбранных путей решения задачи (блок 3 или 4), которые в свою очередь могут содержать ветвления (сложный разветвляющийся процесс);
4 этап – независимо от пути решения задачи осуществляется возвращение к общему линейному участку 2 (блок 5).
С учётом названных особенностей алгоритм вычисления действительных корней уравненияax2 + bx + c = 0 имеет вид
(рис. 4.2).
36
ìНачало
ï
О бщий |
ï |
|
1 |
Ввод a, b,c |
|
||
линейный |
ï |
|
|
|
|||
í |
|
|
|
|
|
|
|
уч асток 1 |
ï |
|
|
|
|
|
|
|
ï |
|
|
|
|
|
|
|
2 |
|
d:=b |
2 |
- 4ac |
Т очка ветвления |
|
|
ï |
|
|
|
|||
|
î |
|
|
|
|
|
|
|
|
|
|
|
False (нет) |
|
T rue (да) |
||||||||||
|
ì |
|
|
|
|
|
|
|
|
3 |
d<0 |
|
|
||||
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
4 |
X1: = |
- b + |
|
d |
|
|
|
|
|
6 Вывод |
||||||
|
|
|
|
2a |
|
|
|||||||||||
|
|
|
|
|
|
"Действ. |
|||||||||||
|
ï |
|
X 2: = |
- b - |
|
|
|
|
|
|
|
корней |
|||||
|
|
|
|
d |
|
|
|||||||||||
Ветвь |
|
|
|
|
|
|
|
|
|
|
|
нет" |
|||||
í |
|
|
|
|
2a |
|
|
||||||||||
"Нет" |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ï |
|
5 Вывод |
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
"Действ. |
|
|
|
|
|||||||||||
|
î |
|
кор ни"; |
|
|
|
|
||||||||||
|
|
X1,X2 |
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ì |
|
|
|
|
|
|
|
|
Т очка слияния |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
Общий |
|
|
|
|
|
|
7 Вывод |
|||||||
|
|
|
ï |
|
|
|
|
|
|
"Дискри- |
|||||||
|
|
|
линейный ïï |
||||||||||||||
|
|
|
участок 2 |
í |
|
|
|
|
|
|
минант";d |
||||||
|
|
|
|
|
|
|
ï |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ï |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
ï |
|
|
|
|
|
|
Конец |
|||
|
|
|
|
|
|
|
î |
|
|
|
|
|
|
ü
ï
ï
ý
ï
ï
þ
Ветвь "Да"
Рис. 4.2
Переходы от одного блока к другому называютсяусловными, если они осуществляются только при выполнении некоторого условия. В рассмотренном алгоритме – это переходы от блока 3 к блокам 4 и 6. После выполнения всех действий в любой из ветвей осуществляется переход к блоку 7. Этот переход называется безусловным. Для реализации различных переходов в программе используются специальные операторы передачи управления: оператор безусловного перехода GOTO, условный оператор IF и оператор отбора CASE.
37
4.2. Условный оператор и составной оператор
Условный оператор позволяет выбрать и выполнить один из двух входящих в него операторов в зависимости от значения логического выражения. Его синтаксическая запись:
IF <логическое выражение>
THEN <оператор 1> [ELSE <оператор 2>];
в которой IF…THEN…ELSE – зарезервированные слова языка, означающие соответственно ЕСЛИ…ТО…ИНАЧЕ, квадратные скобки означают, что часть ELSE <оператор 2> может отсутствовать. Условный оператор может быть записан в одну строку, однако рекомендуется придерживаться требований структурированной записи программы.
Если логическое выражение принимает значениеИСТИНА (TRUE), то выполняется оператор 1, если же оно принимает значение ЛОЖЬ (FALSE), то выполняется оператор 2. В любом случае далее выполняется оператор, стоящий в программе за условием.
Например, оператор, вычисляющий Y = X, будет иметь следующий вид:
IF X>=0 THEN Y:=X ELSE Y:= -X;
Условный оператор может не иметь конструкцииELSE, тогда он называется сокращённым условным оператором. Если логическое выражение принимает значение ЛОЖЬ (FALSE), сразу выполняется оператор, следующий за условием.
Например, оператор
IF X<0
THEN X:= -X;
обеспечивает инвертирование значения переменнойХ, если оно отрицательно, и оставляет его без изменения в противном случае.
Рассмотрим подробнее составные части условного операто-
ра.
Логическим выражением (булевым) называется выраже-
ние, имеющее значение типа BOOLEAN, т.е. TRUE или FALSE.
38
Составляющие логического выражения могут быть связаны между собой знаками логических операций, операций отношения
ипобитовых операций.
Вязыке Pascal допустимы следующие операции отношения:
<, <=, =, >, >=, <>.
Отношение принимает значениеTRUE, если оно справедливо для входящих в него операндов иFALSE в противном случае. Например, 10>7 имеет значение истина, а 5<=0 – ложь.
Переменные, которые в программе принимают значение логического выражения, должны быть описаны в разделе описания переменных как имеющие типBOOLEAN. Например, переменные А и В, описанные как
VAR A, B: BOOLEAN;
считаются в программе логическими (т.е. принимают значе-
ния TRUE и FALSE).
Над множеством логических переменных определены следующие логические операции:
AND – логическое умножение (И);
OR – логическое сложение (ИЛИ);
NOT – логическое отрицание (НЕ). Их действия показаны в таблице 1:
Таблица 1. Таблица истинности
A |
B |
NOT A |
A AND B |
A OR B |
0 (False) |
0 (False) |
1 (True) |
0 (False) |
0 (False) |
0 (False) |
1 (True) |
1 (True) |
0 (False) |
1 (True) |
1 (True) |
0 (False) |
0 (False) |
0 (False) |
1 (True) |
1 (True) |
1 (True) |
0 (False) |
1 (True) |
1 (True) |
По сравнению с операторами отношения логические операции имеют меньший приоритет.
В процессе вычислений соблюдается следующая очерёдность в выполнении этих операций:
1.Выражения, заключённые в скобки;
2.Логическое отрицание NOT;
3.Логическое умножение AND;
4.Логическое сложение OR, XOR.
39
Операции, имеющие одинаковый приоритет, вычисляются
слева направо. |
|
|
|
|
|
Например, логическое выражение |
|
|
|||
1 |
6 |
4 |
2 |
5 |
3 |
(-9>=5) OR NOT (11<30) AND (0<=7) |
|||||
имеет значение FALSE. |
Цифрами |
сверху |
показан порядок вы- |
||
полнения операций. |
|
|
|
|
|
Полный условный оператор в общем случае в своей записи после THEN и ELSE может использовать любой оператор языка PASCAL. Однако часто возникает необходимость вставить в ка- кую-либо ветвь не один, а группу операторов. В этом случае пользуются так называемым составным оператором.
Составной оператор – это заключённая между зарезервированными словами BEGIN и END последовательность операторов, отделённых друг от друга символом’;’(точкой с запятой):
BEGIN
Оператор 1; Оператор 2;
…
Оператор N; END;
В свою очередь любой из операторов, входящих в составной, тоже может быть составным. Зарезервированные слова BEGIN и END называются в этом случае операторными скобками. Турбо Паскаль допускает произвольную глубину их вложенности.
Приведём программу: вычисление действительных корней квадратного уравнения ax2 + bx + c = 0, в соответствии с алгоритмом рис. 4.2.
Program SQEQ;
Var
A, B, C, D, X1, X2: Real;
Begin
WriteLn (‘Введите А, В, С’);
ReadLn (A);
ReadLn (B);
40
ReadLn (C);
D:=Sqr (B) – 4 * A * C; If D<0 then
WriteLn (‘Действительных корней нет’) else begin
X1:=(–B + Sqrt (D)) / (2 * A);
X2:=(–B – Sqrt (D)) / (2 * A);
WriteLn (‘Действительный корень Х1=‘, X1:3:1); WriteLn (‘Действительный корень Х2=‘, X2:3:1); End;
WriteLn (‘Дискриминант D=‘, D:3:1)
End.
Результаты выполнения программы
Введите A, B, C 2 5 2
Действительный корень X1 = - 0.5 Действительный корень X2 = - 2.0 Дискриминант D = 9.0
Структура выбора может входить составной частью в одну из ветвей другой структуры выбора. В этом случае имеет место сложное ветвление. Например, даны две переменные a и b. Если a=b, то вывести на печать значения этих переменных без изменения. Если a<b, значения переменных уменьшить в3 раза. Если a>b, то значения переменных увеличить на6. Алгоритм и программа имеют следующий вид (см. рис. 4.3):
41
|
Начало |
|
1 |
Ввод |
|
|
a, b |
|
False (нет) |
T rue (да) |
|
2 |
a< >b |
|
|
False (нет) |
a < b |
|
3 |
|
5 |
a:= a + 6 |
|
|
b:= b + 6 |
|
6 |
Вывод |
|
|
a, b |
|
Конец
Рис. 4.3
T rue (да)
4a:= a / 3 b:= b / 3
Program AANOB; Var
A, B: Real; Begin
WriteLn (‘Введите A, B’); Read (A, B);
If A<>B then
If A<B then begin A := A / 3;
B := B / 3; End
else begin
A := A + 6;
B := B + 6; End;
WriteLn (‘A=’, A:2:1,’B=’, B:2:1)
End.
42
Результаты выполнения программы
Введите A, B 4 2
A = 10.0 B = 8.0
В ветви THEN внешнего разветвления содержится ещё один оператор. Конструкция ELSE во внешнем ветвлении отсутствует. Ветвь ELSE относится к ближайшемуIF, не имеющему ELSE. Структурированный вид программы предполагает написание соответствующих IF…THEN…ELSE друг под другом. Операторы, ограниченные операторными скобками BEGIN … END, записывают также друг под другом и следуют относительно BEGIN и END.
4.3. Оператор безусловного перехода GOTO и оператор
отбора CASE
Оператор безусловного переходаGOTO используют для изменения последовательности (порядка) выполнения операторов и перехода к выполнению программы, начиная с оператора, имеющего метку. Эта же метка должна быть указана и в операто-
ре GOTO.
Пример:
GOTO 1;
…
1: WRITE (‘ОПЕРАТОР С МЕТКОЙ’);
Метки, используемые в Turbo Pascal, могут быть двух типов:
-целым числом (в пределах от 0 до 9999);
-обычным идентификатором.
Все используемые метки должны быть описаны в разделе объявления меток, начинающемся зарезервированным словом LABEL, пример:
LABEL 1, 2, 3, A, B, X2;
Для того, чтобы пометить оператор, перед ним пишут метку, двоеточием отделяя её от оператора. Таким образом, можно пометить только один оператор. Следует иметь ввиду, что исполь-
43
зовать оператор GOTO нужно очень осторожно. Частое его применение приводит к затруднению понимания логики работы программы. При написании блок-схемы этот оператор отображается стрелкой перехода в нужную часть алгоритма.
Оператор отбора – обобщение условного оператора: он даёт возможность выполнить одно из нескольких действий. В зависимости от значений выражения(селектора отбора), относящихся к перечисляемому или ограниченному(но не вещественному) типу, этот оператор производит выбор из нескольких операторов.
Вобщем случае конструкция оператора отбора имеет вид:
CASE <селектор> OF C1 : <оператор 1>; C2 : <оператор 2>;
.....
CN : <оператор N>; [ELSE <оператор (N+1)>] END;
Вэтой структуре: CASE … OF … [ELSE …] END – заре-
зервированные слова языка PASCAL, которые можно перевести соответственно как ВЫБОР … ИЗ … [ИНАЧЕ …] КОНЕЦ;
C1, C2,…, CN – константы, с которыми сравнивается значение выражения "селектор";
оператор 1, оператор 2,…, оператор N – операторы, из ко-
торых выполняется тот, с константой которого совпадает значение выражения "селектор";
оператор (N+1) – оператор, который выполняется, если значение выражения "селектор" не совпадает ни с одной из констант
C1, …, CN.
Ветвь оператора ELSE является необязательной. Если она отсутствует и значение выражения"селектор" не совпадает ни с одной из перечисленных констант, то выполняется оператор, стоящий за END. В отличие от оператора IF перед словом ELSE точку с запятой можно ставить.
Если для нескольких констант нужно выполнить один и тот же оператор, их можно перечислить через запятую (или даже указать диапазон, если возможно), сопроводив их одним оператором. Например:
44
Case I of
0, 2, 4, 6, 8: WriteLn (‘Четная цифра’); 1, 3, 5, 7, 9: WriteLn (‘Нечетная цифра’); 10…100: WriteLn (‘Число от 10 до 100’);
else
WriteLn (‘Отрицательное число или больше 100’)
End;
Примером, использования оператора отбора, также может служить программа следующего задания.
Покупатель, имея 100 рублей, заплатил за покупку 23 рубля. Определить минимальное количество купюр в наборе, которое он получит в качестве сдачи. (Возможные купюры: 5 руб., 10 руб., 50 руб.).
Один из вариантов программы решения этой задачи выглядит так:
Вблоке 1 вводим имеющуюся сумму А и сумму за покупку B в рублях. Далее в блоке 2 находим оставшуюся сумму N и обнуляем счётчик купюр K. Затем проверяем в блоке 3 больше ли оставшееся сумма, чем 50 (руб.), если да, то селектору R присваиваем значение 2, и осуществляем переход в блок10, где оператор выбора передаёт управление блоку 11.
Внём из оставшейся суммыN вычитаем 50 (руб.) и в блоке 14 увеличиваем счётчик купюр на 1. После этого возвращаемся к блоку 3 и сравниваем оставшуюся сумму N с достоинством трёх купюр, т.о. процесс повторяется до тех пор, пока оставшаяся сумма не станет меньше 5 руб. (рис. 4.4)
45
|
Начало |
|
|
|
|
1 |
Ввод A, B |
|
|
|
|
|
|
|
|
|
|
2 |
N: = A - B |
|
|
|
|
|
K: = 0 |
|
|
|
|
3 |
N ³ 50 |
Да |
|
|
|
|
|
|
|
||
|
Нет |
|
4 |
R: = 2 |
|
|
Да |
|
|
|
|
5 |
N<50 и |
|
|
|
|
|
|
|
|
||
N>=10 |
|
|
|
|
|
|
6 |
R: = 3 |
|
|
|
|
Нет |
|
|
||
|
|
|
|
|
|
7 |
N<10 и |
Да |
|
|
|
|
|
|
|
||
N>=5 |
|
|
|
|
|
|
8 |
R: = 4 |
|
|
|
|
Нет |
|
|
||
|
|
|
|
|
|
9 |
Вывод: К |
|
10 |
Case R of |
|
|
|
|
|||
|
Конец |
11 |
N:=N-50 |
13 |
N:=N-5 |
|
|
|
12 |
N:=N-10 |
|
|
|
|
14 |
K:= K+1 |
|
|
|
|
Рис. 4.4 |
|
|
Как результат вычислений печатаем значение счётчика ку- |
|||||
пюр K. |
|
|
|
|
|
Program MONEY; |
|
|
|
||
{ Минимальное количество купюр в качестве сдачи } |
|||||
Label 1, 7; |
|
|
|
|
|
Var |
|
|
|
|
|
A, B, N, K, R: Integer; |
|
|
|
||
Begin |
|
|
|
|
|
Write (‘Исходная сумма’); ReadLn (A); |
|
||||
|
Write (‘Потраченная сумма’); ReadLn (B); |
||||
|
N := A – B; |
|
|
|
|
|
K := 0; |
{ обнуление оставшейся суммы} |
|||
1: If N >= 50 then R := 2 else |
|
|
46