©ткмп
г. Таганрог, 16 ноября 1998 г.
ОГЛАВЛЕНИЕ
Часть 1
УРОК 1
1. Введение ...................................................................... 6
Вопросы:
1. Задачи предмета.
2. Краткие сведения из истории развития ЭВМ.
3. Современные средства вычислительной техники.
2. Теория и построение алгоритмов ................................. 7
Вопросы: 1. Определение алгоритма. Примеры алгоритмов.
2. Свойства алгоритмов.
3. Способы описания алгоритмов.
4. Типы алгоритмов.
Упражнения .................................................................................... 11
Контрольные вопросы............................................................... 12
УРОК 2 .................................................................................. 12
Вопросы:!, Символьная схема алгоритма.
2. Величины: постоянные и переменные. Аргументы и ре
зультаты. Присваивание значения величине.
3. Линейные алгоритмы.
Упражнения .................................................................................. 16
Контрольные вопросы............................................................... 17
УРОК 3 ....................................................................................... 17
Вопросы: 1. Ветвительные алгоритмы.
Упражнения ....... 20
УРОК 4 ...................................................................................... 22
Вопросы: 1. Циклические алгоритмы.
Упражнения .......................... 26
УРОК 5 .................................... 28
Вопросы:
1. Понятие массива. Линейные массивы.
2. Примеры алгоритмов с линейными массивами.
Упражнения .................................................. 30
Контрольные вопросы..................................................... ......... 32
УРОК 6 ......................... 32
Вопросы: 1. Схема сложного цикла.
3
Упражнения ...................................................................... 34
УРОК ; 7 ................................................................................ 35
Вопросы: 1. Составление алгоритмов с линейными массива
ми.
Упражнения ................................................................................... 37
УРОК 8 .................................... 38
Вопросы: 1. Составление алгоритмов с линейными массива
ми.
Упражнения ................................................................................. 41
УРОК 9 .......................................................................................... 42
Вопросы:
1. Прямоугольные массивы (матрицы).
2. Примеры алгоритмов с прямоугольными массивами.
Упражнения ................................................................................. 45
УРОК 10 .......................................................................................... 46
Вопросы: 1. Составление алгоритмов с прямоугольными
массивами.
Упражнения ................................................................................... 48
Часть 2
Введение......................................................... 49
УРОК 11............................................ 51
Вопросы: 1. Этапы решения задач на ЭВМ.
2. Стандартные функции языка Турбо Паскаль 7.0
УРОК 12 ............................................................................... ....... 55
Вопросы: 1. Способы использования данных в алгоритмах
при решении задач на ЭВМ
УРОК 13..................................................................... 60
Вопросы: 1. Построение сложных алгоритмов с ветвлением
и их реализация на ЭВМ
УРОК 14 ............................................................................. 65
Вопросы: 1. Практическое занятие “Построение
ветвительных алгоритмов и их реализация на ЭВМ
УРОК 15 ...... ..................................................................... 67
Вопросы: 1. Организация циклических процессов
4
УРОК 16 ............................................................................ 71
Вопросы: 1. Графические операторы
УРОК 17 ........................................................................... 75
Вопросы: 1. Создание графических изображений
с помощью ЭВМ
УРОК 18 ........................................................................... 77
Вопросы: 1. Обработка текстовых данных
УРОК 19 ............................................................................ 85
Вопросы: 1. Решение задач с использованием массивов:
а) линейные массивы
УРОК 20 ..................................... ....................... ................ 91
Вопросы: 1. Решение задач с использованием двухмерных
массивов (матриц)
Дополнительные сведения (подпрограммы)..................... 97
Приложения .................................... *.................................... 104
ЛИТЕРАТУРА ........................................................................... 108
Часть 1
УРОК 1
1. Введенно
Вопросы:
1.Задачи предмета.
2. Краткие сведения из история развития ЭВМ.
8. Современные средства вычислительной техники.
по формуле У (х.2)1 + 4
1. Задать значение х.
2. Вычесть 2 из х, результат обозначить Rg.
8. Возвести Rg в квадрат, результат обозначить Rg.
4. Сложить Rg с б, результат обозначить Rj-
5. Сложить Rg с 4, результат обозначить R3.
6. Разделить Rj па R3, результат считать ответом,
В приведенных примерах занумерованные действия на
зываются коииаядоми.
2. Алгоритмы обладают свойствами:
— дискретность - алгоритм состоит из отдельных ко
манд;
— точность - выполнив команду, исполнитель точно зна
ет, какую команду делать дальше;
— понятность - алгоритм строится так, чтобы все ко
манды были понятны- исполнителю;
— результативность - каждый, правильно составленный
алгоритм, приводит к результату;
— массовость - с помощью одного и того же алгоритма
можно решить несколько однотипных задач.
10
проверка УСЛОВИЯ происходят позже. Цикл «пока» (рис.
1г) отличается от цикла «до» тем, что сначала проверяется
УСЛОВИЕ к лишь при ого выполнении (ответ «да») следует
тело цикла. Если же УСЛОВИЕ при первой проверке не вы*
полняется, то тело цикла но выполняется ни разу.
Упражнения
Составить словесное описание алгоритма для решения
задач:
1. Найти середину отрезка АВ при помощи циркуля и
линейки.
2. С помощью циркуля и линейки построить окруж
ность, для которой данный отрезок - диаметр.
3. Построить график функции уЧсх.
4. Вычислить значение у по формуле у-(Зх+2) (2х-1)
при х»4.
Б. Решить уравнение ах+Ь-О.
6. Вычислить площадь треугольника по формуле Горо
ва при заданных значениях длин его сторон а, Ъ и с
11
14. Найти площадь кольца, внутренний радиус которо
го 1*10, а внешний радиус R>10.
16. Вычислить значение у по формуле у-Ах^НхЛУЙ.
Контрольные вопросы
1. Какую главную задачу решает информатика?
2. Что такое информация?
3. Как называются сведения в информатике?
4. Гдо и когда впервые была введена в строй ЭВМ?
6. Какие характерные особенности были у первых ЭВМ?
6. Почему современные ЭВМ называются ПЕРСОНАЛЬНЫ
МИ?
7. Что такое алгоритм?
в. Какими свойствами обладают алгоритмы?
0. Какие имеются способы для представления алгоритмов?
10. Назовите основные типы алгоритмов.
УРОК 2
Вопросы;
1. Символьная схема алгоритма.
2. Величины: постоянные и переменные. Аргументы н
результаты. Присваивание значения величине.
3. Линейные алгоритмы.
1. Символьная схема алгоритма — это графическое изоб
ражение алгоритма с помощью геометрических фигур (бло
ков).
Конфигурацию к размер блоков, а также порядок пост
роения схем алгоритмов определяет ТОСТ 19002-80 и 10003-
80.
Размер а выбирается нз ряда 10,15, 20 мм. Допускает
ся увеличивать размер в в б раз. Размер b “ 1,5а., допускает
ся Ь“2а. Соединительные линии (линки потоков) выполня
ются в 2 раза тоньше линий обводки блоков. (См. Табл. /).
Пример. Составить символьную схему алгоритма варки кар
тофеля.
1, 10 блоки ~ начало и конец алгоритма.
2 блок - здесь записаны исходные данные.
3-6 блоки - линейная часть алгоритма. Указанные команды
пояснений не требуют.
7-8 блоки - циклическая часть алгоритма (цикл «пока»). В
12
7 блоке проверяется условие. Если оно выполняется, то есть
картофель еще не готов, то нужно еще варить (блок 8). В
противном случае (ответ «нет») картофель готов. Тело цнх-
ла больше не выполняется, а выполняется команда блока 0.
14
Числовые константы бывают двух типов - полые и
вещественпые (действительные). В числах е дробной частью
вместо занятой ставится точка (шшримор, -5.37). Для слиш
ком больших или слишком малых действительных чисел
применяется следующая форма записи: 6.72Е-8 (математи
ческая запись этого числа 6,72-1 О*8 ).
Символьная константа - это набор символов в ка
вычках. Например, "Х1-”.
Величины, используемые в информатике, делятся на ар
гументы, результаты п промежуточные.
Аргументы - ото исходные данные.
Результаты - это искомые данные.
Промежуточные используются в процессе исполнения
алгоритма.
Рассмотрим примеры.
Х"5.8 - числовой переменной X присваивается значение
5.8:
Х-Х+0.2 - значение переменной X увеличивается на 0.2.
Здесь X, записанное после знака «“», является старым зна
чением X; X, стоящее до знака «-», является новым знача-
пнем X.
А$ - «дом» - символьной переменной А$ присваивается
значение символьной константы «дом».
15
Указание: в одной команде использовать только одну
операцию.
Решение*. схемы алгоритмов приведены на рисунках 3
и 4 соответственно.
Упражнения
ax2 —cos^l+x3 +b
B)z = 8т(хел^/+х? +-У/+*2);
r)J" &c+2ln|xl+3 •
. Л Я Я
sm — + cos —+rg—
y = —l____ 1.Л1. . L 7 + cos(y-2)
Д) .я я я X e) x4!2 + $m2z
sin—cos —Zg—
6 6 6
Контрольные вопросы
УРОКЗ
Вопросы:
1. Ветвительные алгоритмы.
1. Рассмотрим на конкретных задачах составление ал
горитмов с ветвлением.
Задача 1. Составить схему алгоритма «Дежурство».
Решение. Схема алгоритма решения задачи изображена
на рис. 5.
Задача 2. Найти наибольшее из
равных между собой.
БИБЛИОТЕКА17
Решение. Схема алгоритма решения задачи изображена на
рис. 6.
Рис. 5. Рис. 6.
18
Задача 5. Вычислить значение функДии
е* если х < О
У=
|х -2, если х > 7
Решение, Смысл функций, записанный таким образом,
заключается в том, что на разных промежутках значении х
функция вычисляется по соответствующим формулам. В дан
ном случае при значениях х < 0 функция у вычисляется по
формуле у=ех. При х>1 функция у вычислЯется по формуле
у==х-2. А для значений х, взятых на промежутке (0, 1], функ
ция не определена. Поэтому схема алгоритм решения дан
ной задачи будет выглядеть так, как изображено ыа Рис- 9.
Задача 6. Отрезок [а, Ь] точкой с делится на два
отрезка (с Ф а, с^ Ь). Определить, какому проглежУткУ принад
лежит заданное число d (d^a, d^b).
Решение. ]\л.я. наглядности рекомендУется изобразить
числовую ось, данный отрезок [а, Ь] и точку Возможны три
варианта ответа: 1) d лежит на интервале (а> с)5 2) d лежит
на интервале (с, Ь); 3) d лежит вне отрезка (а» Ь].
Схема алгоритма решения задачи изображена на рис.
10.
19
Задача 7. Дано действительное число х=а. Для функ
ции, график которой изображен на рис. 11, вычислить f(a).
Решение. Функцию y=f(x)
можно записать следующим
образом:
-х.еслих <0
/(х) = 1 г---- 7
у/-х , если 0 <х < 1
В данном случае рассужде
ния такие же, как и при решении
задачи 5.
Схема алгоритма решения
задачи изображена на рис. 12.
Упражнения
Вопросы:
1. Циклические алгоритмы.
записано 10 слагаемых;
- знаки у слагаемых чередуются, начиная со знака При
чем, слагаемые с нечетными номерами имеют знак з сла_
гаемые с четными номерами - знак В матема>гике
23
такое чередование знака записывается формулой (~l)n; и
обозначим нумерацию слагаемых п=1, 2, 3,...,10. Тогда каж
(-/)"
дое слагаемое можно записать в виде . А вся сумма
гГ
S _ у (~ 7)
представлена так: д - / л ?•
п=1 ”
При составлении алгоритма для вычисления суммы
7
будем находить каждое слагаемое в виде -у и умножать на
.п.
М « ± 1. Поскольку в данной задаче первое слагаемое имеет
знак минус, то первоначальное значение множителя М будет
равно -1. Повторяющиеся действия по нахождению очеред
ного слагаемого, изменения значения суммы (то сложение, то
вычитание из-за множителя М) и смена знака множителя М
на противоположный образуют тело цикла. Схема алгорит
ма решения задачи изображена на рис. 16.
Задача 3. Вычислить сумму
8 = 2 + 4 + 8 + 16 +...+ 1024.
Действие возведения в степень не использовать.
Решение. Сумму можно переписать так:
24
10
S = 21 + 22 + 23 + 24 + ... + 210 = X2”
п=1
Упражнения
Составить схему алгоритма для решения задач:
1. Найти наибольший общий делитель (НОД) двух на
туральных чисел, используя алгоритм Евклида (см. УРОК 1
пример 3).
2. Вычислить сумму S - 1 4 + 9 16 Ь ... 400.
26
Рис. 18. Рис. 19. Рис. 20
•I Вычислить п! (факториал натурального числа п).
Пояснение. Факториал натурального числа п - это про-
и нн’Допие всех натуральных чисел от 1 доп включительно,
гл*. п! -• 1 • 2 • 3 • ... • (п - 1)-п. Например, 5! = 1 • 2 • 3 • 4 •
Ь 120.
1. ( ’оставить таблицу значений функции
\ I /. если х < О
(\ /)’\ если О S >’ S 2,
, на отрезке | <3, 3] с шагом
/ если а *2.
O.h
27
х3 X5 X7
5. Вычислить сумму S = х - —+—-—+... с точностью
а> 6)
УРОК 5
Вопросы:
1. Понятие массива. Линейные массивы.
2. Примеры алгоритмов с линейными массивами.
1. Массив ~ это упорядоченный набор данных, имею
щих одинаковое имя. Массив характеризуется именем и раз
мерностью. Каждый элемент массива имеет имя и индекс
(порядковый номер). Для обозначения массивов, содержащих
символьные величины, добавляется знак $. Например:
А(1: 20) — числовой массив, состоящий из 20-ти эле
ментов;
В$(1: 10) - символьный массив, состоящий из 10-ти
элементов;
А(5) - пятый элемент числового массива А;
В$(2) - второй элемент символьного массива В;
A(i) - i - тый элемент числового массива А.
28
Массивы бывают одномерными {линейные массивы) и
двухмерными {матрицы). В'двухмерных массивах каждый
момент имеет два индекса: первый означает номер строки, а
второй - номер столбца. Например, А(4, 5) - это матрица из
числовых величин, в которой 4 строки и 5 столбцов. Если
пописано: А(2, 3) = 8, то это команда присваивания, в ре
зультате которой число 8 будет записано в матрицу А на
пересечении 2-й строки и 3-го столбца.
Примеры неправильных записей:
А(2) = “10” - несоответствие типов данных;
В$(4) = 7 - - “ - - “ - ;
5 = А(2, 3) - неверная запись команды присваивания.
Нужно:
А(2, 3) = 5.
2. Рассмотрим некоторые типовые задачи по обработ
ке линейных массивов.
Задача 1. В массиве Т(1: 30) найти сумму и количе
ство положительных элементов.
Решение. Для большей наглядности изобразим линейный
массив в виде таблицы:
Таблица 2
индекс 1 - 2 3 4 5 ... 28 29 30
УРОК 6
Вопросы:
1. Схема сложного цикла.
1. Рассмотрим на конкретных задачах построение бо
лее сложных алгоритмов для работы с линейными массива
ми.
Задача 1. В массиве В(1: 10) найти максимальное чис
ло и его порядковый номер. Считать, что такое число в мас
сиве единственное.
Решение. Предположим, что первый элемент массива —
наибольшее число и примем его за максимальное. Тогда max
= В(1), а его номер n = 1. Начиная со второго элемента,
будем сравнивать все оставшиеся элементы с максималь
ным. Обозначим параметр цикла i. Если окажется, что при
каком-то номере i очередной элемент массива будет больше
максимума, тогда за максимальный элемент примем это но
вое число: max = B(i). Запомним новый номер n = i. Эти
повторяющиеся действия образуют тело цикла. Закончив
проверку всех элементов массива, выведем результаты: мак
32
симальное число max и его номер п. Схема алгоритма реше
ния задачи изображена на рис. 23.
Задача 2. В массиве 8(1: 30) хранятся данные сорев
нований по бегу на 100 м, а в массиве F$(l: 30) - фамилии
спортсменов. Определить, сколько спортсменов сдали норму
N и их фамилии.
Решение. При беге на 100 м считается, что i-тый спорт
смен сдал норму N, если его результат S(i) < N. Тогда нужно
вывести и его фамилию F$(i). Подсчет количества спортсме
нов, сдавших норму, нужно производить счетчиком к коман
дой k = k + 1.
33
условия A(i)=min (?) (очередной элемент массива сравнива
ется с минимумом). При положительном ответе увеличива
ется значение счетчика на 1.
Схема алгоритма решения задачи изображена на рис.
25 и 26 (второй вариант).
34
5. В массиве А(1: 10) найти минимальное число и
записать его на 1-е место, а 1-й элемент записать на место
минимального.
6. Строго ли возрастают элементы линейного массива
А(1: 20)?
7. Из массива А(1: 50) все числа, оканчивающиеся циф
рой 3, переписать в другой массив и узнать их среднее ариф
метическое.
8. Даны два числовых массива А(1: 10) и В(1: 10).
Определить, сколько раз встречается каждый элемент масси
ва А среди элементов массива В.
УРОК 7
Вопросы:
1. Составление алгоритмов с линейными массивами.
Задача 1. В массиве R(l: 30) находятся данные о рос
те мальчиков со знаком “+” и о росте девочек со знаком
Определить средний рост мальчиков и девочек. Сравнить ре
зультаты.
Решение. Чтобы найти средний рост мальчиков, нужно
в цикле суммировать положительные числа массива. Одно
временно необходимо подсчитывать количество мальчиков.
Выйдя из цикла, найти средний рост мальчиков путем деле
ния полученной суммы на количество.
Однако в массиве данных о мальчиках могло и не быть.
Поэтому вычисление среднего роста мальчиков теряет смысл.
Аналогично находится средний рост девочек. Только
окончательный результат нужно взять по модулю.
При сравнении результатов (если имеются данные для
мальчиков и для девочек) возможны 3 варианта: 1) средний
рост мальчиков больше среднего роста девочек, 2) средний
рост мальчиков меньше среднего роста девочек, 3) результа
ты одинаковые. Схема алгоритма решения задачи изображе
на на рис. 27.
В приведенном алгоритме использовано составное ус
ловие «к1 Ф 0 И к2 Ф 0», которое истинно (ответ «да»), если
одновременно выполняются оба простых условия, то есть
когда в массиве имеются данные для мальчиков И для дево
чек. Тогда следуют сравнения полученных результатов SR1
и SR2. Если хотя бы одно условие не выполняется, то
35
рис. 27
Рис. 28.
Упражнения
Составить схемы алгоритмов для решения задач:
В массиве А(1: 20), содержащем действительные чис
1.
ла, определить, сколько чисел находится между первой парой
нулей.
37
2. Просуммировать столько чисел массива А(1: 100),
каково заданное натуральное число N.
3. Для массива А(1: 30) произвести следующую переста
новку элементов: поменять местами элементы 1-й и 2-й, 3-й и
4-й, 5-й и 6-й и т.д.
4. Массив А(1: 50) заполнен действительными числа
ми. Если в этом массиве окажется число 10 с индексом i, то
оставшиеся числа просуммировать, начиная с (i + 1)-го чис
ла. Определить количество просуммированных чисел.
5. В массиве Z(l: 30) все числа, меньше заданного чис
ла Р, заменить числом М. Найти сумму элементов массива
до и после замены.
6.Образуют ли элементы массива А(1: 30) арифмети
ческую прогрессию? Если нет, то указать номер элемента, на
чиная с которого это правило не выполняется.
7.Из массива А(1: 100) удалить все отрицательные
элементы. Решить задачу для двух вариантов:
а) использовать дополнительный массив;
б) дополнительный массив не использовать.
УРОК 8
Вопросы:
1. Составление алгоритмов с линейными массивами.
1. Большой практический интерес представляют зада
чи по упорядочению элементов массива по возрастанию или
убыванию. Такой процесс называется сортировкой.
Задача 1. Пусть дан числовой массив А(1 : 20). Требу
ется отсортировать элементы этого массива по возрастанию.
Решение. Если массив будет отсортирован по возраста
нию, то, строго говоря, все его элементы будут образовывать
возрастающую цепочку чисел:
А(1) < А(2) < А(3) < А(4) < ... <А(20).
То есть каждое предыдущее число будет меньше после
дующего. Поэтому процедуру сортировки массива можно про
извести следующим образом. Найти минимальное число MIN
и запомнить его номер (индекс), например, п. Затем обме
нять местами 1-й элемент и минимальный так: на место
минимального с номером п записать 1-й элемент, а на место
1-го элемента записать число MIN. Наоборот нельзя, так как
в этом случае 1-й элемент будет уничтожен (!) и в массиве
38
окажутся два числа, равных MIN: на первом месте и на
месте с номером п.
Аналогичные действия нужно проделать, начиная со 2-
го элемента и найденное минимальное число из оставшихся
19-ти чисел записать на 2-е место и т.д. В результате массив
будет отсортирован по возрастанию.
Схема алгоритма решения задачи сортировки элемен
тов по возрастанию изображена на рис. 29.
39
При i = 1 минимальное число будет равно первому: MIN «
А(1), его номер n = 1. Так как j=i + l=l + l = 2, то,
начиная со 2-го числа, во внутреннем (вложенном) цикле
все оставшиеся элементы будут сравниваться с минималь
ным в 6-м блоке. Если найдется число меньше минималь
ного, то минимальное число будет объявлено новым (в блоке
7) и запомнится его номер (в блоке 8). В противном случае
просто закрывается внутренний цикл. После завершения ра
боты во внутреннем цикле производится обмен местами 1-
го элемента и минимального с номером n = j в блоках 9 и
10. На этом тело внешнего цикла заканчивается.
Теперь параметр i принимает значение 2. Так как 2 <
19, то работа в цикле продолжается. На втором этапе за
минимальное число принимается 2-й элемент: MIN = А(2).
Начиная с 3-го элемента (так как js==i+l=24-l = 3), все
оставшиеся элементы будут сравниваться с новым минималь
ным числом. После завершения работы внутреннего цикла
снова произойдет обмен местами двух элементов: теперь уже
2-го элемента с минимальным, номер которого новый (п = j).
Так будет продолжаться, пока не будет найдено минималь
ное число из 19-го и 20-го. В 11 блоке выводится отсортиро
ванный массив. И блок 12 завершает работу алгоритма.
Описанный выше метод сортировки называется «об
менной сортировкой».
Существуют и другие простые методы сортировки мас
сивов, например, «метод пузырька». Этот метод прост, рабо
тает медленнее «обменной сортировки». В «методе пузырь
ка» (см. рис. 30) производится попарное сравнение смежных
элементов. Если требуемое условие не выполняется, то эти
элементы обмениваются местами. В каждом новом проходе
массива количество проверок уменьшается на единицу. Пос
ледний раз сравниваться будут оставшиеся два первых эле
мента. В итоге получится отсортированный массив.
Среди быстрых сортировок массивов можно назвать ме
тод Шелла, метод Хоара, быстрая сортировка Quicksort, пира
мидальная сортировка (Heapsort), древовидная сортировка и
ДР-
40
Упражнения
Составить схемы алгоритмов для решения задач:
1. В массиве А(1:50) переставить элементы таким об
разом, чтобы они шли is следующем порядке: А(2), А(3), А(4),
, А(50), А(1), то есть произвести в массиве сдвиг влево на
один элемент.
2. В массиве А(1:50) произвести сдвиг влево на 3 эле
мента.
3. Дан массив А(1:50), элементы которого отличны от
нуля. Сформировать массив В(1:50), в котором сначала рас
положены положительные элементы массива А, а далее - все
отрицательные. Порядок расположения элементов не изме
нять.
4. Переставить элементы массива А(1:50), не содержа
щий нулей, таким образом, чтобы вначале шли положитель
ные элементы, а затем - отрицательные. При решении зада-,
чи новый массив не заводить.
5. Массив Т содержит только значения/О и 1. Опреде
лить количество нулей и количество единиц. Поменять 0 и 1
ролями.
6. Массив А содержит N числовых значений. Сгруппи
ровать все ненулевые значения в начале массива.
7. В массиве F$ содержатся фамилии 30-ти учащихся
группы, а в массиве М - соответствующие оценки по предме
ту математика. Определить:
а) количество учащихся, обучающихся на 4 и 5;
б)количество учащихся, имеющих оценку 2. Указать их
фамилии;
в) средний балл по предмёту;
г) качество успеваемости по предмету математика, ис-
К
пользуя формулу KU - — *100% где К - количество уча-
) "
щихся, обучающихся на 4 и 5;
N - количество всех учащихся;
KU — качество успеваемости.
41
УРОК 9
Вопросы:
1. Прямоугольные массивы (матрицы).
2. Примеры алгоритмов с прямоугольными массивами.
1. В уроке 5 дано определение массива как упорядо
ченного набора данных, имеющих одинаковое имя. Двухмер
ные массивы - это прямоугольные массивы или матрицы. В
матрице каждый элемент имеет два индекса: первый означа
ет номер строки, а второй - номер столбца. Например, А(4, 5)
— это матрица из числовых величин, в которой 4 строки и 5
столбцов. В обозначении символьных матриц добавляется
знак $. Например, V$(3, 4).
В дальнейшем будем работать с матрицами построч
но: сначала с элементами 1-й строки, затем с элементами 2-
й строки и т.д. Такие процедуры обычно делаются в двой
ном цикле.
Рассмотрим пример. Изобразить схему алгоритма для
заполнения числами матрицы А(3, 4) (см. рис. 31).
Таблица 3
i\ j 1 2 3 4 5
1 Г. 5 -1 4 2 1
2 3 о 7 -5 1
3 0 4 з 6 8
4 7 -2 4 '" -2 0
5 8 1 5 4 0.
Упражнения
Составить схемы алгоритмов для решения задач:
1. Найти сумму и произведение элементов каждой диа
гонали квадратной матрицы A(N, N).
2. Сколько раз встречается самое большое число в мат
рице А(4, 6)?
3. Отрицательные элементы матрицы А(3, 5), стоящие
во 2-й строке, переписать в линейный массив.
4. Найти максимальное число в матрице А(4, 6). Ука
зать номера столбцов, в которых имеются элементы, равные
максимальному. Определить, сколько таких элементов ока
залось.
5. Для квадратной матрицы А(5, 5) найти сумму всех
элементов, стоящих ниже главной диагонали.
45
6. В матрице А(9, 9) определить, какие элементы явля
ются произведением своих индексов, Указать эти элементы
и их индексы.
7. В целочисленной матрице А(4, 6) определить, в ка
кой строке имеется наибольшее количество нулевых элемен
тов.
УРОК 10
Вопросы:
1. Составление алгоритмов с прямоугольными масси
вами.
Научиться обрабатывать данные в прямоугольных мас
сивах можно лишь путем решения задач по составлению
соответствующих алгоритмов.
Задача 1. Найти сумму элементов каждой строки матри
цы А(3, 5).
Решение. Поскольку необходимо производить сумми
рование элементов в каждой строке, то нужно организовать
цикл, который будет работать 3 раза (так как 3 строки).
Перед суммированием элементов 1-й строки предварительно
сумму S приравняем 0: S = 0. Во внутреннем цикле будем
вести суммирование пяти элементов 1-й строки. После окон
чания суммирования нужно вывести ответ: значение суммы
для 1-й строки. Теперь нужно изменить номер строки на 2, а
сумму обнулить и повторить всё снова. И так проделать для
каждой строки.
Схема алгоритма решения задачи изображена на рис. «34.
Задача 2. В каждой строке матрицы А(5, 6) найти ми
нимальное число и записать его в линейный массив В. Выве
сти затем матрицу и массив В.
Решение. В начале алгоритма матрицу А(5, 6) и линейный
массив В(1: 5), так как в матрице 5 строк и из каждой
строки нужно минимальный элемент переписать в массив В.
Заполним в двойном цикле матрицу А. После этого откры
ваем опять двойной цикл: внешний цикл с параметром i
будет «следить» за номерами строк, а во внутреннем цикле
будем искать минимальное число (см. УРОК 6 задача 1).
После выхода из внутреннего цикла найденное минимальное
число запишем в массив В на i - тое место. На этом тело
внешнего цикла заканчивается. Параметр i приобретает но-
46
Рис. 34.
вое значение 2, то есть нужно искать минимальное число во
2-й строке аналогичным образом и т.д. При i = 6 произой
дет выход из внешнего цикла. В завершении алгоритма вы
водится исходная матрица А и сформированный массив В.
Схема алгоритма решения задачи изображена на рис. 35.
Рис. 35.
47
Упражнения
1. Найти среднее арифметическое элементов каждого
столбца матрицы действительных чисел А(5, 6).
2. Дана матрица A(N, М) действительных чисел. Полу
чить новую матрицу путем деления всех элементов данной
матрицы на наибольшее по модулю число. Обе матрицы вы
вести.
3. В матрице А(4, 6) действительных чисел найти наи
больший и наименьший элементы, определить их индексы.
Определить, сколько элементов расположено между ними.
Считать, что такие элементы единственные.
4. В квадратной матрице A(N, N) действительных чи
сел просуммировать элементы той строки, в которой нахо
дится наименьший элемент. Считать, что такой элемент един
ственный.
5. В матрице А(4, 6) поменять местами элементы 1-й
строки и 2-й.
6. Дана целочисленная квадратная матрица 5-го по
рядка. Определить, действительно ли, что единичные элемен
ты находятся только на главной диагонали.
7. В матрице действительных чисел A(N, М) опреде
лить, имеются ли какие-нибудь две строки, содержащие оди
наковые элементы. Если имеются, то указать номера строк.
48
Часть 2
Введение
Язык программирования Турбо Паскаль 7.0
(краткая историческая справка)
50
УРОК 11
Вопросы: 1. Этапы решения задач на ЭВМ.
2. Стандартные функции языка Турбо
Паскаль 7.0.
52
Таблица 1
53
7b2 - 4ac sqrt(sqr(b) -4* a * c)
-0,000707 -7.07Е-4
1
exp(i/s*ln(a))
^a =a3
Замечания.
1) .B TurboPascal 7.0 отсутствует функция для вычис
ления значения степени. Так, для вычисления значения аь
можно применить формулу
ехр(Ь * 1п(а)).
При отрицательном значении основания степени а вы
числение невозможно!
2) . Для получения целых случайных чисел на отрезке
[а, Ъ] можно использовать формулу
R : = round ( random * (b - а) + а ),
где a, b, R : integer.
Упражнения
Задание. Записать на языке Turbo Pascal 7.0 следую
щие выражения:
1) 2,5 107 2) -1,54О8 3) -0,000707 4) 10000000
5) - 0,000005 6) - 0,8 7) 3, 26/2 8) 5-(с - d)
9) sin 2 (х/3) 10) х2+у 11) 2,9-х + у/3 12) a/(2-b)
а + Ьх 2=l+ii
13) у = 14) 15) у - ех sin2 х 16) x = Va2+0.1
c+d 2у
sin(x2)+cos2 у
22) С = 264 +------
54
I я
2cos^x~ —J
24) 25) S = + cos (х + Ь)'
0.5 +sin2 у
, 2 а
y = b-tg2x-------- —
26) / = Vk • sin( t)\ + t) 27) sin2 — + 1
а
РОК 12
Вопросы: 1. Способы использования данных в алго
ритмах при решении задач на ЭВМ:
- структура программы на языке ТП 7.0;
- пример простейшей программы;
• ввод и вывод данных. Операторы READ и WRITE;
• запуск программ;
• линейные программы.
end.
На языке программирования Турбо Паскаль 7.0 опера
тор присваивания записывается в виде : = .
1. В качестве примера рассмотрим простейшую про
грамму вычисления площади круга по формуле S = яг2.
{вычисление площади круга}
program krug;
uses crt;
var r:real; {радиус круга}
s:real;
begin clrscr; {очистка экрана}
57
write(‘BBeflHTe радиус круга г «
readln(r);
s:=pi*r*r;
writeln(‘mi. круга = ’,s:5:4);
readin;
end.
После запуска программы на исполнение на экране
дисплея будет отображено:
58
дисплея значения переменных х1 и х2, а затем осуществля
ет переход на новую строку.
Перед выводом данных рекомендуется давать поясня
ющий текст с помощью оператора write, как это сделано в
приведённом выше примере.
В операторе write можно указывать формат вывода дей
ствительных чисел, как это сделано в примере.
Формат указывается через двоеточие после перемен
ной. Для действительных чисел формат состоит из двух
величин. Первая величина означает общее поле выводимого
значения (в примере: 7), вторая - поле дробной части (в
примере: 4). Общее поле включает в себя отрицательный
знак числа, количество цифр в целой части числа, точку и
количество цифр в дробной части.
4. Запуск программ.
а) Чтобы исполнить программу на ЭВМ, необходимо
сначала запустить программу Турбо Паскаль 7.0. Для это
го нужно:
- загрузить MS DOS; (используя клавишу F4 при
появлении надписи Starting Windows 95...);
• загрузить компилятор Турбо Паскаль 7.0, используя
путь:
d: \ lernen \ tp 70 \ bin \ tp 7. bat
После загрузки программы на дисплей будет выведено
окно основного экрана ТП 7.0 синего цвета со строкой меню
и строкой состояния.
После этого можно набирать программу.
б) Набранную программу затем необходимо сохранить
на диске. Для этого в меню File выбрать режим Save as...
, задать имя программы и нажать клавишу Enter.
в) Компиляция программы производится нажатием
клавиши F9. Если транслятор обнаружит в программе син
таксическую ошибку, то он выдаст соответствующее сообще
ние на экране, указав курсором место ошибки. Ошибку не
обходимо устранить и снова нажать клавишу F9. При от
сутствии ошибок компиляция проходит успешно с выводом
на экран дисплея соответствующего сообщения. Программу
нужно снова сохранить под старым именем нажатием кла
виши F2.
59
г) Запуск программы на исполнение производится на
жатием клавиш Ctrl + F9.
5. Линейные программы.
Упражнение Вычислить площадь и периметр пря
моугольника со сторонами
а = 8, в = 21.
Упражнение 2._ Вычислить объём шара по формуле
4
V= ~tcR3
V= +Rr + r )
УРОК 13
Вопросы: 1. Построение сложных алгоритмов с
ветвлением и их реализация на ЭВМ:
• безусловные переходы;
• условные переходы;
• оператор выбора.
60
Метка представляет собой любое целое число без
знака в диапазоне от 1 до 9999. Это число записывается
перед помечаемым оператором и отделяется от него двоето
чием.
В простых программах оператор перехода goto не вы
зывает никаких затруднений. В сложных программах, запи
санных на многих листах, эти переходы проследить трудно.
Поэтому при написании программ надо стремиться избегать
применения операторов перехода. В. ряде случаев это можно
сделать очень просто. Например, фрагмент программы, ти
пичный для некоторых языков программирования,
if а > b then goto 1;
а: = a-b;
goto 2;
1: а: = а+Ь;
2: у: = а
можно заменить следующей конструкцией языка ТП 7.0:
if а > b tnen а: = а+Ь
else а: = а-b ;
у: = а
Условные переходы. Для составления программ с вет
влениями применяется оператор условного перехода, полная
форма которого имеет вид:
if {условие) then оператор 1
else оператор 2
Если проверяемое (условие) истинно, то выполняется
оператор 1, в противном случае выполняется оператор 2. В
краткой форме оператора условного перехода отсутствует
слово else.
В более общем виде оператор условного перехода мож
но записать следующим образом:
if (условие)
then
begin
оператор 1;
оператор 2;
оператор (последний);
61
end
else
begin
оператор 1;
оператор 2;
оператор последний;
end;
Контрольные примеры:
1) 2x 2 - Зх + 5 = 0. Действительных корней нет.
2) Зх2 -2х -1 = 0. xl = 1000, х2 = - 0.333.
62
3) х 2 - 8х +16 = О. xl — х2 — 4.000.
end ;
Оператор выбора работает следующим образом.
Если значение выражения равно одной из констант, то вы
полняется соответствующий оператор. Затем управление
передаётся за пределы оператора выбора (за “end”).
Выражение может быть любым типом, кроме real.
Тип константы должен совпадать с типом выражения.
Пример записи оператора выбора:
case n of
5 : у : = sqr(x);
7 : у : = sqrt(x);
9 : у : = 4*а*Ь;
end
В этом примере переменная п должна быть объявлена
как переменная целого типа.
Пример. Составить программу, которая по номеру дня
недели печатает соответствующий ему день недели.
{дни недели}
program dni;
uses crt;
var n : integer; {номер дня недели}
begin
clrscr ; {очистка экрана}
write (‘введите номер дня недели: ’);
readln (п);
case n of
63
1: writein (‘понедельник’);
2: writein (‘вторник’);
3: writein (‘среда’);
4: writein (‘четверг’);
5: writein (‘пятница’);
6: writein (‘суббота’);
7: writein (‘воскресенье’);
end;
readln
end.
Упражнения
3
1. Вычислить значение функции: y = V^-i
{вычисление значения функции}
program upr_l;
uses crt;
var x, y: real;
const tx = ‘функция не определена’;
begin
clrscr; {очистка экрана}
write (‘введите значение х = ’);
readln (х);
if (х < 0) or (х « 0.5)
then writein (tx)
else
begin
y: = 3/(sqrt(2*x)-l);
writein (‘y = ’, y:7:4);
end;
readln
end.
Контрольные примеры:
1) x — -5, функция не определена;
2) х = 0.5, функция не определена;
3) х = 3, у- 2.0697.
2. Вычислить значения функции:
ех, если х < 0,
У=S
х - 2, если х > 1.
64
{вычисление значения функции}
program upr_2;
uses crt;
var
x,y : real;
const tx = ‘функция не определена’;
begin
clrscr; {очистка экрана}
write (‘введите значение х = ’);
readin (х);
if (х>0) and (х<=1) then writeln(tx)
else
begin
if x<=0 then y:=exp(x)
else y:=x-2;
writeln(‘y == ‘,y:7:4);
end;
readln
end.
УРОК 14
Вопросы: 1. Практическое занятие № 4: “Построе
ние ветвительных алгоритмов и их реализация на ЭВМ”.
Практическое занятие посвящено построению ветви
тельных алгоритмов с целью их реализации на ЭВМ, то есть
необходимо составить символьную схему алгоритма и про
грамму на языке Турбо Паскаль 7.0.
В качестве образца выполним поставленную задачу для
следующего примера:
Вычислить значение функции
Символьная схема для вычисления данной функции
если х < 0,
если 0 < х < 1.
л ох ~ ,
— +--------5, если х < 4,
w =<х 2
е 2х + З^/хГ если х > 5.
3 вариант
1 . х2 + 1
— sm-------- если х > 2,
Z = < 3 10
cos(x + 0.1), если х < 0.
4 вариант
5х2 I . |
----- + sinx если х < 0.1;
2 1 1
1
если х = 0.4.
5х + 2
УРОК 15
Вопросы: 1. Организация циклических процессов.
begin
выполнять операторы
end;
Оператор цикла действует следующим образом. Сна
чала проверяется поставленное условие. Пока оно истинно.
68
выполняются операторы циклической части. Как только ус
ловие становится ложным, происходит выход из цикла. Если
с самого начала условие ложно, то операторы не выполня
ются ни разу.
Если в циклической части записано несколько опера
торов, то они заключаются в операторные скобки begin-end.
Если в циклической части стоит всего один оператор, то опе
раторные скобки можно не указывать. В таком случае мож
но записать оператор цикла так:
WHILE условие DO оператор
Программа для предыдущей задачи по нахождению сум
мы чисел S=l+2+3+...+19+20 с использованием оператора
WHILE ...DO будет выглядеть так:
{Сумма чисел 1+2+3+..А-20 с использованием
оператора WHILE...DO}
program summa;
uses crt;
var
i,sum:integer;
begin
clrscr;
sum:=0;
i:=l;
WHILE i<=20 DO {пока 1<=20-выполнять! }
begin
sum^sum-i;
i:=i+l;
end;
writeln( ‘сумма чисел 1.. .20= ‘ ,sum);
readln
end.
Оператор с последующим условием использует
ся в тех случаях, когда заранее неизвестно число повторе
ний цикла.
Оператор цикла имеет вид:
REPEAT Повторять
выполнение операторов
an:=l/(2*n+l);
end;
writeln(‘CyMMa = \s:8:4);
writelnCK<Ni-Bo слагаемых \n);
readln
end.
Контрольные примеры:
e=0,04; s=0.1954, n-12;
e=0,001; s=0.2151, n-499
e=0,0001; s=0.2147, n-4999.
УРОК 16:
Вопросы: 1. Графические операторы
71
ты, то необходимо включить в этот каталог и файлы шриф
тов (с расширением .CHR).
Сам модуль GRAPH представляет собой отдельный
файл GRAPH.TPU, который не входит в состав библиотеки
TURBO.TPL, и чтобы обеспечить возможность работы с гра
фикой, нужно сделать файл GRAPH.TPU доступным для
компилятора .
Приведенные ниже программы для работы в графичес
ком режиме с помощью процедуры
INITGRAPH загружает драйвер EGAVGA.BGI .
При работе в графическом режиме на экране дисплея
можно набирать и текст, в котором используются специаль
ные графические шрифты (файлы с расширением
.CHR).
Перед началом работы с графикой необходимо устано
вить для используемого монитора видеорежим, который за
даётся драйвером. В приводимых ниже программах соответ
ствующий драйвер будет устанавливаться автоматически с
помощью константы DETECT.
72
цедуры CloseGraph без параметров. Основные графические
операторы, процедуры и функции указаны в Приложении 1.
Рассмотрим простой пример инициализации графичес
кого режима:
Пример 1. Начертить на экране дисплея две диагонали
синего цвета.
{Две диагонали экрана дисплея}
program dvediag;
uses graph;
var
dr,mo:integer;
begin
dr:=detect;
Initgraph (dr,mo,’d:\lernen\tp 7O\bgi’);
setbcColor(l); {цвет фона синий}
line(0,0,640,480);
line(0,480,640,0);
readln;
CloseGraph;
end.
При инициализации графического режима, как указа
но выше, экран дисплея будет иметь разрешение 640*480
точек. Для построения изображения на экране в графичес
ком режиме применяется система координат, несколько от
личная от используемой в текстовом режиме. Отсчёт начи
нается от верхнего левого угла экрана, который имеет коор
динаты (0,0). Значение X (столбец) увеличивается в направ
лении слева направо, значение Y (строка) - в направлении
сверху вниз.
При этом экран
представляется в
виде прямоугольно
го массива адре
суемых точек, а не
символов, как в
текстовом режиме.
В графическом ре
жиме видимого
курсора нет, как в
текстовом режиме,Y
480
рис. 37. 73
но есть невидимый текущий указатель (СР current pointer),
выполняющий те же функции, что и курсор в текстовом
режиме. Для перемещения текущего указателя в точку с ко
ординатами (Х,У) используется процедура MoveTo(x,y). От
носительное перемещение текущего указателя СР по отно
шению к заданной точке производится процедурой
MoveRel(dx,dy). Здесь dx и dy могут быть как с положитель
ным, так и с отрицательным знаком.
При построении на экране дисплея различных геомет
рических фигур можно использовать указанные цвета, имею
щие нумерацию:
О - чёрный; 1 - синий; 2 - зелёный; 3 - голубой; 4 - красный;
5 - фиолетовый; 6 - коричневый; 7 - серый; 8 - тёмно-серый;
9 - ярко-синий; 10 - салатный; 11 - ярко-голубой; 12 - ярко-
красный; 13 - сиреневый; 14 - жёлтый; 15 - белый.
Рассмотрим простые примеры построения графических
изображений на экране дисплея.
Пример 2, В центре экрана изобразить кольцо зелёно
го цвета.
{кольцо зелёного цвета}
program kolco;
uses crt, graph;
var dr, mo: integer;
cz:byte;
begin
dr:=detect;
InitGraph(dr,mo,’d:\lernen\tp70\bgi’);
cz:=2; {зелёный цвет}
setcolor(cz);
circle(320,240,50);
circle(320,240,80);
setFillStyle(l,cz); {стиль заливки}
floodFill(380,240,cz); {заливка}
readln;
CloseGraph;
end.
Пример 3. В предыдущем примере цвет кольца зада
вать пользователем в режиме диалога.
Пример 4. В верхней части экрана начертить прямоу
гольник красного цвета; залить его зелёным цветом; в цент
ре прямоугольника напечатать чёрным цветом фразу: “ Урок
информатики
74
{прямоугольник с заливкой и текстом}
program prjamoug;
uses crt, graph;
var dr, mo: integer;
begin
dr:=detect; {автоопределение драйвера}
InitGraph(dr, mo,’d:\lernen\tp7O\bgi’);
setColor(12); {устан. цвет ярко-красный}
Rectangle(50,50,600,150); {прямоугольник}
setFillStyle(l,2); {стиль заливки}
floodFill(100,100,12); {заливка }
setColor(O); { чёрный цвет }
outTextXY(267,95, ’ypoK информатики’);
readin;
CloseGraph; {закрытие график, режима}
end.
УРОК 17
Вопросы: 1. Создание графических изображений с
помощью ЭВМ
Задача 1. На экране дисплея изобразить “взрыв”.
Решение. Под “взрывом” будем понимать семёйство отрезков
прямых линий, построенных из центра экрана в точку, коор
динаты которой задаются случайно с помощью генератора
случайных чисел. Чтобы наблюдать динамику процесса не
обходимо сделать задержку оператором delay(m), на m мил
лисекунд.
{“взрыв”}
program wzriw;
uses crt, graph;
var
dr,mo: integer;
k: byte; {Параметр цикла}
x,y: word; {Координаты конца отрезка}
begin
randomize; {Инициализация генератора случ, чисел}
dr:= detect; {Автоопределение драйвера}
InitGr aph(dr, mo, ’ d: \lernen\tp 7 O\bgi ’);
SetColor(12); {Ярко-красный цвет}
FOR k:=4 TO 100 DO
75
begin
x: =round(random*440+100);
у :=round(random*280+100);
line(320,240,x,y);
delay(2); {Задержка}
end;
readin;
CloseGraph;
end.
Задача 2.Ha экране дисплея построить тридцать гори
зонтальных отрезков, равноотстоящих друг от друга.
{Декоративная решётка}
program reshetka;
uses graph;
var
dr, mo:integer;
n,у: integer;
begin
dr:=detect;
InitGraph(dr,mo,’d:\lernen\tp70\bgi’);
y:=110;
FOR n:=l TO 30 DO
begin
line(500,y,550,y);
y:=y±5;
end;
readin;
CloseGraph;
end.
Задача 3. Изобразить на экране дисплея 100 разно
цветных шариков, радиус которых изменяется случайным
образом от 10 до 60.
{цветные шарики}
program color_shar;
uses crt,graph;
var dr,mo:integer;
x,y,n,r:integer;
c:byte; {номер цвета}
begin
dr:=detect^
76
InitGraph(dr,mo,’d:\lernen\tp70\bgi’);
randomize;
FOR n:=l TO 100 DO
begin
x:=round(random*440+100); {случайные координа
ты}
y:=round(random*280+100); { центра шариков }
c:=round(random*l 5); {номер цвета-случайный}
setColor(c); {установка цвета изобр}
r:=round(random*50~H0); {радиус шарика-случайн)
circle(x,y,r); {рисование окружности}
setFillStyle(l ,с); { стиль закрашивания}
FloodFill(x,y,c); { закрашивание шарика }
delay(lOO); {задержка на 100 мсек}
end;
readln; { приостанов вывода }
CloseGraph; {закрытие граф, режима}
end.
Задача 4. На экране дисплея построить 3 одинаковых
квадрата, заштрихованные:
- первый квадрат - наклонными линиями вправо;
- второй квадрат - наклонными линиями влево;
- третий квадрат - сеткой с шагом 10.
Задача 5. Разработать программу для изображения на
экране дисплея' детского мячика, раскрашенного в 4 произ
вольных цвета. Номера цветов задавать случайным образом
с помощью генератора случайных чисел.
УРОК 18
Вопросы: 1. Обработка текстовых данных.
79
clrscr;
x := ’компьютер’;
1 := length(x); {количество букв в слове}
у := сору(х,1,1); { это первая буква (к) }
write(y); {печать на экране буквы к}
FOR i :== 1 ТО 1-2 DO
write(‘.’); { вывод на экран точек}
у := сору(х,1,1); { последняя буква слова }
writeln(y);
readin
end.
82
y,b:string[l];
n,i,l,k:byte;
begin
clrscr;
writeln(‘введите текст: ’);
readln(x);
l:=length(x);
gl:=’ аоуиеёыэюя ’;
FOR i:=l TO 10 DO
begin
b:=copy(gl,i,l); k:==0;
FOR n:=l TO 1 DO
begin
y:=copy(x,n,l); {буква текста}
if у=Ъ then k:=k-bl;
end;
if k<>0 then \\ггНе1п(‘кол-во букв \b,’ \k);
end;
readln
end.
Задача 4. С клавиатуры по запросу ЭВМ вводятся фа
милии учащихся. Напечатать самую длинную фамилию и её
длину.
Решение. Перед тем, как вводить фамилии, надо за мак
симальную длину фамилии взять длину равную нулю, а соот
ветствующую фамилию выбрать пустой символ. Затем в цикле
вводить фамилии и производить проверку длины очередной
фамилии с максимальной длиной, Если введённая очередная
фамилия окажется длиннее максимальной, то за максималь
ную длину нужно принять длину этой фамилии и запомнить
её. По окончании работы в цикле надо напечатать результа
ты.
{самая длинная фамилия}
program dlin_fam;
uses crt;
var f:array [1..30] of string[20];
fam:string[20];
kbyte; {длина фамилии}
max, kbyte;
begin
83
clrscr; {очистка экрана}
max:=O; fam:=”;
writeln(‘Введите фамилии:’);
FOR i:=l TO 30 DO
begin
write(i,’- я:’);
if i=30 then ^Пе1п(“ПОСЛЕДНЯЯ!”);
readln( f[i]); 1: =length(f[i]);
if l>max then
begin
max:=l; fam:=f[i];
end;
end;
clrscr;
{вывод результатов}
FOR i:=l TO 30 DO
writein (f[i]);
writein;
writeln(‘caMaH длинная фамилия: ‘,fam);
writeInCеё длина:’,max);
readin
end.
Задача 5. Определить количество слов в заданном
тексте.
Решение. Для определения количества слов необходи
мо подсчитать количество пробелов и к результату приба
вить единицу. Если между словами имеется более одного
пробела, тогда необходимо ввести “флаг”, который бы учи
тывал эту ситуацию. В противном случает ответ будет не
верным.
{количество слов в тексте}
program kol_wo_slow;
uses crt;
var x:string[50];
b:string[l];
F,i,l,k:byte;
begin
clrscr;
writeln(‘введите текст: ‘);
readln( x); writein;
84
l:=length(x);
k:=0; F:=0;
FOR i:=l TO 1 DO
begin
b:=copy(x,i,l);
if b=’ ‘ then
begin
if F=0
then
begin
k:=k+l; F:«l;
end;
end
else F:=0;
end;
writeln(‘B тексте слов: \k-f-l);
readln
end.
УРОК 19
Вопросы: 1. Решение задач с использованием массивов:
а) линейные массивы;
Массив - это упорядоченный набор данных одного типа,
имеющих одинаковое имя. Каждый элемент массива имеет
имя, совпадающее с именем массива, и порядковый номер
(индекс). Массивы — это сложные типы данных. По-другому
их называют структурированными типами данных.
Линейные (одномерные) массивы на языке Турбо Пас
каль 7.0 объявляются следующим образом:
var
имя_массива : array [индекс?пере.) .. индекс?поел.)} of тип
элементов массива;
Примеры:
var
a:array [1..15] of real;
txt:array [1..20] of string[50];
В первом примере объявлен числовой массив, состоя
щий из пятнадцати элементов типа real, доступ к которым
осуществляется с помощью индекса, значение которого изме
няется от 1 до 15. Массив txt состоит из строк, которые
85
могут иметь длину до 50 символов.
Рассмотрим решение простых задач по обработке ли
нейных массивов.
Задача 1. В линейный массив А(1 : п) ввести числа и
найти их сумму.
Решение. Поскольку размерность линейного массива
конкретно не задана, то сначала нужно определить это число,
которое зададим в разделе const. Затем в режиме диалога
введём значения элементов массива и найдём их сумму. По
окончании суммирования выведём результаты суммирова
ния.
program lin_mas;
uses crt;
const n=10; x
var
ararray [l..n] of integer;
kbyte;
s:integer;
begin
clrscr; s:=0;
FOR i:=l TO n DO
begin
write(‘Введите ‘,i,’ -й элемент массива
readln(a[i]; s: =s+a[i];
end;
{вывод массива}
clrscr; {очистка экрана)
FOR i:=l TO n DO
write(a[i],’ ‘)?
writein; writein; {пустая строка)
writeln(‘сумма элементов массива равна \s);
readln
end.
Задача 2. (“Сжатие” массива). В линейном массиве А(20)
произвести “сжатие” путём удаления отрицательных элемен
тов. Дополнительный массив не использовать. Массив за
полнить целыми случайными числами из диапазона [-5, 15].
Массив напечатать до и после преобразования.
Решение. При “сжатии” массива на место отрицатель
ных элементов нужно переписать последующие неотрицатель-
86
ные элементы. При этом размер массива уменьшается на
количество вычеркнутых (удалённых) элементов. Будем счи
тать, что в массиве имеется хотя бы один отрицательный
элемент.
{«сжатие» массива
путём удаления отрицательных элементов}
program sgatie;
uses crt;
var a:arrayfl..20] of integer;
i,k:integer;
begin
clrscr; {очистка экрана}
randomize; {инициализация генератора случ. чисел}
k:=0; {новая нумерация}
{заполнение и вывод исходного массива}
FOR i:=l ТО 20 DO
begin
a[i]: =round(random*20- 5);
write(a[i],’ ‘); {вывод исходного массива}
end;
writein; writein; {пустая строка}
{“сжатие” массива}
FOR i:=l TO 20 DO
begin
if a[i] >= 0 then
begin
k:=k+l; a[k]:=a[i];
end;
end;
{eweod «сжатого» массива}
FOR i:=l TO k DO
write(a[i],’ ‘);
writein;
readln
end.
Задача 3. Дано число M. Определить, под каким номе
ром (номерами) находится это число в линейном массиве
А(1:20).
{поиск числа в массиве}
program thislo_m;
87
uses crt;
var
a:array [1..20] of integer;
i,m,f:integer;
label 1;
begin
clrscr; {очистка экрана}
randomize; {инициализация генератора случ.чисел}
1: write(‘KaKoe число искать? (от -50 до +50):’);
readln(m);
if abs(m) > 50 then goto 1;
writein; {пустая строка}
{заполнение и вывод массива}
FOR i:=l ТО 20 DO
begin
a[i]:=round(random*100-50);
write(a[i],’ *);
end;
writein; writein; {пустая строка}
{поиск числа т}
f:=0; {«флаг»}
FOR i:=l ТО 20 DO
begin
if a[i]=m then
begin
textColor(lO);
writeln(‘число ‘,m,’ под номером \i);
f:=l;
end;
end;
if f=0 then
begin
textColor(12);
writeln(‘числа ‘,m,’ в массиве нет’);
end;
readln
end.
Задача 4. Элементы линейного массива А (1:30), рав
ные 5, переписать в другой массив.
Решение. Подробные рассуждения для решения этой
88
задачи приведены в УРОКе 5 задача 2, а схема алгоритма
приведена на рисунке 22. Программа в соответствии с этим
алгоритмов выглядит следующим образом:
{перенос 5-к в другой массив}
program pjater; uses crt;
var a,b:array[1..3O] of integer;
i,r,k:integer;
begin
randomize;
clrscr; {очистка экрана}
k:=0; {нумерация в другом массиве}
writeln(‘массив А: ‘);
FOR i:=l ТО 30 DO
begin
r:=round(random*4+l);
a[i]:=r; write(a[i]/ ‘);
if r=5 then
begin
k:=k+l; b[k]:=r;
end;
end;
writein; {пустая строка}
writeln(‘массив В: ‘);
if k=0 then
begin
writeln(‘пятёрок в массиве А нет’);
end
else
begin
FOR i:=l TO k DO
write(b[i],’ ‘);
end;
readln
end.
Задача 5. Из массива A (1 : 20) все числа, оканчиваю
щиеся цифрой 7, переписать в другой массив и узнать их
среднее арифметическое.
{формирование нового массива из чисел, оканчивающихся
на 7}
program seinerki;
89
uses crt;
var a,b:array [1..20] of integer;
x,y,s,k,i:integer;
sr:real;
begin
clrscr; {очистка экрана}
s:=0; {сумма чисел нового массива}
к:=0; { нумерация нового массива }
writeInCВведите числа в массив А:’);
FOR i:=l ТО 20 DO\
begin
write(i,’ - e число: ‘);
readln(x); a[i]: =x;
y:=trunc(abs(x)/10)*10;
if abs(x)-y=7 then
begin
k:=k+l; b[k]:=x; s:=s+b[k];
end;
end;
clrscr; {очистка экрана}
{вывод массива А}
FOR i:=l ТО 20 DO
write(a[i],’ “)’»
writein; writein; {пустая строка}
if k=0 then
writeln(‘B массиве А чисел, оканчивающихся на 7, нет’)
else
begin
sr:=s/k;
FOR i:=l TO к DO
write(b[i]/ ‘);
writein; {перевод курсора на начало строки}
writeln(‘cp. знач. чисел массива В: \sr:5:2);
end;
readln
end.
Задача 6. Элементы числового массива А (1 : 20) от
сортировать по возрастанию.
Решение, Подробные рассуждения по решению этой за
дачи изложены в УРОКе 8 в задаче 1. Схема обменной
90
сортировки линейного массива показана на рисунке 29, а
программа приведена ниже:
{сортировка массива ПО ВОЗРАСТАНИЮ}
program sort_obm;
uses crt;
var a:array[1..2O] of integer;
i, j ,n,niin:integer;
begin
clrscr; {очистка экрана}
randomize; {инициализация генератора rnd}
{заполнение и вывод исходного массива}
FOR i:=l ТО 20 DO
begin
a[i]:=round(random*20-5);
write(a[i],’ {вывод массива A}
end;
writein; writein; { пустая строка }
{сортировка...}
FOR i:=l TO 19 DO
begin
min:=a[i]; n:=i;
FOR j:=i+l TO 20 DO
begin
if a[j] < <nin then
begin
min:=a[j]; n:=j
end;
end;
a[n]:=a[i]; a[i]:=min;
end;
{вывод отсортированного массива}
FOR i:=l TO 20 DO
write(a[i]/ ‘);
writein;
readln
end.
УРОК 20
Вопросы: 1. Решение задач с использованием двух
мерных массивов (матриц).
91
Массивы могут быть не только одномерными, но и мно
гомерными. Многомерные массивы широко используются в
математике, статистике и других прикладных науках (на
пример, матричные вычисления).
Рассмотрим подробней двухмерные массивы (или мат
рицы). На языке Турбо Паскаль 7.0 двухмерные массивы
объявляются в разделе переменных var, например:
var
a:array[1..5, 1..8] of integer;
fam:array[1..3, 1..11] of string[20];
tab:array[1..9, 1..9] of byte;
В первом примере объявлена матрица а, в которой 5
строк и 8 столбцов; матрица предназначена для обработки
целых чисел типа integer. Во втором примере данными мат
рицы fam являются строки длиной не более 20-ти символов.
В третьем примере объявлена матрица размерностью 9x9,
имя которой tab (таблица умножения).
Обработка двухмерных массивов производится, как пра
вило, с использованием вложенных циклов FOR ... ТО ...
DO.
Рассмотрим примеры обработки данных в двухмерных мас
сивах.
Задача 1, В матрице А (4, 6) указать номера строк и
столбцов элементов, равных единице.
Решение. Заполним матрицу целыми случайными чис
лами из диапазона [-3, 3]. Во время заполнения одновремен
но будем печатать матрицу и сравнивать каждый её элемент
с единицей. Если найдётся хотя бы один элемент, равный
единице, то изменим значение “флага” с нуля на единицу.
(См. УРОК 9, задача 1).
{поиск единиц в матрице}
program matrl;
uses crt;
const s=4; sto=6;
var a:array[l..s, l..sto] of integer;
r,i,k,f:integer;
begin
clrscr;
randomize;
f:=0; {флаг: есть/нет 1}
92
{заполнение и вывод матрицы}
FOR i:=l ТО s DO
begin
FOR k:=l TO sto DO
begin
r:= random(6);
a[i,k]:=r;
write(a[i,k],’ ‘);
if a[i,k^l then f:=l;
end;
writein; {перевод курсора}
end;
writein; { пустая строка }
if f=0 then writelnfB матрице 1 нет’)
else
begin
writeln( ‘ единицы находятся: ’);
FOR i:=l TO s DO
begin
FOR k:=l TO sto DO
begin
if a[i,k]=l then
begin
writelnCcTpOKa ‘,i,’ столбец *,k);
end;
end;
end;
end;
readln
end.
06
Дополнительные сведения
Подпрограммы
В практике программирования часто встречаются случаи,
кргда по ходу выполнения программы приходится производить одни
и те же вычисления, но при различных исходных данных. Чтобы
исключить повторение одинаковых записей и сделать тем самым
программу проще и понятнее, можно выделить эти повторяющиеся
вычисления в самостоятельную часть программы, которая может
быть использована многократно по мере необходимости. Такая са
мостоятельная часть программы, реализующая определённый алго
ритм и допускающая обращение к ней из различных частей об
щей программы, называется подпрограммой.
Подпрограммы оформляются в виде замкнутых участков
программы, имеющих чётко обозначенные вход и выход. Имена
переменных в основной программе и в подпрограммах должны быть
независимыми друг от друга.
Использование подпрограмм позволяет реализовать один из самых
прогрессивных методов программирования - структурное про
граммирование.
В языке Турбо Паскаль 7.0 выделяют два вида подпрограмм:
процедуру (PROCEDURE) и функцию (FUNCTION).
Лхобая программа может содержать несколько процедур и функ
ций. Процедуры и функции объявляются в разделе описания вслед
за разделом переменных.
Процедуры
Любая процедура оформляется аналогично программе, т.е.
содержит заголовок, разделы описаний и операторов:
procedure имя (формальные параметры );
раздел описаний
begin
раздел операторов
end;
' В заголовке указывается служебное слово procedure, далее
идёт имя процедуры и параметры, которые называются формаль
ными. Допускается использование процедур без параметров. -
Раздел описания процедуры подобно основной программе
состоит из разделов меток, констант, переменных. Раздел операто
ров заключается в операторные скобки begin end, причём после
end в отличие от основной программы ставится символ “ ; ”.
Имена, объявленные в разделе описания основной програм
мы» действуют в разделе операторов основной программы и в любой
97
подпрограмме (процедуре и функции). Эти имена называются гло
бальными. Имена, объявленные в подпрограмме, действуют только
в этой подпрограмме и в любой объявленной в ней процедуре и
функции. Такие имена называются локальными. Они недоступны
для операторов основной программы.
Формальные параметры представляют собой список перемен
ных с указанием их типа. Для выделения выходных параметров
перед ними ставится слово var.
Пример оформления процедуры:
Procedure summa (a, b: real; var у, z: real);
const n = 10;
var i : integer;
begin
FOR i:« 1 TO n DO
begin
y:=a+b-i;
z:=4*y-i;
end;
end;
Здесь а и b - входные параметры, их значения передаются из
основной программы в эту процедуру. Результатами процедуры
(выходными параметрами) являются вычисленные значения у и z,
которые передаются из процедуры в основную программу и там
могут быть использованы.
Вызов процедуры в основной программе имеет следующую
форму записи:
имя процедуры (фактические параметры);
В качестве фактических параметров могут быть переменные,
константы или выражения. Параметры, которые получают значе
ния из процедуры, могут быть переменными. Например, рассмот
ренную процедуру summa можно вызвать в основной программе
следующим образом:
summa (1.5, 2.7, yl,z);
Это означает, что числа 1.5 и 2.7 будут передаваться в про
цедуру формальным параметрам а и Ь. Поэтому переменные по
лучат значения а=1.5,Ь = 2.7и при этих значениях будет выпол
няться процедура. Значения у и z из процедуры передаются в ос
новную программу переменным у1 и z, где их можно использо
вать.
Между формальными и фактическим параметрами должно
быть соответствие по количеству, порядку их следования и типу
данных.
В качестве иллюстрации использования процедуры рассмот
рим задачу.
98
Задача 1. Найти минимальное значение из величин, опреде
ляемых арифметическими выражениями а ~ sin х, b = cos х, с =
In |х| при заданном значении Определение минимального значе
ния из двух величин оформить в виде процедуры.
Решение. Введём обозначения: min - минимальное значе
ние из величин a, d, с; mini “ промежуточное значение (минималь
ное значение из величин а И &)• Все переменные типа real.
Процедуру нахождения минимального значения из двух
величин назовём PPMIN. входными параметрами для процедуры
являются две сравниваем^6 величины п1 и п2 типа real. Резуль
тат работы процедуры обозначим через minim,
{минимальное значение из &'х величин}
program min__of3;
uses crt;
var x : real; {исходное значение x }
a,b,c : real; {вычисляемое величины}
mini : real; {минимальное из a, b }
min : real; {минимальное из a,b,c}
procedure PPMIN ( nl, n2 : real;
var minim : real);
begin
if nl <= n2 then minini:Banl
else minim :=n^
end;
begin { основная программа }
clrscr; { очистка экрана }
writeInCВведите значение х: ‘);
readln(x);
a:=sin(x); b:=cos(x); с:«ln(abs(x));
PPMIN(a,b,minl);
PPMIN(minl ,c,min);
writeln(‘Min = \min:8:3);
writeln(* a = ’,a:8:3);
writeln(‘ b = \b:8:3);
writeInC c = \c:8:3);
readln
end.
Пример, x = 5,6. mln --= - 0.631
a ~ - 0.631
b = 0.776
c = 1.723.
Задача 2. Вычислить значение функции f = ег,*у1 - ег2+у2,
где zl,z2 - корни уравнения + 20? - 1.5 = 0; yl, у2 - корни
уравнения 2у2 - у - 7.3 = О-
99
Вычисление корней оформить в виде подпрограммы (проце
дуры). Если корни мнимые, то считать их равными нулю.
(f Ответ: -9,4886).
program wirag;
uses crt;
var a,b,c : real; { коэфф, квадр. ур-я }
d : real; { дискриминант }
yl,y2,zl,z2 : real; {корни кв-х уравнений}
f : real; { искомое выражение }
procedure KWUR (a,b,c : real;
var xl,x2 : real);
begin
d:~ b*b-4*a*c;
if d < 0 then begin xl:=O;
x2:=0
end
else
begin
x 1:= (-b-sgrt (d))/(2*a);
x2:= (-b+ sgrt (d))/(2*a)
end;
end;
begin {основная программа}
clrscr; {очистка экрана}
writein (‘Введите коэффициенты 1-го уравнения:’);
write (‘а=’); readln (а);
write (‘b^’); readln (b);
write (‘с=’); readln (с);
KWUR(a,b, с, zl,z2);
writein (‘Введите коэффициенты 2-го уравнения:’);
write (‘а=’); readln (а);
write (‘b=’); readln (b);
write (‘с=’); readln (с);
KWUR(a,b, с, у1,у2);
f:=exp (zl+yl)-exp (z2+y2);
writein; {пустая строка}
write (‘Ответ:’);
text Color (10); {зеленый цвет}
writein (‘f=’, f:8:4);
readln
end.
100
Функции
Другой вид подпрограмм - функция оформляется анало
гично процедуре.
Отличительные особенности функции:
- она имеет только один результат выполнения (но
может иметь несколько входных параметров);
- результат обозначается именем функции и переда
ется в основную программу.
Функция оформляется в следующем виде:
funktion имя (формальные параметры): тип;
раздел описания
begin
. раздел операторов
end;
Вызывается функция по ее имени с указанием фактичес
ких параметров. При этом вызов функции можно делать непос
редственно внутри выражения.
Задача 3. Решить задачу 1. Определение минимального
значения из двух величин оформить в виде функции.
{минимальное значение из 3-х величин}
program min_of3a;
uses crt;
var x : real; { исходное значение x }
a,b,c : real; { вычисляемые величины }
min : real; { минимальное из a,b,c }.
FUNCTION FMIN (nl, n2 : real): real;
begin
if nl <= n2 then FMJNz-nl
else FMIN:=n2
end;
begin { основная программа }
clrscr; { очистка экрана }
writeln(‘Введите значение х: ’)*,
readln(x);
a:=sin(x); b:=cos(x); c:=ln(abs(x));
min:=FMIN(a,b);
min:=FMIN(min,c);
writein (‘Min = ’,miri:8:3);
writein (‘ a = ’,a:8:3);
writein (‘ b = ’,b:8:3);
writein (‘ c = ’,c:8:3);
readln
end.
101
Задача 4. Вычислить значение выражения
n m!(n-m)l
Вычисление факториала оформить в виде функции.
{вычисление числа сочетаний из п по т}
program sothet;
uses crt;
var m,n : integer;
c : real; {вычисляемая величина}
label 1, 2;
FUNCTION FACT (k : integer) : real;
var i : integer;
p : real;
begin
p:=l;
FOR i:=l TO k DO
p:=p*i;
FACT:=p
end;
begin { основная программа }
clrscr; { очистка экрана }
1: writeln(‘Введите значения:
write(‘n = ’); readln(n);
write(‘m = ’); readln(m);
if m > n then goto 1;
if (m<0) or (n<0) then goto 1;
if m = n then
begin
c:=l; goto 2
end
else
c:=FACT(n)/(FACT(m)*FACT(n-m)) ;
2: writeln(‘c ==’,c:8:2);
readln
end.
Задача 5. Вычислить приближённо методом трапеций опре
делённый интеграл
а
или
а 1-1
Вычисление значений у оформим в виде функции S.
{приближённое вычисление определённого
интеграла методом трапеций}
program integ__t;
uses crt;
var n,k : integer;
a,b : real; {пределы интегрирования}
I : real; { значение интеграла }
x,dx : real; { приращение x }
FUNCTION S (x : real) : real;
begin
S:=l/(l+x*x);
end;
begin { основная программа }
clrscr; { очистка экрана }
writeln(‘Введите значения:’);
write(‘a = ’); readln(a);
write(‘b = ’); readlnfb);
write(‘n = ’); readln(n);
dx:=(b-a)/n;
I:=(S(a)+S(b))/2;
x:=a;
FOR k:=l TO n-1 DO
begin
x:=x+dx; I:=I+S(x);
end;
I:=I*dx;
writein; {пустая строка}
writeln(‘Ответ: ’,1:8:4);
readln
end.
Ответ: » 0,7837.
103
Приложение 1
Основные операторы, функции и процедуры
языка Turbo Pascal 7.0
Операторы, функции, Назначение
п/п процедуры
Модуль System
1 Goto m Безусловный переход на метку m
2 Rpfidln (xlt x2r...) Ввод данных с переходом на новую строку
3 Write (xl, x2,.'.)' Вывод значений х1,х2,... на экран дисплея
4 Writein Пустая строка
5 Writein (xl,x2,...) Вывод значений х1,х2,... на экран дисплея
с переходом на новую строку
6 If ... then ... else Оператор условного перехода
7 Begin ... end Операторные скобки
8 Case ... of Оператор выбора
9 For ... to ... do Оператор цикла
10 While <условие> do Оператор цикла (повторять,
ЦОКА <условие> выполняется!
11 Repeat ... until Оператор цикла (повторять, ПОКА
<условие> <условие> НЕ выполняется!
Модуль Crt
1 Clrscr Очистка экрана
2 Delay(m) Задерж. выполнение прогр.на m миллисек.
3 GotoXY(X.Y) Устан. курсор в позицию с коорд. X,Y
4 TextColor(C) Устанавливает цвет символов (С - номер)
5 TextBackGround (C) Устанавливает цвет фона
6__ Arrayil..n] of <тип> Объявление линейного массива
7__ Sound(F) Включает звук, генератор частотой К(Гц)
_8__ NoSound . Выключает звуковой генератор
Модуль Graph
1 InitGraph(drrmo, ’путь Инициализация графического режима
bgi’)
2 CloseGraph Закрывает графический режим
Clearbevice Очистка экрана
4__ PutPixelfX. Y.n) Засвечивает точку с коорд.Х,У цветом п
5__ SetColor(n) Устанавливает цвет изображения
6 SetBkColor(n) Устанавливает цвет фона
7 Line(xl,yl,x2,y2) Рисует линию (текущим цветом)
8 LineTo(x,y) Рисует линию от текущего указателя
к точке с координатами х,у
9__ MoveTo(x,y) Перемещает тек. Указатель к точке х,у
10 Circle(x,v,r) Рисует окружность радиуса г
11 Rectangle(xl,yl,x2,y2) Рисует прямоугольник
12 Bar(xl.vl.x2.v2^ Рисует закрашенный прямоугольник
13 Bar3D(xl ,yl,x2,y2,d,Top) Рисует параллелепипед
14 SetFillStyle(w,c) Устанавливает стиль (w) заливки, с-цвет
заливки. Значения w см. приложение 2
15 FloodFill(x,y,bord) Заливает (заштрих.) замкнутую область
текущим цветом до границы цвета bord
16 OntTextXY(x,y,txt) Выводит текст в заданное место экрана
17 Elli pse(x,y, f 1 ,f2,Rx,Ry) Рисует эллипс от угла fl до угла f2
(градусах), Rx,Ry - оси эллипса, х,у - центр
____ эллипса
104
Приложение 2
Значения параметра w (для оператора SetFillStyle(w,e)):
Приложение 3
Типы данных
Целые типы
Название Длина,
Байт Диапазон значении
Byte 1 0...255
Word 2 0...65535
Shortint 1 -128...+127
Integer 2 -32768...+32767
Longint 4 -2147483648...+2147483647
Вещественные типы
Название Длина,
Байт Диапазон значений
Real 6 2.9-10 33...1.7 10+38
Single 4 1.5-10 "..3.4-10+эв
Double 8 5.0-10 324...1.7-10+э0в •
Extended 10 3.4-10-4Э32...1.1 -IO*"*4
Comp 8 -9.210+18...9.2Ю,в
105
Приоритеты в действиях
Приоритет Операция
1 Not,@
2 * / div mod and shl shr
3 4- - or xor
4 = <>>>=<<= in
Приложение 4
Горячие клавиши
Клавиша Действие
Б*10 Активизация строки меню
Alt 4- Я Отмена всех изменений в строке
Alt + X Завершение сеанса работы с ТП 7,0
Alt + цифра Переход к окну с указанным номером
Ctrl + Del Удаление выделенного блока
Ctrl 4- Ins Копирование блока в буфер обмена
Shift + Del Перенос выделенного блока в буфер
Shift 4- Ins Копирование блока из буфера в окно
Ctrl 4- T Удаление слова справа от курсора
(Ctrl 4- Q) 4-Y Удаление части строки от курсора
до конца строки
Ctrl 4- Y Удаление строки, указываемой курсором
(Ctrl + Q) + L Восстановление строки, удалённой клавишами
(Ctrl + Y)
(Ctrl 4- K) 4- H Снятие / восстановление маркировки
(Ctrl 4- K) 4- C Копирование маркированного блока в то место, где
установлен курсор
106
Дерево Turbo Pascal
8x8 .fon
Form866,fnt
Egavga.bgi
Litt.chr
Tripp.chr
Turbo.pif
Turbo.exe
Turbo.tph
Turbo.tpl
Tp7 .bat
Tp7 .pif
Initgraph.pas
Win .tpu
User .tpu
Graph.tpu
User .pas
Turbo.tp
Наши
программы
107
ЛИТЕРАТУРА
Основная
Дополнительная