114
Тольяттинский государственный университет Автомеханический институт Кафедра «Компьютерные технологии и обработка материалов давлением» Ахмедханлы Д.М., Панюкова Е.В., Панюков Д.И. МЕТОДИЧЕСКИЕ УКАЗАНИЯ к практическим занятиям по дисциплине «Информатика» для студентов инженерных специальностей очной формы обучения Тольятти 2007

МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

  • Upload
    others

  • View
    6

  • Download
    0

Embed Size (px)

Citation preview

Page 1: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

Тольяттинский государственный университет Автомеханический институт

Кафедра «Компьютерные технологии и обработка материалов давлением»

Ахмедханлы Д.М., Панюкова Е.В., Панюков Д.И.

МЕТОДИЧЕСКИЕ УКАЗАНИЯ

к практическим занятиям по дисциплине «Информатика»

для студентов инженерных специальностей очной формы обучения

Тольятти 2007

Page 2: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

2

Содержание 1. Системы счисления.......................................................................................................................................................6

Десятичная система счисления ..................................................................................................................................7 Двоичная система счисления......................................................................................................................................7 Восьмеричная и шестнадцатеричная системы счисления .......................................................................................8 Перевод чисел из любой системы счисления в десятичную ...................................................................................9 Перевод чисел из десятичной системы счисления в любую другую......................................................................9

2. Алгебра логики............................................................................................................................................................11 2.1. Логические операции .........................................................................................................................................12

Инверсия ...............................................................................................................................................................14 Конъюнкция .........................................................................................................................................................14 Дизъюнкция..........................................................................................................................................................14 Эквиваленция (равнозначность).........................................................................................................................14 Импликация..........................................................................................................................................................15 Антиконъюнкция .................................................................................................................................................15 Антидизъюнкция .................................................................................................................................................15

2.2. Нормальные формы............................................................................................................................................16 Конъюнктивная нормальная форма ...................................................................................................................16 Дизъюнктивная нормальная форма....................................................................................................................16

3. Применение средств алгебры логики для описания функционирования устройств компьютера .......................17 Логические схемы .....................................................................................................................................................19 Построение логических схем ...................................................................................................................................19

4. Практическая работа 1. Системы счисления ............................................................................................................20 Вопросы для самоконтроля ......................................................................................................................................21

5. Практическая работа 2. Алгебра логики ...................................................................................................................21 Решение логических задач средствами алгебры логики........................................................................................21

Индивидуальное задание к модулю 1. Построение логических схем по заданным булевым выражениям ...........22 Приложение 1. Практическое занятие 1 «Системы счисления».................................................................................22 Приложение 2. Практическое занятие 2 «Алгебра логики»........................................................................................30 Приложение 3. Индивидуальное задание. Модуль №1 ...............................................................................................34 Приложение 4 ..................................................................................................................................................................37 6. Введение в алгоритмизацию ......................................................................................................................................38 7. Знакомство со средой Турбо Паскаль .......................................................................................................................38

7.1. Общие сведения..................................................................................................................................................38 7.2. Запуск Турбо-Паскаля на выполнение .............................................................................................................39 7.3. Назначение функциональных клавиш системы Турбо-Паскаль ....................................................................39 7.4. Работа с текстовым редактором Турбо-Паскаля .............................................................................................40

Клавиши перемещения курсора .........................................................................................................................41 Работа с блоками текста ......................................................................................................................................41

8. Основы алгоритмизации.............................................................................................................................................42 8.1. Алгоритм .............................................................................................................................................................42 8.2. Алгоритмические структуры.............................................................................................................................43 Самоконтроль ............................................................................................................................................................46

9. Программирование на языке Pascal...........................................................................................................................47 9.1. Алфавит языка ....................................................................................................................................................47 9.2. Арифметические выражения и правила их записи..........................................................................................48

Знаки операций ....................................................................................................................................................48 Операции div и mod .............................................................................................................................................48

9.3. Типы данных .......................................................................................................................................................48 Целые типы ..........................................................................................................................................................49

Page 3: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

3

Логический тип ....................................................................................................................................................49 Символьный тип ..................................................................................................................................................50 Строковый тип .....................................................................................................................................................50 Вещественный тип...............................................................................................................................................50

9.4. Стандартные функции........................................................................................................................................50 9.5. Структура программы на языке Паскаль .........................................................................................................51 9.6. Описательная часть программы ........................................................................................................................52 9.7. Исполнительная часть программы....................................................................................................................53 9.8. Оператор присваивания .....................................................................................................................................53 9.9. Операторы ввода-вывода ...................................................................................................................................53

Оператор ввода ....................................................................................................................................................53 Оператор вывода..................................................................................................................................................53

9.10. Комментарии в программе ..............................................................................................................................54 Самоконтроль ............................................................................................................................................................55 Задание .......................................................................................................................................................................55 Пример программы линейной структуры ...............................................................................................................55

Приложение 1. Таблица вариантов задания №2...........................................................................................................56 10. Ветвления...................................................................................................................................................................57

10.1. Операторы условия и перехода .......................................................................................................................58 Логический оператор...........................................................................................................................................58 Операции отношения...........................................................................................................................................59 Логические операции ..........................................................................................................................................59

10.2. Оператор выбора ..............................................................................................................................................60 Самоконтроль ............................................................................................................................................................61 Задание .......................................................................................................................................................................61 Пример программы разветвленной структуры .......................................................................................................62

Приложение 1. Таблица вариантов задания 3 ..............................................................................................................62 11. Циклические вычислительные процессы................................................................................................................64

11.1. Оператор цикла с параметром .........................................................................................................................64 11.2. Оператор цикла с постусловием .....................................................................................................................65 11.3. Оператор цикла с предусловием .....................................................................................................................65 11.4. Вложенные циклы ............................................................................................................................................66 11.5. Оператор прерывания цикла............................................................................................................................67 Самоконтроль ............................................................................................................................................................67 Задание .......................................................................................................................................................................67 Пример программы циклической структуры..........................................................................................................68

Приложение 1. Таблица вариантов задания 4 ..............................................................................................................69 12. Операции с индексированными переменными ......................................................................................................71

12.1. Массивы одномерные ......................................................................................................................................71 12.2. Описание массивов...........................................................................................................................................71

Ввод элементов массива......................................................................................................................................72 Вывод элементов массива ...................................................................................................................................72

12.3. Обработка одномерных массивов ...................................................................................................................72 Самоконтроль ............................................................................................................................................................75 Задание .......................................................................................................................................................................76 Пример программы обработки одномерного массива ...........................................................................................76

Приложение 1. Таблица вариантов задания 5 ..............................................................................................................77 13. Двумерные массивы..................................................................................................................................................78

13.1. Матрицы ............................................................................................................................................................79 13.2. Описание двумерного массива........................................................................................................................79

Ввод элементов двумерного массива.................................................................................................................80

Page 4: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

4

Вывод элементов двумерного массива ..............................................................................................................80 13.3. Обработка двумерных массивов .....................................................................................................................81 Самоконтроль ............................................................................................................................................................86 Задание .......................................................................................................................................................................86 Пример программы обработки двумерного массива .............................................................................................86

Приложение 1. Таблица вариантов задания 6 ..............................................................................................................87 14. Подпрограммы ..........................................................................................................................................................89

14.1. Функции и процедуры......................................................................................................................................89 Структура программы, содержащей процедуру (функцию) ............................................................................90

14.2. Процедуры ........................................................................................................................................................90 14.3. Вложенные процедуры ....................................................................................................................................91

Директива forward................................................................................................................................................91 14.4. Функции ............................................................................................................................................................92 Самоконтроль ............................................................................................................................................................94 Задание .......................................................................................................................................................................94 Пример программы с использованием подпрограмм.............................................................................................94

Приложение 1. Таблица вариантов задания 7 ..............................................................................................................95 15. Обработка строк текста ............................................................................................................................................97

15.1. Символьные переменные.................................................................................................................................97 Фрагмент таблицы ASCII-кодов букв латинского алфавита ...........................................................................98 Фрагмент таблицы ASCII-кодов букв русского алфавита ...............................................................................98

15.2. Функции обработки символьных переменных ..............................................................................................98 15.3. Строковые переменные..................................................................................................................................100 15.4. Функции обработки строковых переменных ...............................................................................................100 15.5. Процедуры обработки строковых переменных ...........................................................................................101 15.6. Примеры обработки строковых переменных...............................................................................................102 Самоконтроль ..........................................................................................................................................................104

16. Структурированные типы данных.........................................................................................................................104 Записи .......................................................................................................................................................................105 Самоконтроль ..........................................................................................................................................................107 Задание .....................................................................................................................................................................107 Пример программы использования массива записей...........................................................................................107

Приложение 1 ................................................................................................................................................................110 Приложение 2. Таблица вариантов ИДЗ 2 ..................................................................................................................110

Page 5: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

5

УДК 532.5 (533.6) Методические указания к практическим занятиям по дисциплине «Информатика» для

студентов инженерных специальностей очной формы обучения. /Сост. Ахмедханлы Д.М., Панюкова Е.В., Панюков Д.И. – Тольятти: ТГУ, 2007.

Изложены основы алгебры логики, принципы работы логически-арифметических устройств

ЭВМ, рассмотрены принципы перевода чисел из одной системы счисления в другую. Предназначено для студентов технических специальностей по дисциплине «Информатика».

Изложены цели, задачи и программа практических занятий по теме «Алгоритмические языки и программирование», даны теоретические сведения, примеры программ и варианты индивидуальных заданий.

Составитель: Ахмедханлы Д.М., Панюкова Е.В., Панюков Д.И. Научный редактор: Егорова Э.В. Утверждено редакционно-издательской секцией методического совета института. © Тольяттинский государственный университет, 2007

Page 6: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

6

1. Системы счисления Информация в ЭВМ хранится и отрабатывается в определенном, закодированном виде.

ЭВМ оперируется числами, представленными в некоторой системе счисления. Системой счисления называется способ представления чисел посредством цифровых

знаков. Системы счисления принято делить на: • Позиционные. • Непозиционные. • Символические. В символических системах каждому числу ставится в соответствие свой символ. Эти

системы не находят широкого применения в силу естественной их ограниченности (алхимия, кодированные сообщения) – бесчисленного множества символов, которое требуется для изображения всех возможных чисел.

В позиционных системах счисления значимости числа зависит от позиции. Позиция – некоторое место, в котором может быть представлен лишь один символ. Примером позиционной системы счисления является десятичная система.

В таблице 1 показана система представления чисел в десятичной, двоичной, восьмеричной и шестнадцатеричной системах счисления.

Всякая система счисления характеризуется основанием – количеством цифр, используемых для изображения чисел.

Система представления чисел в различных системах счисления Таблица 1

Десятичная Двоичная Восьмеричная Шестнадцатеричная 0 0000 0 0 1 0001 1 1 2 0010 2 2 3 0011 3 3 4 0100 4 4 5 0101 5 5 6 0110 6 6 7 0111 7 7 8 1000 10 8 9 1001 11 9 10 1010 12 А 11 1011 13 B 12 1100 14 C 13 1101 15 D 14 1110 16 E 15 1111 17 F 16 10000 20 10 17 10001 21 11 18 10010 22 12 19 10011 23 13 20 10100 24 14

Page 7: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

7

Наибольшее распространение для представления чисел в ЭВМ, получили двоичная,

восьмеричная и шестнадцатеричная системы счисления.

Десятичная система счисления В этой системе число представляется в виде полинома n степени, а изображается

совокупностью некоторых символов, каждый из которых имеет различный вес в зависимости от позиции, которую он занимает.

Всем позициям приписывается различный вес, который чаще всего выбирается как целая степень основания системы.

Основание системы счисления - число, которое является мощностью множества различных символов, допустимых в каждой позиции числа. Привычная для нас 10-я система счисления использует для записи чисел 10 цифр: 0-9. Это позиционная система счисления, т.е. значение цифры в числе зависит от положения (позиции) (в отличие от римской).

Пример 1. Число 55,5 можно представить: 55,5=5*101+5*100+5*10-1

десятки единицы десятые доли единицы

Если g принять за основание системы, то любое число можно представить как 1 0 1

1 0 1 1 0 1... , ... ... ...n n mn n m n n ma a a a a a g a g a g a g a g− − −

− − − − − −= ⋅ + ⋅ + ⋅ + ⋅ + + ⋅ В отличие от системы счета времени, десятичная система является однородной, т.е. одних и

тех же десятичных символов достаточно, чтобы изобразить любое число. В то время как в смешанных системах нужно придумывать все новые и новые символы для того, чтобы изобразить следующее по величине число.

Таким образом, однородность – одно из важных свойств позиционных систем.

Двоичная система счисления В двоичной системе счисления для изображения чисел используют только две цифры 0 и 1. С помощью двоичных кодов можно кодировать и хранить в памяти ЭВМ любую алфавитно-

цифровую информацию. Каждому символу присваивается свой код. С помощью кода, состоящего из n- разрядов, можно закодировать (представить) 2n различных символов.

Информация хранится в байтах. 1 байт = 8 бит – т.е. для кодирования используется восьмиразрядный двоичный код.

Основанием двоичной системы является число 2. Пример 2. • 101(2)=1*22+0*21+1*20=4+0+1=5(10). • 101(2)=>5(10). (Любое число в 0-ой степени равно 1)

Арифметические операции в двоичной системе счисления Таблица 2

Сложение Вычитание Умножение 0+0=0 0-0=0 0*0=0

Page 8: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

8

1+0=1 1-0=1 1*0=0 0+1=1 0-1=1 0*1=0 1+1=10 1-1=0 1*1=1

При сложении двух чисел, равных 1, в данном разряде получается 0, а 1-ца переносится в старший разряд.

Пример 3. 101+ 11 1000 ,

где 101(2)=> 5(10), 11(2)=> 3(10), 1000(2) => 8(10). Действительно: 5+3=8. При вычитании из 0 единицы, занимается единица из старшего ближайшего разряда,

отличного от 0. При этом, единица занятая в старшем разряде, даёт 2 единицы в младшем разряде и по единице во всех разрядах между старшим и младшим.

Пример 4.

101 - 11 10 ,

где 101(2)=>5(10), 11(2)=>3(10), 10(2)=>2(10). Действительно: 5-3=2. Операция умножения сводится к многократному сдвигу и сложению. Пример 5.

11

* 10

00

11

110 , где 11(2)=>3(10), 10(2)=>2(10), 110(2)=>6(10). Действительно: 3*2=6.

Восьмеричная и шестнадцатеричная системы счисления Запись двоичных чисел достаточно длинна, операции над ними – утомительны. Для

краткости записи двоичной информации используются системы с большим основанием. Главным требованием, предъявляемым к этим системам, является то, что перевод из этих систем в двоичную и обратно, должен быть достаточно кратким, т.е. эти системы и двоичная должны быть в некотором смысле эквивалентны. Таковыми являются восьмеричная и шестнадцатеричная системы (см. таблицу 1).

В 8-ой системе для изображения чисел используют 8 цифр: 0-7. Основанием системы являются число 8. Для перевода чисел из 2-ой системы счисления в восьмеричную, достаточно разбить двоичное число на триады (по три) двигаясь влево и вправо от десятичной точки.

Пример 6: 11 110.001 01(2)=36.12(8). К крайним группам добавляются нули для дополнения их до трех разрядов. 8=23 – отсюда триады.

Page 9: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

9

В 16-й с/с для изображения чисел используется 16 символов: 10 цифр и 6 букв латинского алфавита: А, B, C, D, E, F. Основание системы – число 16.

16=24 – для преобразования двоичного числа в 16-ричное, нужно разбить его на тетрады (по четыре), двигаясь влево и вправо от десятичной точки. К крайним группам нули добавляются до 4 разрядов.

Пример 7: 1111 0101.1000 111(2)=F5.8E(16). и обратно: 6ЕА.4(16)=110 1110 1010.0100(2). Использование 8-ой или 16-ой систем счисления позволяет уменьшить в 3 или 4 раза

количество разрядов для записи чисел.

Перевод чисел из любой системы счисления в десятичную Для перевода числа из любой системы счисления в десятичную, необходимо разложить это

число по степеням основания этой системы. Пример 8:

3 2 1 0(2) (10)

1 0 1(8) (10)

1101 1 2 1 2 0 2 1 2 13

115.1 1 8 5 8 1 8 8 5 13.1258

= ⋅ + ⋅ + ⋅ + ⋅ =

= ⋅ + ⋅ + ⋅ = + + =

1 0 1 1(16)

(10)

18.2 16 8 16 2 16 10 16 8 1 216

1160 8 168.1258

A A −= ⋅ + ⋅ + ⋅ = ⋅ + ⋅ + ⋅ =

= + + =

Перевод чисел из десятичной системы счисления в любую другую Для перевода чисел из десятичной с/с в любую другую, необходимо делить десятичное

число на основание системы, в которую переводят, сохраняя при этом остатки от каждого деления.

Результат формируется справа налево. Деление продолжается до тех пор, пока результат деления не станет меньше делителя.

Пример 9. Перевести число 13 из десятичной системы счисления в двоичную систему: 13 2 12 6 2

1 6 3 2 0 2 1

1

13(10) => 1101(2). Пример 10. Перевести число 13 из десятичной системы счисления в восьмеричную систему:

13 88 1

5

Page 10: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

10

13(10) => 15(8). Пример 11. Перевести число 638 из десятичной системы счисления в шестнадцатеричную

систему:

638 16 48 39 16158 32 2144 7

14

638(10) => 27E(16). Остатки записываются в шестнадцатеричном виде (14 => Е). Пример 12. Сложение двоичных чисел: 11011001(2) + 1011101(2) 100110110(2). Для проверки результата сложения двоичное число нужно разбить на триады, перевести в

восьмеричную систему счисления согласно таблице 1, а затем перейти в десятичную систему и осуществить сложение.

11 011 001(2)=331(8)=3*82+3*81+1*80=192+24+1=217(10). 1 011 101(2)=135(8)=1*82+3*81+5*80=64+24+5=93(10). 100 110 110(2)=466(8)=4*82+6*81+6*80=256+48+6=310(10). Проверка: 217(10)+93(10)=310(10). Пример 13. Сложение шестнадцатеричных чисел: 8E38C(16) + 5D35(16) 940C1(16). Перед сложением необходимо перейти согласно таблице 1 в 10-ю систему счисления,

произвести сложение, затем опять вернуться к 16-ой системе счисления. C(16)+5(16) => 12(10)+5(10)=17(10) => 11(16). 8(16)+3(16)+1(16)=12(10) => С(16). 3(16)+D(16)=3(10)+13(10)=16(10) => 10(16). E(16)+5(16)+1(16)=14(10)+5(10)+1(10)=20(10) =>14(16). 8(16)+1=9(10) => 9(16).

Page 11: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

11

2. Алгебра логики Логика – одна из древнейших наук. Ее основателем считается древнегреческий мыслитель

Аристотель (384 – 322гг. до н. э.), который первым систематизировал формы и правила мышления, обстоятельно исследовал категории понятие и суждение, подробно разработал теорию умозаключений и доказательств, описал ряд логических операций, сформулировал основные законы мышления. Он подвергал анализу человеческое мышление, его формы – понятие, суждение, умозаключение, и рассмотрел со стороны строения, структуры. Логика Аристотеля носит название формальной логики. Это название происходит из принципа: правильность рассуждения определяется только его логической формой или структурой и не зависит от конкретного содержания входящих в него высказываний.

Продолжение развития логики связано математической логикой. Основоположником математической логики считается великий математик и философ Готфрид Вильгельм Лейбниц (1646-1716). Он попытался построить первые логические исчисления: арифметические и буквенно-алгебраические. Но Лейбниц высказал только идею, а развил ее окончательно англичанин Джордж Буль (1815-1864). Он вывел для логических построений особую алгебру (алгебру логики). В отличии от обычной логики, в ней символами обозначаются не числа, а высказывания. Алгебра логики (булева алгебра) изучает высказывания, рассматриваемые со стороны их логических значений (истинности или ложности), и логические операции над ними.

Создание алгебры логики представляло собой попытку решать традиционные логические задачи алгебраическими методами. С появлением теории множеств (70-е гг. 19 в.), поглотившей часть первоначального предмета алгебры логики, и дальнейшим развитием математической логики (последняя четверть 19 в. – 1-я половина 20 в.) предмет алгебр логики значительно изменился. Основным предметом алгебры логики стали высказывания. Под высказыванием понимается имеющее смысл языковое выражение, относительно которого можно утверждать, что оно либо истинно, либо ложно.

Пример 1. • «5 есть простое число». Это высказыванием является истинным. • «4 + х = 6». Это уравнение не является высказыванием. Однако, придавая переменной х

определенное числовое значение, будет высказывание. • «роза – цветок». Это высказывание является истинным. • «все углы – прямые». Это высказывание является ложным. • «3 + 5 = 9». Это высказывание является ложным. Высказывание считается простым, если никакая его часть не является суждением.

Сложное высказывание характеризуется тем, что оно образованно из нескольких высказываний с помощью определенных способов соединения.

Пример 2. • «Париж – столица Франции». Это высказывание простое. • «Неверно, что Париж – столица Англии». Это высказывание сложное. Частные высказывания выражают конкретные факты. Общие высказывания характеризуют

свойства групп объектов или явлений. Пример 3. • «Луна - спутник Земли». Это частное высказывание. • «Всякий человек – млекопитающее». Это общее высказывание. Рассуждение - это цепочка взаимосвязанных высказываний, фактов и общих положений,

полученных из других высказываний по определенным правилам вывода. Пример 4. • «Если треугольник равносторонний, то у него все углы равны между собой».

Page 12: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

12

• «Если король под шахом и ему некуда ходить, то – мат». Умозаключение – прием мышления, посредством которого из исходного знания получается

новое знание; из одного или нескольких истинных высказываний, называемых предпосылками, по определенным правилам вывода можно получить заключение.

Пример 5. «Все металлы – простые вещества». «Литий – металл». Следовательно «Литий – простое вещество».

Любое правило вывода умозаключений состоит из двух высказываний (простых или сложных). Одно из них называется предпосылкой или условием, а второе – следствием, заключением или выводом.

Пример 6. «Если треугольник равносторонний, то у него все углы 60 градусов». Высказывание «У него все углы равны 60 градусов» – это заключение, а высказывание «Треугольник равносторонний» – это предпосылка.

Существуют умозаключения, осуществляемые по схемам аналогии, индукции и дедукции. Умозаключение по аналогии – это правило полученное из рассмотрения какого-либо

объекта, переносимое на менее изученный, сходный по существенным свойствам и качествам объекта.

Пример 7. Из высказывания «Солнечная система – это планеты, вращающиеся по орбитам, в центре которых находится Солнце» можно получить умозаключение по аналогии: «Атом – это электроны, вращающиеся по орбитам, в центре которых находится ядро».

Индукция – это правило вывода умозаключений при переходе от частных высказываний к общим.

Пример 8. Высказывания: «кошки имеют хвост», «собаки имеют хвост», «обезьяны имеют хвост», «кошки, собаки, обезьяна – млекопитающие». Следовательно, «все млекопитающие имеют хвост». Это умозаключение ложно.

Индуктивный вывод умозаключений позволяет формулировать различные гипотезы, догадки, но иногда он может приводить и к ошибочным умозаключениям.

Дедукция – это правило вывода умозаключений при переходе от общих суждений к частным.

Пример 9. «Умные люди не делают ошибки». «Я – умный человек». Следовательно: «Я не делаю ошибок».

В математической логике не рассматривается конкретное содержание высказывания, важно только, истинно оно или ложно. Поэтому высказывания можно представить некоторой переменной величиной, значением которой может быть только «0» или «1». Если высказывание истинно, то его значение равно «1», если ложно, то равно «0».

Из уже заданных простых высказываний можно строить более сложные высказывания, используя частицу «не», а также союзы «и», «или», «если..., то...», «тогда и только тогда, когда» и т.п..

2.1. Логические операции Истинностные значения новых высказываний определяются при этом только

истинностными значениями входящих в них высказываний. Построение из данных высказываний (или из данного высказывания) нового высказывания называется логической операцией. Знаки логических операций называются логическими связками. Логические связки могут быть: одноместными (унарными), двухместными (бинарные), трехместными (тернарными) и т.д.

Пример 10. • Из высказываний «х > 2», «х < 3» при помощи связки «и» можно получить высказывание

«x > 2 и х < 3»;

Page 13: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

13

• из высказываний «у > 10», «х < 3» при помощи связки «или» можно получить высказывание «у > 10 или х < 3»;

• из высказываний «х > 2», «у < 3» при помощи связки «если..., то...» можно получить высказывание «если x > 2, то у < 3».

Истинность или ложность получаемых таким образом высказываний зависит от истинности и ложности исходных высказываний и соответствующей трактовки связок как операций над высказываниями.

В алгебре логики логические операции чаще всего описываются при помощи таблиц истинности. В таблице 1 представлена таблица истинности для операции «отрицание» («инверсия»).

Таблица истинности для операции «отрицания»

Таблица 1

А не А

0 1

1 0

В таблице 2 приведены основные бинарные логические операции и связки.

Основные бинарные логические операции и связки Таблица 2

Обозначение логической операции

Другие обозначения логической операции

Название логической операции и связки

Примечание (читается)

А1 ∧ А2 А1 & А2 А1 ⋅ А2 А1А2

конъюнкция, логическое умножение,

логическое «и» А1 и А2

А1 ∨ А2 А1 + А2 дизъюнкция,

логическое сложение, логическое «или»

А1 или А2

А1 → А2 А1 ⊇ А2 А1 ⇒ А2

импликация, логическое следование

если А1, то А2; А1 имплицирует А2;

А1 влечет А2

А1 ⊕ А2 А1 + А2 А1 ∨ А2 А1 Δ А2

сумма по модулю 2, разделительная дизъюнкция,

разделительное «или»

А1 плюс А2; либо А1, либо А2

А1 ~ А2 А1 ≡ А2 А1 ↔ А2 А1 ⇔ А2

эквиваленция, эквивалентность, равнозначность, тождественность

А1 тогда и только тогда, когда А2;

А1 эквивалентно А2

А1 ⏐ А2 штрих Шеффера, антиконъюнкция

неверно, что А1 и А2; А1 штрих Шеффера А2

Page 14: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

14

А1 ↓ А2 А1 °А2 А1 ∨ А2

стрелка Пирса, антидизъюнкция, функция Вебба, функция Даггера

ни А1, ни А2; А1 стрелка Пирса А2

Примечание: А1 и А2 являются высказываниями. Связки и частица «не» рассматриваются в алгебре логики как операции над величинами,

принимающими значения 0 (ложь/false) и 1 (истина/true), и результатом применения этих операций также являются числа 0 или 1. В таблице 3 представлены все наборы значений переменных А1 и А2 и значения функций на этих наборах.

Таблица истинности для основных бинарных логических операций Таблица 3

А1 А2 ∧ ∨ → ⊕ ~ ⏐ ↓

0 0 0 0 1 0 1 1 1

0 1 0 1 1 1 0 1 0

1 0 0 1 0 1 0 1 0

1 1 1 1 1 0 1 0 0

Инверсия

Отрицание высказывания А (т.е. не А) обозначается А¬ , или А , или A~ и часто читается: «отрицание А», «не А» или «А с чертой».

Пример 11. Высказывание А=<Киев-столица Франции>, тогда сложное высказывание НЕ А означает: не верно, что А, т.е. не верно, что <Киев-столица Франции>.

Конъюнкция

Результатом операции конъюнкции для высказывания А ∧ В будет истинна только тогда, когда истинны одновременно оба высказывания.

Пример 12. Высказывания А= «Москва – столица России» и В= «Рим – столица Италии». Сложное высказывание А ∧ В (А & В) истинно, так как истинны оба высказывания.

Дизъюнкция

Результатом операции дизъюнкции для высказывания А ∨ В будет истинна тогда, когда истинно хотя бы одно высказывание, входящее в него.

Пример 13. Высказывания А = «2 + 3 = 5» и В = «3 + 3 = 5». Сложное высказывание: А ∨ В (А + В) истинно, так как истинно высказывание А.

Эквиваленция (равнозначность)

Результатом операции эквиваленции для высказывания А ~ В будет истинна тогда, когда истинны или ложны одновременно оба высказывания. Отличие эквиваленции от конъюнкции состоит в том, что вне зависимости от смысла, равнозначными являются как истинные, так и ложные высказывания.

Пример 14. Высказывания А = «2 + 2 = 7» и В = «1 – 8 = 5». Сложное высказывание А ≡ В (А ~ В) истинно, так как оба высказывания ложны.

Page 15: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

15

Импликация

Результатом операции импликации для высказывания А → В будет ложь только тогда, когда первое высказывание (А) истинно, а второе (В) ложно. При этом А – предпосылка, а В – следствие.

Пример 15. Высказывания А = «2 + 2 = 4» и В = «1 – 8 = 5». Сложное высказывание А → В (А ⇒ В) ложно, так как высказывание А истинно, а В – ложно.

Антиконъюнкция

Результатом операции антиконъюнкции для высказывания А ⏐ В будет ложь только тогда, когда оба высказывания истинны.

Пример 16. Высказывания А= «Москва – столица России» и В= «Рим – столица Италии». Сложное высказывание А ⏐ В ложно, так как истинны оба высказывания.

Антидизъюнкция

Результатом операции антидизъюнкции для высказывания А ↓ В будет истинна только тогда, когда оба высказывания ложны.

Пример 17. Высказывания А= «Рим – столица России» и В= «Москва – столица Италии». Сложное высказывание А ↓ В истинно, так как ложны оба высказывания.

Основными символами алгебры логики являются: • пропозициональные переменные; • унарная связка ¬ и бинарные связки ∧, ∨, →, ~; • скобки ( ). Переменная, значениями которой являются высказывания, называется пропозициональной

переменной. Далее индуктивно вводится понятие формулы, являющееся формализацией понятия

«сложного» высказывания. К формуле алгебры логики относят: • выражение, состоящее только из пропозициональной переменной (А1, В, с); • выражения, состоящие из пропозициональных формул соединенных связками (¬ С, (А1

∧ А2), (Н1 → Н2)). Правила сокращения записей в пропозициональных формулах:

• вместо ¬ А пишут А ; • вместо А1 ∧ А2 пишут А1А2; • приоритет применения связок возрастает в следующем порядке ~ → ∨ ∧ ¬ • внешние скобки опускаются. Пример 18.

• 321321 )())(( АААААА →≡¬∧→ ;

−−−−

∨≡∧¬∨¬∧ 21312131 ))()(( АААААААА . Для преобразований формул в равные формулы важную роль в алгебре логики играют

следующие равенства:

1. 1221 ** АААА = (закон коммутативности).

2. )*(**)*( 321321 АААААА = (закон ассоциативности).

3. 1211

1211

)()(

АААААААА

=∨∧=∧∨

(закон поглощения).

Page 16: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

16

4. )()()()()()(

3121321

3121321

АААААААААААААА

∨∧∨=∧∨∧∨∧=∨∧

(закон дистрибутивности).

5. 0

)()(

212121

2121

21211

21211

=∨=↔

∨=→

∧=∨∧

∨=∧∨

АААААААА

АААААААААААААА

(закон противоречия).

6. 1=∨ АА (закон исключенного третьего);

7. АА = (закон снятия двойного отрицания);

8. 12121

12121

))(( АААААААААА

=∨∨

=∨

(закон склеивания);

9. 2121

2121

АААА

АААА

∨=⋅

⋅=∨

(закон де Моргана);

10. 21211 ААААА ∨=∨ (закон свертки). Эти равенства позволяют существенно упростить запись формул освобождением от лишних

скобок.

2.2. Нормальные формы Элементарной конъюнкцией называется конъюнкция нескольких переменных, взятых с

отрицанием или без отрицания, причём среди переменных могут быть одинаковые. Элементарной дизъюнкцией называется дизъюнкция нескольких переменных, взятых с

отрицанием или без отрицания, причём среди переменных могут быть одинаковые.

Конъюнктивная нормальная форма

Всякая конъюнкция элементарных дизъюнкций называется конъюнктивной нормальной формой, то есть КНФ.

Совершенной КНФ (СКНФ) называется КНФ, в которой нет равных элементарных дизъюнкций и все они содержат одни и те же переменные, причём каждую переменную только один раз (возможно с отрицанием).

Дизъюнктивная нормальная форма

Всякая дизъюнкция элементарных конъюнкций называется дизъюнктивной нормальной формой, то есть ДНФ.

Совершенной ДНФ (СДНФ) называется ДНФ, в которой нет равных элементарных конъюнкций и все они содержат одни и те же переменные, причём каждую переменную только один раз (возможно с отрицанием).

Page 17: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

17

3. Применение средств алгебры логики для описания функционирования устройств компьютера

Для описания того, как функционируют аппаратные средства компьютера очень удобен

математический аппарат алгебры логики, поскольку основной системой счисления в компьютере является двоичная, в которой используются цифры «1» и «0».

Следовательно, одни и те же устройства компьютера могут применяться для обработки и хранения как числовой информации, представленной в двоичной системе счисления, так и логических переменных; на этапе конструирования аппаратных средств алгебра логики позволяет значительно упростить логические функции, описывающие функционирование схем компьютера, и, следовательно, уменьшить число элементарных логических элементов, из десятков тысяч которых состоят основные узлы компьютера.

Данные и команды в памяти компьютера и в регистрах процессора представляются в виде двоичных последовательностей различной структуры и длины.

Существуют различные физические способы кодирования двоичной информации, но чаще всего единица кодируется более высоким уровнем напряжения, чем ноль.

В логической схеме компьютера выделяют логические элементы. Логический элемент компьютера – это часть электронной логической схемы, которая реализует элементарную логическую формулу.

Логическими элементами компьютеров являются электронные схемы «И», «ИЛИ», «НЕ», «И-НЕ», «ИЛИ-НЕ» и другие (называемые также вентилями), а также триггер. С помощью этих схем можно реализовать любую логическую формулу, описывающую работу устройств компьютера.

Каждый логический элемент имеет свое условное обозначение, которое выражает его логическую формулу, но не указывает на то, какая именно электронная схема в нем реализована. Это упрощает запись и понимание сложных логических схем.

Схема «И» реализует конъюнкцию двух или более логических значений. Условное обозначение на структурных схемах схемы «И» с двумя входами представлено на рис. 5.

Рис. 5. схема «И»

На выходе схемы «И» значение «1» будет тогда и только тогда, когда на всех входах будут «1». Когда хотя бы на одном входе будет «0», на выходе также будет «0».

Операция конъюнкции на функциональных схемах обозначается знаком «&» (читается как «амперсэнд»), являющимся сокращенной записью английского слова and.

Схема «ИЛИ» реализует дизъюнкцию двух или более логических значений. Условное обозначение схемы «ИЛИ» представлено на рис. 6.

Рис. 6. Схема «ИЛИ»

Значение дизъюнкции равно «1», если сумма значений операндов больше или равна «1». Когда хотя бы на одном входе схемы «ИЛИ» будет «1», на её выходе также будет «1».

Page 18: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

18

Операция дизъюнкции на функциональных схемах обозначается знаком «1». Схема «НЕ» (инвертор) реализует операцию отрицания. Условное обозначение схемы НЕ

представлено на рис. 7.

Рис. 7. Схема «НЕ»

Если на входе схемы – «0», то на выходе будет «1». Когда на входе – «1», на выходе будет «0».

Схема «И-НЕ» состоит из элемента «И» и инвертора и осуществляет отрицание результата схемы «И». Условное обозначение схемы «И-НЕ» представлено на рисунке 8. Таблица истинности схемы «И-НЕ» – это таблица 5.

Рис. 8. Схема «И-НЕ»

Таблица истинности схемы «И-НЕ» Таблица 5

х у ух ⋅

0 0 1

0 1 1

1 0 1

1 1 0

Схема «ИЛИ-НЕ» состоит из элемента «ИЛИ» и инвертора и осуществляет отрицание результата схемы «ИЛИ». Условное обозначение схемы «ИЛИ-НЕ» представлено на рис. 9, а таблица истинности схемы ИЛИ-НЕ – это табл. 6.

Рис. 9. Схема «ИЛИ-НЕ»

Таблица истинности схемы «ИЛИ-НЕ» Таблица 6

х у ух∨

0 0 1

Page 19: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

19

0 1 0

1 0 0

1 1 0

Логические схемы Логическая схема – это схематическое изображение некоторого устройства, состоящего из

переключателей и соединяющих их проводников, а также из входов и выходов, на которые подаётся и с которых снимается электрический сигнал.

Каждый переключатель имеет только два состояния: замкнутое и разомкнутое. Переключателю Х поставим в соответствие логическую переменную х, которая принимает значение 1 в том и только в том случае, когда переключатель Х замкнут и схема проводит ток; если же переключатель разомкнут, то х равен нулю.

Две схемы называются равносильными, если через одну из них проходит ток тогда и только тогда, когда он проходит через другую (при одном и том же входном сигнале).

Из двух равносильных схем более простой считается та схема, функция проводимости которой содержит меньшее число логических операций или переключателей.

При рассмотрении переключательных схем возникают две основные задачи: синтез и анализ схемы.

СИНТЕЗ СХЕМЫ по заданным условиям ее работы сводится к следующим трём этапам: 1. составлению функции проводимости по таблице истинности, отражающей эти условия; 2. упрощению этой функции; 3. построению соответствующей схемы. АНАЛИЗ СХЕМЫ сводится к: 1. определению значений её функции проводимости при всех возможных наборах

входящих в эту функцию переменных. 2. получению упрощённой формулы.

Построение логических схем Как правило, построение и расчет любой схемы осуществляется начиная с ее выхода.

Допустим, задано булево выражение: F =⎯BA + B⎯A + C⎯B. Первый этап: выполняется логическое сложение, логическую операцию ИЛИ, считая

входными переменными функции⎯B A, B⎯A и C⎯B:

1 ⎯B A

C⎯B

F B⎯A

Второй этап: к входам элемента ИЛИ подключаются логические элементы И, входными

переменными которых являются уже A, B, C и их инверсии:

Page 20: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

20

1⎯B A

F B⎯A

⎯B

&⎯A

В

&C

⎯B

C⎯B

Третий этап: для получения инверсий ⎯A и⎯B на соответствующих входах ставят

инверторы:

1 ⎯B A

C⎯B

F B⎯A

& А

⎯B

& ⎯A

В

& С

⎯B

1 А

1 В

С

Данное построение основано на следующей особенности, – поскольку значениями

логических функций могут быть только нули и единицы, то любые логические функции могут быть представлены как аргументы других более сложных функций. Таким образом, построение логической схемы осуществляется с выхода ко входу.

4. Практическая работа 1. Системы счисления Цель работы: Рассмотреть систему представления чисел в памяти ЭВМ. Задания к практической работе №1: 1. В приложении №1 выбрать свой вариант индивидуального задания. 2. Выполнить его, пользуясь данными методическими указаниями (глава 1. Системы

счисления). 3. Оформить работу по образцу приложения № 4. 4. Результат работы предъявить преподавателю. 5. Ответить на вопросы для самоконтроля к практической работе №1.

Page 21: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

21

6. Защитить выполненную работу у преподавателя.

Вопросы для самоконтроля 1. Что такое система счисления? 2. Чем характеризуется система счисления? 3. Виды систем счисления. 4. Десятичная система счисления. Основание. Представление чисел. 5. Двоичная система счисления. Основание. 6. Восьмеричная и шестнадцатеричная системы счисления. 7. Перевод чисел из любой системы счисления в десятичную. 8. Перевод чисел из десятичной в любую другую систему счисления. 9. Почему для машинной арифметики используется двоичная система счисления? 10. Для чего используется шестнадцатеричная система счисления?

5. Практическая работа 2. Алгебра логики Цель работы: Ознакомиться с основными арифметическими операциями, базовыми

логическими элементами (И, И-НЕ, ИЛИ, ИЛИ-НЕ, исключающее ИЛИ) и изучить методы построения на их основе простейших логических схем.

Задания к практической работе № 2: 1. В приложении №2 выбрать свой вариант индивидуального задания. 2. Выполнить его, пользуясь данными методическими указаниями (глава 2. Алгебра

логики). 3. Оформить работу по образцу приложения № 4. 4. Результат работы предъявить преподавателю. 5. Ответить на вопросы для самоконтроля к практической работе №2. 6. Защитить выполненную работу у преподавателя.

Решение логических задач средствами алгебры логики Задача: Составить таблицу истинности для данной формулы: (x ~ z) | ((x y) ~ (y z)). Решение: В таблицу истинности данной формулы полезно включить таблицы истинности

промежуточных функций:

xyz x ~ z x y y z (x y) ~ (y z) (x~ z)|((x y) ~ (yz)

000 1 0 0 1 0 001 0 0 0 1 1 010 1 0 0 1 0 011 0 0 1 0 1 100 0 0 0 1 1 101 1 0 0 1 0 110 0 1 0 0 1 111 1 1 1 1 0

Page 22: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

22

Индивидуальное задание к модулю 1. Построение логических схем по заданным булевым выражениям

Задания к ИДЗ: 1. В приложении №3 выбрать свой вариант индивидуального задания. 2. Выполнить его, пользуясь данными методическими указаниями (глава 2 – 4.). 3. Оформить работу по образцу приложения № 4. 4. Результат работы предъявить преподавателю. 5. Защитить выполненную работу у преподавателя.

Приложение 1. Практическое занятие 1 «Системы счисления»

Вариант 1 1. Выполнить действия в двоичной системе счисления: • 1100 – 0111 • 11001*111 • 1111 + 1011 2. Перевести из одной системы счисления в другую: • число 29 из десятичной системы счисления в 2-ную. • число 100111 из двоичной системы счисления в 10-ную. • число FA2 из шестнадцатеричной системы счисления в 5-ную. 3. Расположить числа в порядке возрастания. Ответ аргументировать: 4407; 11001022; 1429;

3026. Вариант 2 1. Выполнить действия в двоичной системе счисления: • 0101 – 1101 • 1001 * 110 • 10111 + 111 2. Перевести из одной системы счисления в другую: • число 53 из десятичной системы счисления в 2-ную. • число 11001100 из двоичной системы счисления в 10-ную. • число DB5C из шестнадцатеричной системы счисления в 3-ную. 3. Вычислите значение выражения ( А + В ) * С, где А = 101001.1012, В = С316, С = 1429.

Ответ дать в 10-ной системе счисления. Вариант 3 1. Выполнить действия в двоичной системе счисления: • 111 + 1001110 • 10111 – 111100 • 1100101*101 2. Перевести из одной системы счисления в другую:

Page 23: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

23

• число 89 из десятичной системы счисления в 2-ную. • число 110100101 из двоичной системы счисления в 10-ную. • число 110101 из двоичной системы счисления в 16-ную. 3. Вычислить значение выражения А *В + С, где А= 101001.012, В = 3ВС316, С = 6489.

Ответ дать в десятичной системе счисления. Вариант 4 1. Выполнить действия в двоичной системе счисления: • 10011 + 1101 • 11000 – 1101 • 1011*111 2. Перевести из одной системы счисления в другую: • число 112 из десятичной системы счисления в 2-ную. • число 1110011 из двоичной системы счисления в 10-ную. • число 110101 из двоичной системы счисления в 16-ную. 3. Вычислить значение выражения (А - В) * С, где А = 1011.00112, В = Е93F316, С = 4315.

Ответ дать в десятичной системе счисления. Вариант 5 1. Выполнить действия в двоичной системе счисления: • 11001 – 10101 • 10011 * 111 • 11001 + 100011 2. Перевести из одной системы счисления в другую: • число 135 из десятичной системы счисления в 2-ную. • число 111100101 из двоичной системы счисления в 10-ную. • число 110101 из двоичной системы счисления в 5-ную. 3. Расположить числа в порядке убывания. Ответ аргументировать: 7483; 1100101.110112;

4115; 62CF316. Вариант 6 1. Выполнить действия в двоичной системе счисления: • 11011 + 11111 • 101101 – 1101 • 1011*1001 2. Перевести из одной системы счисления в другую: • число 68 из десятичной системы счисления в 2-ную. • число 101100101 из двоичной системы счисления в 10-ную. • число 110101 из двоичной системы счисления в 16-ную. 3. Расположить числа в порядке возрастания. Ответ аргументировать: 1326; 5607; 23А14В16;

2304. Вариант 7 1. Выполнить действия в двоичной системе счисления: • 10011001 – 1101

Page 24: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

24

• 10011 * 1010 • 11011 + 11111 2. Перевести из одной системы счисления в другую: • число 73 из десятичной системы счисления в 2-ную. • число 111000101 из двоичной системы счисления в 10-ную. • число 6F3D из шестнадцатеричной системы счисления в 2-ную. 3. Расположить числа в порядке убывания. Ответ аргументировать: 70458; 110101.0112;

1D5В16. Вариант 8 1. Выполнить действия в двоичной системе счисления: • 11001 – 100011 • 101101 * 1101 • 10011001 + 1101 2. Перевести из одной системы счисления в другую: • число 42 из десятичной системы счисления в 2-ную. • число 111100001 из двоичной системы счисления в 10-ную. • число 4FD из шестнадцатеричной системы счисления в 2-ную. 3. Расположить числа в порядке возрастания. Ответ аргументировать: 24438;

11001011.00112; 16123; 38164. Вариант 9 1. Выполнить действия в двоичной системе счисления: • 11100101+100011 • 11001101-1111 • 1011*1001 2. Перевести из одной системы счисления в другую: • число 69 из десятичной системы счисления в 2-ную. • число 111100011 из двоичной системы счисления в 10-ную. • число 110101 из двоичной системы счисления в 3-ную. 3. Расположить числа в порядке убывания. Ответ аргументировать: 31236; 32DC1316; 4629;

37124. Вариант 10 1. Выполнить действия в двоичной системе счисления: • 11100101+100011 • 11001101-1111 • 1011*1001 2. Перевести из одной системы счисления в другую: • число 75 из десятичной системы счисления в 2-ную. • число 111100111 из двоичной системы счисления в 10-ную. • число 120 из 5-ричной системы счисления в 7-ричную. 3. Расположить числа в порядке возрастания. Ответ аргументировать: 11010.11012;

36ВС1516; 33425; 13024.

Page 25: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

25

Вариант 11 1. Выполнить действия в двоичной системе счисления: • 11100101+100011 • 11001101-1111 • 1011*1001 2. Перевести из одной системы счисления в другую: • число 112 из десятичной системы счисления в 2-ную. • число 111100110 из двоичной системы счисления в 10-ную. • число 721 из 8-ричной системы счисления в 5-ную. 3. Расположить числа в порядке убывания. Ответ аргументировать: 73428; 111011001.012;

13124; 3ВС81616. Вариант 12 1. Выполнить действия в двоичной системе счисления: • 11100101+100011 • 11001101-1111 • 1011*1001 2. Перевести из одной системы счисления в другую: • число 151 из десятичной системы счисления в 2-ную. • число 111100100 из двоичной системы счисления в 10-ную. • число 4FD из 16-ричной системы счисления в 2-ную. 3. Вычислить и проверить результат. Ответ аргументировать: А3ВF516 – 31456 +110111.0012 = 31426. Вариант 13 1. Выполнить действия в двоичной системе счисления: • 11100101+100011 • 11001101-1111 • 1011*1001 2. Перевести из одной системы счисления в другую: • число 103 из десятичной системы счисления в 2-ную. • число 1111000001 из двоичной системы счисления в 10-ную. • число 565 из 7-ричной системы счисления в 3-ную. 3. Вычислить и проверить результат. Ответ аргументировать: 34СВ316 * 5337 +1010101.1012 = 2546. Вариант 14 1. Выполнить действия в двоичной системе счисления: • 11100101+100011 • 11001101-1111 • 1011*1001 2. Перевести из одной системы счисления в другую: • число 49 из десятичной системы счисления в 2-ную.

Page 26: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

26

• число 110110111 из двоичной системы счисления в 10-ную. • число 332 из 4-ной системы счисления в 16-ную. 3. Вычислить и проверить результат. Ответ аргументировать: 1А54В416 * 32067 + 1314 = 1546. Вариант 15 1. Выполнить действия в двоичной системе счисления: • 11100101+100011 • 11001101-1111 • 1011*1001 2. Перевести из одной системы счисления в другую: • число 107 из десятичной системы счисления в 2-ную. • число 111010111 из двоичной системы счисления в 10-ную. • число 110101 из двоичной системы счисления в 16-ную. 3. Вычислить и проверить результат. Ответ аргументировать: 10В7С816 - 1457 + 3324 = 2007. Вариант 16 1. Выполнить действия в двоичной системе счисления: • 11100101+100011 • 11001101-1111 • 1011*1001 2. Перевести из одной системы счисления в другую: • число 111 из десятичной системы счисления в 2-ную. • число 111110111 из двоичной системы счисления в 10-ную. • число 201 из 7-ричной системы счисления в 3-ную. 3. Вычислить и проверить результат. Ответ аргументировать: 15С8В316 - 3427 + 33256 = 23217. Вариант 17 1. Выполнить действия в двоичной системе счисления: • 11100101+100011 • 11001101-1111 • 1011*1001 2. Перевести из одной системы счисления в другую: • число 65 из десятичной системы счисления в 2-ную. • число 111111111 из двоичной системы счисления в 10-ную. • число 813 из 9-ричной системы счисления в 4-ную. 3. Вычислить и проверить результат. Ответ аргументировать: 145АА316 - 10109 + 6018 = 2234. Вариант 18 1. Выполнить действия в двоичной системе счисления: • 11100101+100011

Page 27: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

27

• 11001101-1111 • 1011*1001 2. Перевести из одной системы счисления в другую: • число 98 из десятичной системы счисления в 2-ную. • число 111110101 из двоичной системы счисления в 10-ную. • число 110101 из двоичной системы счисления в 3-ную. 3. Вычислить и проверить результат. Ответ аргументировать: В1С916 - 52437 + 54126 = 6547. Вариант 19 1. Выполнить действия в двоичной системе счисления: • 11100101+100011 • 11001101-1111 • 1011*1001 2. Перевести из одной системы счисления в другую: • число 55 из десятичной системы счисления в 2-ную. • число 111100010.01 из двоичной системы счисления в 10-ную. • число 442 из 6-ричной системы счисления в 5-ную. 3. Вычислить выражение в десятичной системе счисления: А = 1001011.00112 + 257.428 + А2.816. Вариант 20 1. Выполнить действия в двоичной системе счисления: • 11100101+100011 • 11001101-1111 • 1011*1001 2. Перевести из одной системы счисления в другую: • число 91 из десятичной системы счисления в 2-ную. • число 110100101.101 из двоичной системы счисления в 10-ную. • число 648 из 9-ричной системы счисления в 5-ную. 3. Вычислить выражение в десятичной системе счисления: В = 15416 + 6528 + 14ВС516. Вариант 21 1. Выполнить действия в двоичной системе счисления: • 11100101+100011 • 11001101-1111 • 1011*1001 2. Перевести из одной системы счисления в другую: • число 88 из десятичной системы счисления в 2-ную. • число 100111101.111 из двоичной системы счисления в 10-ную. • число 135 из 7-ной системы счисления в 2-ную. 3. Вычислить выражение в десятичной системе счисления: С = 1011011.0010112 * 1438 +DF45C16.

Page 28: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

28

Вариант 22 1. Выполнить действия в двоичной системе счисления: • 11100101+100011 • 11001101-1111 • 1011*1001 2. Перевести из одной системы счисления в другую: • число 115 из десятичной системы счисления в 2-ную. • число 1010101.11 из двоичной системы счисления в 10-ную. • число 306 из 7-ной системы счисления в 3-ную. 3. Вычислить выражение в десятичной системе счисления: D = 78529 + 56428 + 14235. Вариант 23 1. Выполнить действия в двоичной системе счисления: • 11100101+100011 • 11001101-1111 • 1011*1001 2. Перевести из одной системы счисления в другую: • число 106 из десятичной системы счисления в 2-ную. • число 110101101.001 из двоичной системы счисления в 10-ную. • число 110101 из двоичной системы счисления в 16-ную. 3. Вычислить выражение в десятичной системе счисления: F = 1011011.01012 +12014 + 14F5DC16. Вариант 24 1. Выполнить действия в двоичной системе счисления: • 11100101+100011 • 11001101-1111 • 1011*1001 2. Перевести из одной системы счисления в другую: • число 59 из десятичной системы счисления в 2-ную. • число 111101101.0001 из двоичной системы счисления в 10-ную. • число 440 из 7-ной системы счисления в 8-ную. 3. Вычислить выражение в десятичной системе счисления: X = 35246 + 257.428 + А2.5216. Вариант 25 1. Выполнить действия в двоичной системе счисления: • 11100101+100011 • 11001101-1111 • 1011*1001 2. Перевести из одной системы счисления в другую: • число 47 из десятичной системы счисления в 2-ную.

Page 29: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

29

• число 1001101011.1001 из двоичной системы счисления в 16-ную. • число 142 из 9-ной системы счисления в 2-ную. 3. Расположить числа в порядке возрастания. Ответ аргументировать: 526.237;

11011.011012; 70ВС1016; 16178. Вариант 26 1. Выполнить действия в двоичной системе счисления: • 10101101+100011 • 110101 - 1111 • 1111*1111 2. Перевести из одной системы счисления в другую: • число 33 из десятичной системы счисления в 2-ную. • число 110100111.11 из двоичной системы счисления в 10-ную. • число 110101 из двоичной системы счисления в 3-ную. 3. Расположить числа в порядке убывания. Ответ аргументировать: 235.489; 50С1516;

523.146; 5227. Вариант 27 1. Выполнить действия в двоичной системе счисления: • 10000001 + 111011 • 11011101 - 111111 • 11101*111101 2. Перевести из одной системы счисления в другую: • число 131 из десятичной системы счисления в 2-ную. • число 110101101.011 из двоичной системы счисления в 10-ную. • число 351 из 8-ной системы счисления в 5-ную. 3. Расположить числа в порядке возрастания. Ответ аргументировать: 32.7489;

100111.11012; 36237; 468.239. Вариант 28 1. Выполнить действия в двоичной системе счисления: • 11010101 + 110011 • 11001101 - 100111 • 1111 * 1001 2. Перевести из одной системы счисления в другую: • число 153 из десятичной системы счисления в 2-ную. • число 1101101101.01 из двоичной системы счисления в 10-ную. • число 404 из 6-ной системы счисления в 16-ную. 3. Вычислить выражение в десятичной системе счисления: А = 100111.11012 + 523.458 + С15В3216. Вариант 29 1. Выполнить действия в двоичной системе счисления: • 11100101 - 100011

Page 30: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

30

• 11001101 + 1111 • 1001*1101 2. Перевести из одной системы счисления в другую: • число 141 из десятичной системы счисления в 2-ную. • число 110101111.001 из двоичной системы счисления в 10-ную. • число 511 из 7-ной системы счисления в 2-ную. 3. Вычислить выражение в десятичной системе счисления: В = 1011011.0012 + 34518 + АВС3.816. Вариант 30 1. Выполнить действия в двоичной системе счисления: • 1100 * 0111 • 11001+1011 • 111101 - 1011 2. Перевести из одной системы счисления в другую: • число 123 из десятичной системы счисления в 2-ную. • число 110100101.001 из двоичной системы счисления в 10-ную. • число 1101010.110 из двоичной системы счисления в 16-ную. 3. Расположить числа в порядке возрастания. Ответ аргументировать: 732.489; 3521.236;

70108; 38ВС.1616.

Приложение 2. Практическое занятие 2 «Алгебра логики»

Вариант 1 1. Составить таблицу истинности для данных операций:

• )~(|)( yzxyx +

• ( )x yz xz∨ Вариант 2 1. Составить таблицу истинности для данных операций:

• ))~(())(( yzxzyx +→∨

• )(*)( dccacdcda ∨∨ Вариант 3 1. Составить таблицу истинности для данных операций:

• )|())~(( yzxyzx ⋅+

• xdxcddc ∨∨ )( Вариант 4 1. Составить таблицу истинности для данных операций:

• )())(( yxzyx +→∨

• )( zyxyzzy ∨

Page 31: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

31

Вариант 5 1. Составить таблицу истинности для данных операций:

• ))(~( zxyzx +→

• )( zpxzxyyx ∨∨∨ Вариант 6 1. Составить таблицу истинности для данных операций:

• )|)(()( zyxzyx ↓→∨

• zyxzyyx ∨∨∨ )( Вариант 7 1. Составить таблицу истинности для данных операций:

• ))(~( xzyzx +→

• )( yzyxz ∨ Вариант 8 1. Составить таблицу истинности для данных операций:

• )~()|)(( yxzxy →

• zyxzyx ∨∨∨∨ )()( Вариант 9 1. Составить таблицу истинности для данных операций:

• )(|)( xzxyyxz +→

• )(* xyyzyx ∨ Вариант 10 1. Составить таблицу истинности для данных операций:

• )(|))(( xyyzx +

• )( yxyzx ∨ Вариант 11 1. Составить таблицу истинности для данных операций:

• )(|))(~( xyzyx +

• )(* abacba ∨ Вариант 12 1. Составить таблицу истинности для данных операций:

• )~(|))(( xzxyyzx →↓

• )( baadbab ∨

Page 32: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

32

Вариант 13 1. Составить таблицу истинности для данных операций:

• )|)(()( zyxzyx +→↓∨

• )( zyzxy ∨ Вариант 14 1. Составить таблицу истинности для данных операций:

• )))((~()( zxyzzyx ∨↓→+

• )( yxzyxxy ∨ Вариант 15 1. Составить таблицу истинности для данных операций:

• )|)~(())|(( yzyxzxy ⋅

• cacbba ∨∨∨∨ ))(( Вариант 16 1. Составить таблицу истинности для данных операций:

• )(|))(( yzxyzx ↓+∨

• )( xyxzy ∨ Вариант 17 1. Составить таблицу истинности для данных операций:

• ))((|)~( xzyxyx +↓

• zxzyxyx ∨∨ )( Вариант 18 1. Составить таблицу истинности для данных операций:

• )~(|)( yzxyx

• )( yxzxyyx ∨ Вариант 19 1. Составить таблицу истинности для данных операций:

• ))~(())(( yzxzyx +→↓

• zxyyzx ∨ Вариант 20 1. Составить таблицу истинности для данных операций:

• )())~(( yzxyzx ∨⋅+

• )( xzyzxxz ∨

Page 33: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

33

Вариант 21 1. Составить таблицу истинности для данных операций:

• )~())(( yxzyx →∨

• )( xzxyz ∨ Вариант 22 1. Составить таблицу истинности для данных операций:

• )))((~( zxyzx ↓+→

• )( yxzxyxz ∨ Вариант 23 1. Составить таблицу истинности для данных операций:

• )|)(()( zyxzyx ↓→+ • )(|)~( yxyx ∨ Вариант 24 1. Составить таблицу истинности для данных операций:

• ))(~()( xyzzx +→∨

• bacba ∨∨ )( Вариант 25 1. Составить таблицу истинности для данных операций:

• )()|)~(( yxzyx +→

• )(*)( yxxzyxzyx ∨∨ Вариант 26 1. Составить таблицу истинности для данных операций:

• ))~((|)( zxyxyxz +→

• )~(| zyxzyzx ∨ Вариант 27 1. Составить таблицу истинности для данных операций:

)(|))()(( yxzyzx ++∨ zyxyx ↓→∨ )~()(

Вариант 28 1. Составить таблицу истинности для данных операций:

• ))~((|)~)(( yzxzyx ++

• )(|)~( yxyxyx ∨→∨

Page 34: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

34

Вариант 29 1. Составить таблицу истинности для данных операций:

• ))~(|())(( zyxyzx ⋅+

• xzxzxyz ∨∨ )( Вариант 30 1. Составить таблицу истинности для данных операций:

• ))|(()( zyxzyx ↓→∨

• yxzxyzyx *∨

Приложение 3. Индивидуальное задание. Модуль №1 Составить таблицу истинности и логическую схему по формулам Вариант 1

• BABAX ⋅++=

• CBCAY += Вариант 2

• DCBX +=

• DCBAY ++= Вариант 3

• BABAX ⋅+∨= • DACY ∨+= Вариант 4

• )( BAACX +∨=

• ACXY +∨= Вариант 5

• )( DCDX ∨+=

• )( BXBXY ⋅∨= Вариант 6

• ))(( BABAX +∨= • CCABAY +∨= Вариант 7

• ZYXC ∨+= )(

Page 35: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

35

• )( ZYXYXA +∨= Вариант 8

• ZYXZYXA +∨+= • ZYXYXC ∨+= Вариант 9

• )()( YXZYXA ∨+∨=

• )( YXZXXYC ∨+= Вариант 10

• aYXBAXZ )( ++=

• CBAXAY +∨+= Вариант 11

• YCBAX +∨= • BXAXY ∨+= Вариант 12

• DCBADBX ∨++= )(

• BACBAY ∨++= )( Вариант 13

• CBCABX ∨+= )(

• BCCAY ∨+= Вариант 14

• CAYBCX +∨+∨=

• ABBCY += Вариант 15

• )( BABBAAX ∨∨=

• ))(( CABAY ∨+= Вариант 16

• )( ABABACX +++=

• )( ABCAY ∨= Вариант 17

Page 36: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

36

• )( BAABX ∨+=

• BDBCBAY +∨∨+= )( Вариант 18

• BAACBAX ∨+∨= )(

• )()( CBCACAY ∨+∨= Вариант 19

• BACBAX ++∨= )(

• CBABACY ∨∨+∨= )( Вариант 20

• ))(( ACBAAX +∨∨=

• ACDBAY ∨++= Вариант 21

• CBABCX +∨=

• BACAABY +∨∨= )( Вариант 22

• )( BADCDBX ∨++=

• )( ABADCY ∨+= Вариант 23

• ABCDCAX ∨++= )(

• BACABY +∨= )( Вариант 24

• CBABACY ∨++∨= )(

• CBABDCX ∨+= Вариант 25

• CBABCX ∨+=

• CXAXY ++∨= Вариант 26

• )( BACBX +∨+=

• ACCBBAY +∨+=

Page 37: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

37

Вариант 27

• BABAX ⋅+∨=

• DCBAY ∨+= Вариант 28

• )( ACBCAY ∨+∨=

• CADACBAX ∨+∨= Вариант 29

• CBBAACX ++∨= ))((

• CBACXY ∨+∨= Вариант 30

• DCBCAX ∨++= )(

• ABDCBY ++∨= )(

Приложение 4 Оформление практических работ и ИДЗ по модулю №1 должно содержать: 1. Титульный лист. 2. Содержание индивидуального задания студента. 3. Решение задач. Пример оформления титульного листа самостоятельной работы (ИДЗ)

Министерство образования Российской Федерации

Тольяттинский государственный университет Кафедра «Компьютерные технологии и обработка материалов давлением»

ИДЗ. Модуль №1. по дисциплине «Информатика»

Выполнил: Группа: Проверил:

Тольятти - 2007

Page 38: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

38

6. Введение в алгоритмизацию Программирование – интересная, живая, быстро развивающаяся наука. Первые шаги при

обучении программированию для многих оказываются очень нелегкими. Главное качество программиста – хорошее логическое мышление – развивается только в упорной и кропотливой работе.

Алгоритмический язык Паскаль был разработан в 1973 г. швейцарским математиком Никлаусом Виртом для обучения студентов структурному программированию. Язык получил свое название в честь французского математика Блеза Паскаля (1623-1662 гг.). В 1984 г. бывший студент Никлауса Вирта, французский математик Филип Кан, основал фирму Borland International и начал продавать по почте разработанную им программу - среду программирования Turbo-Pascal для ПК. Предлагаемый им продукт был настолько удачен, что только за первый месяц продаж поступили заказы общей стоимостью 150 000$. Турбо-Паскаль вскоре вывел фирму Borland в ряды основных производителей программного обеспечения.

Общеизвестна роль вычислительной техники в различных сферах человеческой деятельности. Особенно популярны персональные компьютеры (ПК), обладающие высокой производительностью и не требующие от пользователя глубокого знания процессов, происходящих в компьютере во время вычислений. Без преувеличения можно сказать, что появление ПК в середине 70-х годов и бурное их распространение в наше время открыло новую эру в массовом использовании вычислительной техники людьми всех рангов и профессий. Человечество заметно переходит от экономики, основанной на тяжелой промышленности, к экономике с компьютеризированной технологией, средствами связи и услугами.

Выбор Паскаля для обучения программированию объясняется рядом его достоинств. В частности, этот язык полно отражает идеи структурного программирования. Во-вторых, Паскаль предоставляет гибкие возможности в отношении используемых структур данных. Большое внимание в языке уделено вопросу повышения надежности программ: средства языка позволяют осуществлять достаточно полный контроль правильности использования данных различных типов и программных объектов, как на этапе трансляции программ, так и на этапе их выполнения. Благодаря перечисленным возможностям, Паскаль широко применяется не только в области обучения, но и в практической работе.

7. Знакомство со средой Турбо Паскаль

7.1. Общие сведения Большую часть мирового парка ПК составляют компьютеры, у которых внутренний язык

микропроцессора совместим с набором команд первых персональных компьютеров фирмы IBM (IBM PC), что позволять выполнять на них одни и те же программы. Такие компьютеры называют IBM-совместимые. Их насчитывается сотни миллионов, и благодаря своей массовости они стали стандартом ПК. Массовость IBM-совместимых ПК обусловило то, что фирмы-разработчики программ стали ориентировать свою продукцию на эти компьютеры, и в результате программное обеспечение, ориентированное для использования на IBM-совместимых ПК, также стало стандартом и используется во всем мире. Примером таких программ, ставших мировым стандартом, является система программирования Турбо-Паскаль.

Поясним понятие «система программирования». Как известно, программа, написанная на каком-либо алгоритмическом языке, перед выполнением на компьютере должна быть транслирована в машинные коды, для чего используются программы-переводчики (трансляторы). В середине 80-х годов разработчики программного обеспечения перешли от создания чистых трансляторов к более удобным для пользователей системам программирования, включавшим в себя, помимо транслятора, удобные средства написания, редактирования и отладки программ. К наиболее известным системам программирования относятся Turbo-Pascal, Turbo-C, Turbo-Basic, Quick Basic и др. Система программирования

Page 39: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

39

может рассматриваться как компилятор соответствующего языка, дополненный инструментальной оболочкой для быстрой разработки программ.

7.2. Запуск Турбо-Паскаля на выполнение Турбо-Паскаль – это многофайловая программа, состоящая из одного главного файла и

нескольких вспомогательных, подключаемых к работе по мере необходимости. Обычно все файлы, относящиеся к Турбо-Паскалю, хранятся на диске в каталоге под произвольным именем: Pascal, T_Pascal, TP55, TP70 и т.п. Файлы системы должны сохранять имена, данные им фирмой-разработчиком. Основные файлы, обеспечивающие работу Турбо-Паскаля, достаточно малы, что позволяет хранить их на одной дискете. Как минимум, требуются 2 файла – Turbo.exe и Turbo.tpl. Это базовый набор для разработки программ, не использующих графический режим. Для работы Турбо-Паскаля требуется не менее 512 Кбайт оперативной памяти.

Главный файл, TURBO.EXE, хранит ядро системы Турбо-Паскаль. Вспомогательный файл TURBO.TPL содержит резидентную библиотеку модулей.

Чтобы инициировать работу Турбо-Паскаля, надо запустить программу из файла Turbo.exe на выполнение. Это можно сделать, либо введя с клавиатуры имя TURBO в командной строке DOS, либо с помощью Norton Cоmmander'a. В последнем случае надо в текущем каталоге поместить курсор на имя файла Turbo.exe и нажать клавишу «Enter». При запуске Турбо-Паскаля, на экране появляется следующее изображение:

Вид основного экрана Турбо-Паскаля

Экран Турбо-Паскаля содержит 4 основные части, сверху вниз: • главное меню (File, Edit, Run, Compile, Options, Debug, Break/Watch); • окно редактирования (Edit) со служебной информацией редактора вверху; • окно просмотра (Watch) для отладки программ; • строку подсказки о назначении функциональных клавиш (F1..F10).

7.3. Назначение функциональных клавиш системы Турбо-Паскаль Функциональные клавиши, помеченные надписями F1...F10, занимают на клавиатуре

верхний ряд. С каждой из этих клавиш связана определенная команда, управляющая средой (например, считывание информации с диска или запись ее на диск). Поскольку число потребных команд может быть больше имеющегося количества функциональных клавиш, назначение F-клавиш можно разнообразить при помощи двух специальных клавиш: Alt (Alternative, дополнительная) и Ctrl (Control, управление). Клавиши Alt и Ctrl используются в

Page 40: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

40

сочетании с функциональными клавишами подобно клавишам смены регистра: сначала нужно нажать Alt или Ctrl, а затем, не отпуская ее, нажать нужную функциональную клавишу.

Функциональные клавиши имеют следующее назначение: F1 – вызов подсказки (справочной программы); F2 – запись текста редактируемой программы в текущий каталог, в файл под именем,

указанным в правом верхнем углу экрана редактора EDIT; F3 – загрузка (считывание) текста программы с дискового файла в окно редактора; F4 – выполнение программы от начала до строки, на которой расположен курсор; F5 – окно редактора раскрывается на весь экран (повторное нажатие возвращает исходное

изображение); F6 – меняет окно редактора EDIT на окно отладки WATCH; F7 – трассировка программы – при каждом повторном нажатии этой клавиши выполняется

очередная строка программы; если в этой строке есть обращение к процедуре или функции, то эта процедура или функция также будет выполнена строка за строкой по мере нажатия клавиши (режим трассировки используется для отладки составляемых программ);

F8 – то же, что и F7, но при выполнении процедуры последняя будет выполняться за один шаг, как строка;

F9 – компилировать программу, текст которой находится в окне редактирования, но не выполнять ее;

F10 – переход из окна редактирования в меню Турбо-Паскаля (меню занимает верхнюю строку экрана).

7.4. Работа с текстовым редактором Турбо-Паскаля При запуске Турбо-Паскаля, окно редактирования EDIT может быть заполнено чьей-либо

программой или рекламной заставкой. Для очистки окна от заставки достаточно нажать любую клавишу. Для очистки окна от текста чужой программы, надо:

• войти в меню, нажав F10; • выбрать клавишами управления курсором пункт меню «File» и нажать клавишу «Enter»; • в развернувшемся дополнительном меню выбрать клавишами управления курсором

пункт меню «New» и нажать «Enter»; окно EDIT очистится. Признак готовности редактора к работе - мигающий курсор в верхнем левом углу окна Edit.

Окно редактора имитирует длинный широкий лист бумаги, фрагмент которого виден в окне. Если курсор доходит до нижнего края окна, то лист «прокручивается» на строку вверх. Если курсор достиг правой границы окна, окно по мере ввода последующих символов будет смещаться вправо. В текстовом редакторе Турбо-Паскаля можно набирать текст строками не длиннее 245 символов.

Вертикальный размер листа с набираемым текстом ограничивается лишь общим количеством символов в тексте, которое должно быть не более 65535. Следует помнить, что компилятор Турбо-Паскаля воспринимает строки не длиннее 126 символов, поэтому при написании программы бессмысленно набирать строки длиной более 126 символов - все лишнее будет игнорироваться.

Текст можно набирать русскими либо латинскими буквами, в виде цифр и других символов, доступных на клавиатуре. Курсор указывает место на экране, куда будет помещен очередной символ. Для удаления предыдущего введенного символа используется клавиша "¬ " (Backspace). Если требуется удалить символ, расположенный над курсором, надо нажать клавишу "Delete" или "Del". Наряду с видимыми символами, в текст программы вставляются невидимые символы: пробел и EOL (End Of Line - признак окончания строки, находится в конце каждой строки). Невидимые символы, как и видимые, можно стирать или забивать другими символами. При стирании EOL соседние строки сливаются в одну. При вставке

Page 41: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

41

символа EOL в какую-либо строку, она делится на две строки. Невидимый символ EOL помещается в текст нажатием клавиши Enter.

Редактируя текст, можно полностью удалить строку, на которой находится курсор, нажав сочетание клавиш “Ctrl” и “Y”. Восстановить только что измененную строку можно, нажав сочетание клавиш “Ctrl”, “Q” и “L”.

Клавиши перемещения курсора

• переместить курсор на символ влево- клавиша "стрелка влево"; • на символ вправо- "стрелка вправо"; • на строку вверх- "стрелка вверх"; • на строку вниз- "стрелка вниз"; • в начало строки- клавиша "Home"; • в конец строки- клавиша "End"; • на страницу вверх - клавиша "Page Up"; • на страницу вниз - клавиша "Page Down"; • в начало текста - сочетание клавиш “Ctrl” и “Page Up”; • в конец текста - сочетание клавиш “Ctrl” и “Page Down”.

Работа с блоками текста

Редактор Турбо-Паскаля позволяет оперировать кусками (блоками) текста: копировать, удалять их, перемещать и т.п. Прежде чем манипулировать с блоком, его сначала надо выделить. Блок выделяется:

• курсор помещается в начало выделяемого участка текста, затем нажимается сочетание клавиш “Ctrl”, “K”, “B”;

• затем курсор помещается в конец выделяемого текста и нажимается сочетание клавиш “Ctrl”, “K”, “K”.

Намеченный участок текста будет выделен инверсным изображением (темные буквы на светлом фоне). Чтобы отменить выделение блока, следует нажать “Ctrl”, “K”, “H”. После того, как блок выделен, с ним можно выполнять ряд операций:

1. Копирование блока Поместить курсор туда, куда следует скопировать блок, нажать “Ctrl”, “K”, “C”; 2. Перемещение блока Поместить курсор в то место программы, куда следует перенести блок, нажать “Ctrl”, “K”,

“V”; 3. Удаление блока Независимо от местоположения курсора, для удаления выделенного блока надо нажать

“Ctrl”, “K”, “Y”; Поместить курсор в нужное место текста, нажать “Ctrl”, “K”, “R”, после чего последует

запрос об имени файла; когда имя будет указано, содержимое файла поместится в то место программы, где стоял курсор.

Основные клавиши работы с Турбо-Паскалем: F10 – начать работу с главным меню; ESC – выйти из меню обратно в окно EDIT; F2 – записать текст программы из окна EDIT в дисковый файл; F3 – загрузить текст из дискового файла в окно редактора; Ctrl/F9 (то есть одновременное нажатие клавиш “Ctrl” и “F9”) – компилировать программу в

оперативной памяти, после чего запустить программу на выполнение; Alt/X – завершить работу с Турбо-Паскалем, выйти в DOS;

Page 42: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

42

Alt/F5 – переход в окно пользователя, повторное нажатие этих клавиш вернет окно EDIT. Окно пользователя (User Screen) – окно, в котором выполняется составленная

пользователем программа. По завершению программы, на экране моментально высвечивается окно EDIT, которое закрывает собой User Screen с выведенными на него результатами расчета. Чтобы иметь возможность детально ознакомиться с результатами работы программы, нажимаем Alt/F5. После этого окно EDIT с текстом программы исчезнет, его заменит изображение экрана с результатами расчета. Повторное нажатие Alt/F5 вернет на экран текст программы.

8. Основы алгоритмизации

8.1. Алгоритм

Понятие алгоритма такое же основополагающее для информатики, как и понятие информации. Название "алгоритм" произошло от латинской формы имени величайшего среднеазиатского математика Мухаммеда ибн Муса ал-Хорезми (Alhorithmi), жившего в 783—850 гг. В своей книге "Об индийском счете" он изложил правила записи натуральных чисел с помощью арабских цифр и правила действий над ними "столбиком", знакомые теперь каждому школьнику. В XII веке эта книга была переведена на латынь и получила широкое распространение в Европе.

Алгоритм – подробное описание последовательности действий, позволяющих решить конкретную задачу. Элементарные действия, на которые разбивается алгоритм, называются инструкциями или командами.

Основными свойствами алгоритма являются: • дискретность — представление алгоритма в виде последовательности шагов; • массовость — применимость алгоритма к некоторому множеству исходных данных; • определенность — за конечное число шагов либо должен быть получен результат, либо

доказано его отсутствие; • однозначность — при повторном применении алгоритма к тем же исходным данным

должен быть получен тот же результат. На практике наиболее распространены следующие формы представления алгоритмов: • словесная (запись на естественном языке); • графическая (изображения из графических символов); • псевдокоды ( описания алгоритмов на условном алгоритмическом языке, включающие в

себя как элементы языка программирования, так и фразы естественного языка, общепринятые математические обозначения и др.);

• программная (тексты на языках программирования). При графическом представлении алгоритм изображается в виде последовательности

связанных между собой функциональных блоков, каждый из которых соответствует выполнению одного или нескольких действий.

Такое графическое представление называется схемой алгоритма или блок-схемой. В блок-схеме каждому типу действий (вводу исходных данных, вычислению значений выражений, проверке условий, управлению повторением действий, окончанию обработки и т.п.) соответствует геометрическая фигура. Блоки соединяются линиями переходов, определяющими очередность выполнения действий. В таблице приведены основные блоки.

Блок Назначение

Page 43: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

43

Начало, конец алгоритма

Ввод значений переменных с клавиатуры

Блок действий, присвоение переменным вычислительных значений

Проверка условия и выбор одного из двух возможных путей дальнейшего

решения

Блок цикла

Обращение к подпрограмме

Вывод результатов на печать

Алгоритмы можно представлять как некоторые структуры, состоящие из отдельных блоков.

Логическая структура любого алгоритма может быть представлена комбинацией трех базовых структур: следование, ветвление, цикл. Характерной особенностью базовых структур является наличие в них одного входа и одного выхода. При разработке блок-схемы допускается делать любые записи внутри блоков, однако эти записи должны содержать достаточно информации для выполнения очередных действий.

8.2. Алгоритмические структуры Следование – действия выполняются строго в том порядке, в котором записаны. Образуется

последовательностью действий, следующих одно за другим. Задача.

Вычислить и вывести значение функции )(cos4 2 xay π= . Исходные данные x и а ввести с клавиатуры.

Page 44: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

44

у

а,х

начало

y:=4*cos2(a*π*x)

конец

Ветвления – в зависимости от справедливости проверяемого условия (да или нет), алгоритм может пойти по одной из двух возможных ветвей. Происходит выбор одного из альтернативных путей работы алгоритма. Каждый из путей ведет к общему выходу, так что работа алгоритма будет продолжаться независимо от того, какой путь будет выбран.

Задача. Даны два действительных числа. Заменить первое число нулем, если оно меньше или равно

второму, и удвоить числа в противном случае.

a,b

a,b

начало

a:=0

конец

a<=b

a:=a*2b:=b*2

да

нет

Циклы – действия повторяются многократно по одним и тем же математическим

зависимостям. Обеспечивает многократное выполнение некоторой совокупности действий, которая называется телом цикла.

Циклические структуры бывают трех типов: с параметром цикла - выполнять тело цикла для всех значений некоторой переменной

(параметра цикла) в заданном диапазоне; с предусловием - выполнять тело цикла до тех пор, пока выполняется условие; с постусловием - выполнять тело цикла до тех пор, пока не выполнится условие. Задача.

Page 45: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

45

Составить программу расчета значений функции )2cos( xхy π= на интервале [a;b] в n равностоящих точках. Границы интервала и количество точек ввести с клавиатуры.

Представлены три блок-схемы: а) с параметром цикла;

x,y

a,b,n

начало

y:=x*sin(2*pi*x)

конец

dx:=(b-a)/(n-1)x:=a

i:=1 to n

x:=x+dx

б) с предусловием;

x,y

a,b,n

начало

y:=x*sin(2*pi*x))

конец

dx:=(b-a)/(n-1) x:=a

x:=x+dx

x<=b

да

нет

в) с постусловием;

Page 46: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

46

x,y

a,b,n

начало

y:=x*sin(2*pi*x)

конец

dx:=(b-a)/(n-1) x:=a

x:=x+dx

x>bда

нет

Циклические вычислительные процессы могут быть вложенной структуры, когда один цикл

(внешний) содержит внутри себя еще один (внутренний). Во вложенных структурах соблюдается следующее правило – параметр внешнего цикла меняется медленнее параметра внутреннего. При одном значении параметра внешнего цикла параметр внутреннего пробегает все свои возможные значения.

Задача. Вывести на экран таблицу умножения.

i:=1 to 9

j:=1 to 9

i*j

начало

конец

Самоконтроль 1. Что понимают под алгоритмом? 2. Каковы способы записи алгоритмов? 3. В чем заключаются основные свойства алгоритма? 4. Перечислите основные алгоритмические структуры и опишите их.

Page 47: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

47

5. Каковы основные принципы разработки алгоритмов? 6. Назовите основные этапы составления алгоритмов.

9. Программирование на языке Pascal Программа - это запись алгоритма на языке программирования, приводящая к конечному

результату за конечное число шагов. Этапы создания программного продукта: • постановка задачи; • разработка алгоритма; • запись алгоритма на языке программирования; • отладка и тестирование программы. Программа — это детальное и законченное описание алгоритма средствами языка

программирования. Исполнителем программы является компьютер. Для выполнения компьютером программа должна быть представлена в машинном коде — последовательности чисел, понимаемых процессором. Написать программу в машинных кодах вручную достаточно сложно. Поэтому сегодня практически все программы создаются с помощью языков программирования, которые по своему синтаксису и семантике приближены к естественному человеческому языку. Это снижает трудоемкость программирования. Однако, текст программы, записанный с помощью языка программирования, должен быть преобразован в машинный код. Эта операция выполняется автоматически с помощью специальной служебной программы, называемой транслятором.

Алгоритмический язык Паскаль был разработан швейцарским ученым Никлаусом Виртом в начале 70-х годов специально для целей обучения.

Основные элементы программирования: • ввод информации; • хранение информации; • команды обработки (операции); • вывод данных; • проверка условий; • повторные выполнения (циклы); • подпрограммы (процедуры).

9.1. Алфавит языка Программа на Паскале записывается в виде последовательности символов, образующих

алфавит языка. Алфавит включает: • заглавные и прописные латинские буквы; • арабские цифры; • знаки препинания ( : ; , . ); • знаки операций; • некоторые спецсимволы.

Page 48: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

48

9.2. Арифметические выражения и правила их записи Арифметические выражения строятся из простых операндов связанных знаками

арифметических операций:

y = a + b*2

Знаки операций

div – деление нацело; mod – остаток от деления; * - умножение; / - деление; - - вычитание; + - сложение.

Операции div и mod

Целочисленное деление div отличается от обычной операции деления тем, что возвращает целую часть частного, а дробная часть отбрасывается.

Например: 17 div 3 = 5 8 div 2 = 4 1 div 5 = 0 Взятие остатка от деления mod вычисляет остаток, полученный при выполнении

целочисленного деления. Например: 17 mod 3 = 2 8 mod 2 = 0 1 mod 5 = 1 При выполнении арифметических операций соблюдаются следующие правила: 1. два знака не могут следовать один за другим; 2. при выполнении арифметических операций соблюдается следующая иерархия (приоритет

выполнения): • стандартные функции; • div, mod; • *, / • +, - 3. изменить иерархию можно с помощью скобок.

9.3. Типы данных Переменные на языке Паскаль задаются своими именами (63 символа). Имена переменных могут содержать малые и большие буквы латинского алфавита, арабские

цифры и знак подчеркивания. Переменные, используемые в программе, обязательно должны

Page 49: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

49

быть описаны. При описании переменных задаются имена и типы переменных. Тип – определяет объем оперативной памяти, выделяемой под хранение переменной. Для описания стандартных типов переменных используют зарезервированные английские слова. Помимо стандартных типов, можно строить и пользовательские типы данных, которые базируются только на стандартных типах.

Паскаль производит предварительную, инициализацию переменных. Все переменные, описанные в программе, обнуляются.

Целые типы

Название целого типа

Диапазон значений

Память (байт)

Shortint (короткие целые)

-128 ÷ 127 1

Longint (удвоенные целые0

-231÷ 231-1 4

Integer (обычные целые)

-32768÷ 32767 2

word (целые положительные)

0÷ 65535 2

Byte (целые короткие положител.)

0÷ 255 2

Верхнее граничное значение целочисленных переменных задано в Паскале как константа и имеет соответствующее имя:

Maxint = 32767 (215-1) Maxlongint = 231-1

Логический тип

boolean - логические переменные занимают 1 байт памяти, могут принимать 2 значения: • True (истина) • False (ложь) Логические переменные могут использоваться только в логических выражениях. Над данными логического типа нельзя выполнять обычные арифметические операции, для

них определены логические операции и операции сравнения. Для идентификаторов имеет место: True> False Над логическими переменными возможны следующие логические операции: and (и) Or (или) not (не)

Page 50: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

50

Символьный тип

Char – символьные переменные, служат для хранения одного символа (буква, цифра, знаки препинания, специальные символы, непосредственно код) и занимают 1 байт памяти.

Строковый тип

String - строковые переменные, служат для хранения любой цепочки символов и занимают 255 байт памяти.

Вещественный тип

real - вещественные переменные, занимают 6 байт памяти (11 знаков после запятой). Вещественные числа могут быть заданы в форме: • с фиксированной точкой 0.5 +5.0 -133.15 • с плавающей точкой 3.5 Е 2 0.45 Е -3 Форма с плавающей точкой используется для изображения очень больших или очень

маленьких чисел.

9.4. Стандартные функции

Имя функции Математическая запись Тип результата sin (x) sin x вещ. cos (x) cos x вещ. arctg(x) аrctgx вещ. exp (x) ex вещ. ln (x) ln x вещ.

pi 3.14 вещ. abs (x) │x│ вещ. sqr (x) x2 вещ. sqrt (x) x вещ.

trunc (x) ближайшее наименьшее целое число Цел.

int (x) целая часть числа цел.

round (x) ближайшее целое число (математическое округление) цел.

frag (x) дробная часть числа вещ.

random (x) генератор случайных чисел от 0 до

x; если x - отсутствует диапазон чисел 0÷ 1

вещ.

odd (x) возвращает TRUE, если x - число нечетное лог.

Например: trunс(3.7) = 3 trunc(3.1) = 3

Page 51: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

51

trunc(-3.7) = -4 int (3.4) = 3 int (3.7) = 3 int (-3.4) = -3 round (3.14) = 3 round (3.74) = 4 round (-3.14) = -3 Аргументом стандартной функции может быть переменная, константа, выражение, стоящее

справа от имени в скобках. Для тригонометрических функций аргумент задается в радианах. При написании формул в программе на Паскале необходимо учитывать все правила записи

арифметических выражений. Например:

aacbbx

242 −+−

=

Данное выражение в программе на языке Паскаль будет выглядеть: x: = ( -b + sqrt(sqr(b)–4*a*c) )/( 2*a ) ; Паскаль не допускает смешенных выражений. Допустимы выражения, в которых слева от

знака присваивания – вещественная переменная, справа - целое выражение. Если в выражении есть хотя бы одна вещественная переменная, все выражение будет

вещественным. Некоторые полезные формулы Формула возведения числа в любую степень: ax =ex*ln (a)= exp(x*ln(a)) Формула перевода числа из градусов в радианы: xрад = xo * pi/180

9.5. Структура программы на языке Паскаль Программа – это последовательность инструкций компьютеру приводящих к конечному

результату за конечное число шагов. Программа, написанная на алгоритмическом языке, переводится на язык машинных команд: program <имя>; <описательная часть>; <раздел функций и процедур>; begin <исполнительная часть>;

Page 52: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

52

end. Зарезервированные слова: • program <имя>– необязательная строка; • begin – начало; • end – конец. <имя> - присваивается составителем программы (строится по правилам составления

переменных).

9.6. Описательная часть программы Все переменные, используемые в программе, должны быть описаны. Описание начинается со служебного слова var. program ff; var i,n: integer; x,y,z: real; begin; ... Список переменных от типа отделяется “:”, одно описание от другого - “;”, список

переменных перечисляется через “,”. Если в программе используются метки, то они описываются с помощью служебного слова label. Метки могут быть числовые и символьные.

В программах на Паскале можно использовать константы, которые описываются с помощью служебного слова const.

const n=100; … Переменная-константа (n), более в программе не описывается, ее тип определяется

присвоенным ей числовым значением. Для определения пользовательского типа данных используют служебное слово - type. type in=integer; var a,b: in; … С помощью служебного слова uses можно подключать к программе стандартные

библиотечные модули. Стандартные модули объединяют функции определенного назначения и, в случае необходимости, подключаются к программе.

Например, для использования функции очистки экрана (clrscr), к программе подключают стандартный модуль crt.

uses crt;

Page 53: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

53

9.7. Исполнительная часть программы Выполнение программы начинается именно с исполнительной части. Отдельные инструкции, входящие в программу, называются операторами. Операторы

отделяются один от другого – “;”. Операторы бывают трех типов: пустой оператор; простой оператор; составной оператор. Структура составного оператора: begin <оператор 1>; <оператор 2>; …<оператор N>; end;

9.8. Оператор присваивания <переменная> : = <выражения>; где “: =” – знак присваивания. Следующие выражения читаются одинаково x:=2; x:= 2; y:=d+beta; y:=d+Beta; Заглавные и прописные буквы в программе интерпретируются одинаково.

9.9. Операторы ввода-вывода

Оператор ввода

readln (<список ввода>); где readln - имя оператора ввода; <список - ввода> - список имен переменных, разделенных запятыми. Например: readln (a,b,c); По данному оператору с клавиатуры необходимо ввести значения переменных a, b и c. readln ; По этому оператору компьютер ожидает нажатия любой клавиши. Используется как

последний в программе, чтобы успеть записать результаты вычислений.

Оператор вывода

writeln (<список - вывода>); где writeln - имя оператора вывода;

Page 54: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

54

<список - вывода> - список переменных вывода, разделенных запятыми. writeln ; Оператор writeln без списка вывода можно использовать для пропуска пустых строк при

оформлении вывода результатов. В операторе writeln можно использовать формат вывода значений переменных. Например: writeln ( ’ a = ’, a:8:3, ’ b = ’ , b:4); Первая цифра (8) после имени переменной вещественного типа определяет количество

позиций, выделенных под число, включая знак и десятичную точку, а вторая цифра (3) определяет количество позиций выделенных под дробную часть числа. Цифра, стоящая после имени переменной целого типа, определяет количество позиций, отводимых под число, включая знак.

При a =341.154 , b = 2 результат на экране будет выглядеть: a = 341.154 b = 2 При a = 1.3 , b = 144 результат на экране будет выглядеть: a = 1.300 b =144

9.10. Комментарии в программе В любом месте программы можно записать пояснительный текст – комментарий. Он не

обрабатывается во время выполнения программы. Текст комментария ограничен символами { }. … { Пояснения к программе - комментарии } … Комментарии удобно использовать в программе при отладке для временного исключения

группы операторов, заключив их в фигурные скобки. Задача. Даны два целых числа. Найти их полусумму и произведение. рrogram primer; uses crt; var a, b,p: integer; s: real; begin сlrscr; { функция очистки экрана} {вывод сообщения на экран} writeln (’ введите a, b ’); {ввод данных с клавиатуры } readln ( a, b);

Page 55: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

55

s: = (a + b)/2; p: = a*b; вывод результатов } writeln (’ s = ’, x:8:3, ’ ’, ’p = ’, y:4); readln; end. Ключевые слова горят ярче, чем остальной текст программы.

Самоконтроль 1. Что такое программа? 2. Какие символы могут содержать имена переменных? 3. Какие типы стандартные переменных допустимы на языке Паскаль? 4. Сколько байт памяти занимают переменные типа real ? 5. Из каких частей состоит структура программы на Паскале. 6. Что определяет объем памяти, отводимой под каждую переменную? 7. Что такое оператор? 8. Какие типы операторов допустимы на Паскале? 9. Как операторы отделяются друг от друга? 10. Для чего используются комментарии в программе?

Задание • ответить на вопросы самоконтроля; • выполнить практическое задание №3, используя пример программы линейной

структуры. Задание выбрать из таблицы по номеру варианта (Приложение 1).

Пример программы линейной структуры Задача. Математическая формулировка задачи: Вычислить и вывести на печать значение функции y.

Исходные данные x, a и b ввести с клавиатуры.

xabbay

cos12)2( ×+×+=

1. Таблица идентификаторов.

№ Наименование переменной Обозначения в программе 1 Функция y 2 Аргумент x 3 Переменная 1 a 4 Переменная 2 b

Page 56: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

56

2. Листинг программы. рrogram lab1; uses crt; var a, b: integer; y,x: real; begin {оператор очистки экрана} сlrscr; {вывод сообщения на экран} writeln (’ введите x,a, b ’); {ввод данных с клавиатуры } readln ( x,a, b); y:=(a+2*b)*sqrt(a+2*b)*(1/cos(x)); {вывод результатов вычисления} writeln (’ y=’, y:8:3); readln; end. 3. Результаты вычислений.

Приложение 1. Таблица вариантов задания №2 Вычислить и вывести на печать значение функции Y. Исходные

данные x, a и b ввести с клавиатуры.

1 babax

y ×+⎟⎠⎞

⎜⎝⎛ +=sin

1

2 1 1

11

1a a a n+

++ +

+ −( ). . .

( )

3 bax

aey a +×+×= ))sin(

1(

4 ex

abyb−

×+×=1)

)sin(1(ln

5 tgxabay b ××+= +1)(

6 bbatgxy )( +

×=

7 )()ln()cos(

1 baabx

y +×+×=

Page 57: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

57

8 )ln()sin(

1 baexy b +××= −

9 )ln()1( baatgxy b +××= +

10 ebax

aby b−×+×+= ))cos(

(

11 bx

bay lnsin

1)( ××+=

12 etgxbay b××+×+= )2()1( 13 eabtgxay b−×+×+= )ln()(

14 x

abbaycos

12)2( ×+×+=

15 e

tgxbaya−

××+=1)(

16 bxaxy)(

2sin+

17 )4sin()1( xey ab π×−= −

18 xeby a π2sin22 ××= −

19 )2cos()1( 5.0 xeby a π×−= −

20 exxy ab−××−= )2cos()2sin1( ππ 21 )(cos4 25.0 xaey b π××= −

22 a

xyb+

=1

2sin π

23 eabtgxay b−×+×+= )ln()(

24 bax

aey a +×+×= ))sin(

1(

25 )ln()sin(

1 baexy b +××= −

10. Ветвления Очень часто встречаются ситуации, когда требуется выбрать между двумя или более

вариантами действий в зависимости от заданного условия. Такая алгоритмическая конструкция называется ветвлением.

Page 58: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

58

10.1. Операторы условия и перехода Строки программы на Паскале не нумеруются. Отдельные строки в программе могут иметь

метки, к которым можно переходить. Метки должны быть описаны в программы с помощью ключевого слова label N1, N2 … ; где N1, N2, … - метки. Метками могут быть идентификаторы или целые числа (положительные) в диапазоне

0÷9999. Оператор перехода по метке: goto N; Где N - метка. Фрагмент программы с использованием меток: program pr; label 3; var x, y: real; begin 3: readln (x, y); ... go to 3; ... end.

Логический оператор

if < условия > then P1 [else P2 ]; (если ) (то ) (иначе) [ else P2 ] - не обязательная часть оператора. Где <условие> - логическое выражение; P1, P2 - простые или составные операторы. По этому оператору: если <условие> - "истинно" (true), то выполняется P1, если - " ложно" (false), то выполняется

P2. Перед структурой else «;» - не ставится. Если else - отсутствует и <условие> - "ложно", то управление передается следующему

оператору. Приведем примеры использования оператора: 1. наибольшее из значений двух переменных вывести на печать:

Page 59: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

59

if a>b then writeln(‘a=’,a) else writeln(‘ b=’,b); 2. в зависимости от значения переменной, вычислить значение функции по одной из

формул: If x>=0 then y:= sin(x) else y:= - sin(x); 3. в зависимости от значения переменной, выполнить определенные действия: if a<0 then begin b:=2*a; writeln(b); end else begin b:=a/2; goto 3; end;

Операции отношения

Операция Название

= Равно <> Не равно > Больше < Меньше >= Больше или равно <= Меньше или равно

Логические операции

Операция Название and И or Или

В операторе if можно одновременно проверять несколько условий. Например: if (a>b)and(a>c) then writeln(’a - max’); При проверке нескольких условий в одном операторе, каждое условие записывается в

скобках. Паскаль допускает вложенность операторов if. Например: if n>0 then

Page 60: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

60

if (m div n)>n then m: = m - n else m: = m + n; Структура else - всегда относится к ближайшему оператору if. Если n>0 и (m div n)>n - будет выполнено m: = m-n. Если n>0, но (m div n)≤n - будет выполнено m: = m + n. Если n≤0 - переход к следующему оператору. Задача. Найти максимальное число из трех вещественных чисел. program max; var a, b, c: real; begin writeln (’введите a, b, c’); readln (a, b, c); if a>=b then if a>=c then writeln (’max - a’) else writeln (’max - c’) else if b<=c then writeln (’max - b’) else writeln (’max - c’) ; readln; end. Второй способ решения этой задачи: program max_1; var a, b, c: real; begin writeln (’введите a, b, c’); readln (a, b, c); if (a>=b) and (a>=c) then writeln (’max-a’); if (b>=a) and (b>=c) then writeln (’max-b’); if (c>=a) and (c>=b) then writeln (’max-c’); readln; end. Если a=b=c - то все три оператора if будут выполнены.

10.2. Оператор выбора Этот оператор предназначен для замены конструкций из вложенных if. Структура: case N of

Page 61: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

61

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 - интервал задается начальными и конечными значениями через «..».

Самоконтроль 1. Какие алгоритмические конструкции называются ветвлениями? 2. Для чего используют оператор goto ? 3. Почему при использовании нескольких условий в одном операторе if … then … else,

каждое условие заключается в круглые скобки? 4. Перечислите основные логические операции. 5. Перечислите основные операции отношения. 6. В каких случаях прибегают к использованию оператора case … of ?

Задание • ответить на вопросы самоконтроля; • выполнить практическое задание №4, используя пример программы разветвленной

структуры. Задание выбрать из таблицы по номеру варианта (Приложение 1).

Page 62: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

62

Пример программы разветвленной структуры Задача. 1. Вычислить значение функции:

y=⎩⎨⎧

≤<<

0,0900,sin

xxx

Значение аргумента х в градусах ввести с клавиатуры. 2. Таблица идентификаторов

№ Наименование переменной Обозначения в программе 1 Функция y 2 Аргумент x

3. Листинг программы. program lab2; uses crt; var x, y: real; begin clrscr; writeln (’Введите x’); readln (x); if x>90 then writeln(’функция не определена’) else {составной оператор} begin if x<0 then y: = 0 else y: = sin (x*pi/180); writeln (’y = ’,y:8:3); end; readln; end. 4. Результаты вычислений.

Приложение 1. Таблица вариантов задания 3

Вариант Задание

1 Переменной k присвоить номер четверти плоскости, в которой находится точка с координатами x и y (xy=0).

Page 63: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

63

2 Если сумма трех попарно различных действительных чисел x, y, z меньше единицы, то заменить меньшее из x и y полусуммой двух других, в противном случае уменьшить все числа в 5 раз.

3 Даны три действительных числа. Выбрать из них те, которые принадлежат интервалу (1, 3).

4 Написать программу, которая выбирает наименьшее из четырех заданных чисел.

Даны три действительных числа. Возвести в квадрат те из них, значения которых неотрицательны.

6 Даны действительные числа х, у, и z. Вычислить max (x + y + z, xyz).

7 Поменять местами значения переменных a, b, c не равных между собой таким образом, чтобы а > b > c.

8 Меньшее из двух значений переменных вещественного типа заменить нулем, а в случае их равенства – заменить нулями оба.

9

Если сумма двух попарно различных действительных чисел x, y, z меньше единицы, то наименьшее из этих трех чисел заменить полусуммой двух других, в противном случае возвести все числа в квадрат.

10 Наибольшее из трех различных значений переменных целого типа х, у и z уменьшить на 3.

11 Даны два действительных числа, не равных между собой. Меньшее из них заменить их полусуммой.

12 Если значение ω не равно 0 и при этом котангенс от ω меньше 0.5, тогда поменять знак у ω, а если значение равно 0, тогда присвоить ω значение 1.

13 Даны действительные числа х, у и z. Получить min (x,y,z).

14 Две точки плоскости заданы своими координатами. Определить, лежат ли они в одной или разных координатных плоскостях.

15 Даны действительные числа х, у, и z. Вычислить min2 (x + y + z / 2, xyz) +1.

16 Даны действительные числа a, b, c. Удвоить эти числа, если a > b > c, и заменить их абсолютными значениями, если это не так.

17 Известно, что из четырех чисел одно отлично от трех других, равных между собой. Присвоить номер этого числа переменной n.

18 Написать программу, которая выбирает наибольшее из четырех заданных чисел.

19

Даны действительные числа x и y. если x и y отрицательны, то каждое значение заменить его модулем; если отрицательно только одно из них, то оба значения увеличить на 0.5, в противном случае извлечь из каждого квадратный корень.

20 Две точки плоскости заданы своими координатами. Определить, лежат ли они в одной (распечатать ее номер) или разных координатных четвертях.

21 Даны два действительных числа. Заменить первое число нулем, если оно меньше или равно второму, и удвоить оба числа в противном случае.

22 Даны действительные числа a, b, c, d. Если a < b < c < d, то каждое число заменить небольшим из них; если a > b > c > d, то числа

Page 64: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

64

оставить без изменения; в противном случае все числа заменить их квадратами.

23 Даны действительные числа х, у и z. Получить min (x,y,z).

24 Даны три действительных числа. Выбрать из них те, которые принадлежат интервалу (1, 3).

25 Меньшее из двух значений переменных вещественного типа заменить нулем, а в случае их равенства – заменить нулями оба.

11. Циклические вычислительные процессы

11.1. Оператор цикла с параметром Процессы, в которых ряд действий повторяются многократно по одним и тем же

математическим зависимостям, называются циклическими. При организации циклов необходимо: • определить параметр цикла и его начальное значение; • изменять значение параметра цикла на каждом шаге итерации; • организовать проверку на выход из цикла. 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;

Page 65: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

65

Writeln (' сумма = ', sum); end. Оператор for применяют в тех случаях, когда значения параметра цикла целые и меняются с

шагом +1, -1.

11.2. Оператор цикла с постусловием repeat p1;p2 ;…pn ; until <условие>; где p1; p2 ; … pn ; - любые операторы, образующие тело цикла. По этому оператору выполняется «тело цикла», а затем проверяется <условие>, если оно не

выполнилось, цикл повторяется. И так до тех пор, пока <условие> не будет выполнено. Необходимо помнить: если <условие> выполнилось c первого раза, цикл будет пройден один раз.

Задача. Вычислить значение функции:

y = a sin (x ) , При x = 1.0 , с шагом 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 перечисленные действия выполняются автоматически. В

остальных операторах цикла эти действия необходимо организовать составителю программы.

11.3. Оператор цикла с предусловием while <условие> do P; Где P - простой или составной оператор.

Page 66: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

66

По этому оператору проверяется <условие> и, если оно выполняется, то выполняется - P, после чего опять проверяется <условие> и т. д.

Итак, P выполняется до тех пор, пока выполняется <условие>. Если условие ни разу не выполнилось, P игнорируется, управление передается следующему

оператору. Задача. Вычислить сумму ряда:

1sin sin 2 sin 3 sin... ( 1 )1! 2! 3! !

nx x x nxyn

+= − + − + −

где n! = 1*2*…*n Значение аргумента х и количество итераций n ввести с клавиатуры. Введем дополнительную переменную для вычисления n! – f. program cikl_2; uses 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.

11.4. Вложенные циклы В теле любого оператора цикла могут находиться другие операторы цикла. При этом цикл,

содержащий в себе другой, называется внешним, а цикл, находящийся в теле первого, - называется внутренним (вложенным). Правила организации внешнего и внутреннего циклов такие же, как и для простых циклов.

Рассмотрим задачу вывода на экран таблицы умножения, решение которой предполагает использование вложенных циклов.

var i,j : byte; begin writeln(‘ Таблица умножения ’); for i:=1 to 9 do

Page 67: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

67

begin for j:=1 to 9 do writeln( i , ‘ * ‘ , j ,‘ = ’, i*j ); writeln; end; readln; end. При организации вложенных циклов необходимо помнить, что параметр внешнего цикла

меняется медленнее, чем параметр внутреннего. При одном значении параметра внешнего цикла параметр внутреннего – пробегает все свои возможные значения.

11.5. Оператор прерывания цикла Для досрочного прерывания цикла можно использовать оператор goto или стандартную

процедуру break. Рассмотрим фрагмент: … for i:=1 to n do begin p:=p* i; if p>100 then break ; writeln(‘p=’, p); end; … Цикл будет прерван при достижении условия p>100 по процедуре break.

Самоконтроль 1. Что такое цикл? 2. Какие циклы можно организовать на языке Паскаль? 3. В каких случаях предпочтительней использовать оператор for …to … do для

организации циклов? 4. Какой тип должна иметь переменная, которая является параметром цикла в операторе for

…to … do ? 5. Сколько циклов будет пройдено, если в операторе while … do условие не выполнилось с

первого раза? 6. Сколько циклов будет пройдено, если в операторе repeat … until условие выполнилось с

первого раза? 7. Что такое вложенные циклы? 8. Как можно досрочно прервать цикл?

Задание • ответить на вопросы самоконтроля; • выполнить практическое задание №5, используя пример программы циклической

структуры. Задание выбрать из таблицы по номеру варианта (Приложение 1).

Page 68: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

68

Пример программы циклической структуры Задача. 1. Формулировка задачи: Составить программу расчета таблицы значений функции f(x) на интервале a<=x<=b в n

равностоящих точках. Границы интервала a,b и количество точек n ввести с клавиатуры. Результаты вывести на печать.

)4sin()1()( xexf x π×−= −

Найти сумму положительных значений функции f(x) на заданном интервале. Формула для расчета шага изменения аргумента:

dx = (b-a)/(n-1) 2. Таблица идентификаторов

№ Наименование переменной Обозначения в программе 1 Функция y 2 Аргумент x 3 Количество точек n 4 Начальное значение x a 5 Конечное значение x b 6 Шаг изменения аргумента dx 7 Сумма s

3. Листинг программы program cikl_3; uses ctr; var y,x,a,b,dx,s : real; I,n : integer; begin clrscr; writeln(‘Введите a,b,n’); readln(a,b,n); { шаг изменения аргумента} dx:=(b-a)/(n-1); s:=0; x:=a; for i:=1 to n do begin y:=(1-exp(-x)) * sin(4*pi*x); writeln(‘y=’,y:8:3);

Page 69: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

69

x:=x+dx; if y>0 then s:=s+y; end; writeln(‘Сумма положительных значений s=’,s:8:3); readln; end. 4. Результаты вычислений.

Приложение 1. Таблица вариантов задания 4

Выбрать функцию по варианту из таблицы. Составить программу расчета таблицы значений функции f(x) на интервале a<=x<=b в n равностоящих точках. Границы интервала a, b и количество точек n ввести с клавиатуры. Результаты вывести на печать. Вариант Функция

1 )2cos()1(5)( 5.0 xexf x π×−×= −

Найти сумму всех положительных значений функции f(x) в расчетных точках.

2 )cos(4)( 5.0 xexf x π××= −

Найти сумму всех отрицательных значений функции f(x) в заданном интервале.

3 )sin(5)( 5.0 xexf x π××= −

Найти произведение вычисленных значений функции f(x), целая часть которых кратна 2.

4 )4sin()1()( xexf x π×−= −

Найти среднее арифметическое положительных значений функции f(x).

5 )2sin(1)( xxf π+=

Найти количество положительных значений функции f(x) на заданном интервале.

6 )cos(4)( 5.0 xexf x π××= −

Найти произведение всех отрицательных значений функции f(x) на заданном интервале.

7 )2cos()1(5)( 5.0 xexf x π×−×= −

Найти произведение всех положительных значений функции f(x) на заданном интервале.

8 )4sin()1()( xexf x π×−= −

Найти сумму вычисленных значений функции f(x), целая часть которых кратна 2.

Page 70: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

70

9 xxxf

++=

12sin1)( π

Найти среднее арифметическое отрицательных значений функции f(x).

10 x

xxf21

)4cos()(+

Найти сумму вычисленных значений функции f(x), дробная часть которых > 0.5 .

11 )2sin(1)( xxf π+=

Найти количество положительных значений функции f(x).

12 xxxf

21)4cos()(

+=

π

Найти сумму вычисленных значений функции f(x), дробная часть которых < 0.5

13 )2cos()1(5)( 5.0 xexf x π×−×= −

Найти произведение вычисленных значений функции f(x), абсолютные значения которых > 1.

14 )2cos()1(5)( 5.0 xexf x π×−×= −

Найти сумму вычисленных значений функции f(x).

15 xxxf21

4sin)(+

Найти произведение вычисленных значений функции f(x).

16 xxxf

+=

12sin)( π

Найти произведение вычисленных значений функции f(x), дробная часть которых < 0.5

17 xxxf

214cos)(+

Найти сумму вычисленных значений функции f(x), дробная часть которых > 0.5

18 )(cos)( 25.0 xexf x π×= −

Найти количество положительных значений функции f(x), на заданном интервале.

19 )(cos)( 25.0 xexf x π×= −

Найти количество значений функции f(x), абсолютная величина целой части которых > 1.

20 )2sin()( 2 xexf x π×= −

Найти наибольшее значение функции f(x), на заданном интервале.

Page 71: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

71

21 )2sin()( xxxf π⋅=

Найти среднее значение функции f(x).

22 )cos()sin()( xxxf ππ ×=

Найти сумму значений функции f(x), абсолютная величина целой части которых < 1.

23 )2cos()1()( 5.0 xexf x π×−= −

Найти произведение вычисленных значений функции f(x), абсолютные значения которых >1.

24 )sin(5)( 5.0 xexf x π××= −

Найти произведение вычисленных значений функции f(x), целая часть которых кратна 2.

25 )4sin()1()( xexf x π×−= −

Найти наименьшее значений функции f(x) на заданном интервале.

12. Операции с индексированными переменными

12.1. Массивы одномерные Массив – это поименованный набор однотипной информации. Массив объединяет элементы одного типа данных. Всему набору данных присваивают

общее имя - имя массива. Каждый элемент массива определяется с помощью индекса, определяющего место этого элемента в общем наборе.

Данные в массиве сохраняются, как и в случае использования обычных неиндексированных переменных, только до конца работы программы.

Характеристики массива: тип – общий тип всех элементов массива; размерность (ранг) – количество индексов массива; диапазон изменения индексов – определяет количество элементов в массиве. Вектор (одномерный массив) – это массив, в котором элементы нумеруются одним

индексом.

12.2. Описание массивов Для одномерного массива: var a: array[1…n] of <тип>; где a - имя массива; n - максимальное количество элементов массива; <тип> - тип элементов массива. Например: var mas: array [1…10] of real;

Page 72: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

72

begin ... Описан массив mas - содержащий 10 элементов вещественного типа. Каждый элемент массива определяется с помощью индекса, стоящего справа от имени в

квадратных скобках. a [ i ], a [i+2], a [9] Индекс может быть - переменной, константой, арифметическим выражением целого типа. Размер массива должен быть задан в явном виде (как в предыдущем фрагменте), или через

const. Например: const n = 10; var mas: array [1…n] of real; begin …

Ввод элементов массива

… for i:=1 to n do readln( a[ i ] ); … Каждое прохождение через цикл соответствует вводу одного элемента массива.

Вывод элементов массива

… for i:=1 to n do writeln( a[ i ] ); … Каждое прохождение через цикл соответствует выводу одного элемента массива.

12.3. Обработка одномерных массивов

Рассмотрим типовые задачи обработки одномерных массивов. Задача. Составить программу подсчета суммы и произведения элементов одномерного массива

вещественных чисел. Таблица идентификаторов

Page 73: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

73

№ Наименование переменной Обозначения в программе 1 Имя массива a 2 Размер массива n 3 Индекс массива i 4 Сумма элементов S 5 Произведение элементов p

program mas_1; uses crt; var a : array [1…100] of real; n, I : integer; p, s : real; begin clrscr; {подготовить переменные для суммы и произведения} s: = 0; p: =1; writeln ('введите размер массива n<=100'); readln (n); writeln ('введите элемент массива'); for i:=1 to nk do readln (a[i] ); for i:=1 to nk do begin s:= s + a[ i ]; p:= p * a[ i ]; end; writeln ('Сумма = ',s:8:3,'Произведение =',p:8:3); readln; end.

При накапливании суммы переменную необходимо обнулить, а при накапливании произведения – присвоить 1.

Задача. Дан массив a(n). Найти максимальный элемент массива и определить его номер. Таблица идентификаторов

№ Наименование переменной Обозначения в программе 1 Имя массива a 2 Размер массива n 3 Индекс массива i

Page 74: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

74

4 Максимальный элемент max 5 Номер максимального элемента nmax

program mas_2; var a: array [1…100] of real; i,n,nmax: integer; max: real; begin writeln ('введите размер массива n<=100'); readln (n); writeln ('введите элементы массива'); for i:=1 to n do readln (a[ i ] ); {за максимальный принимается первый элемент массива} max:=a[1]; nmax:=1; for i:=1 to n do If a[i]>max then begin max:=a[i]; nmax:=i; end; writeln ('max =', max, ' N=', nmax); readln; end.

Задача. Задан массив целых чисел. Отсортировать элементы одномерного массива по возрастанию. Существует много способов сортировки элементов массива Таблица идентификаторов

№ Наименование переменной Обозначения в

программе 1 Имя массива a 2 Размер массива n 3 Индекс массива i 4 Флажок flag 5 Дополнительная переменная для обмена

местами сосодних элементов p

program mas_3;

Page 75: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

75

uses crt; var a: array [1…100] of integer; f, n, i,p : integer; begin clrscr; writeln ('введите размер массива n<=100'); readln (n); writeln ('введите элементы массива'); for i:=1 to n do readln (a[i]); repeat f:=0; for i:=1 to n-1 do if a[ i ]>a[i+1] then begin p: =a[ i ]; a[ i ]:=a[i+1]; a[i+1]:=p; f:=1; end; until f=0; for i:=1 to n do writeln (a[ i ]); readln; end.

В данном алгоритме используются вложенные циклы. Внутренний цикл (for…to…do) – позволяет один раз пройтись по массиву, сравнивая

соседние элементы. В случае, если предыдущий элемент (a[ i ]) окажется больше последующего (a[i+1]), элементы меняются местами через дополнительную переменную p.

Внешний цикл(repeat…until) – повторяется до тех пор, пока массив не будет упорядочен. В программе применяется переменная – флажок. f =1 – признак того, что два соседних элемента менялись местами, массив еще не

упорядочен. f =0 – признак того, что массив упорядочен.

Самоконтроль

1. Что такое массив? 2. Будут ли сохранены данные массива в памяти компьютера после окончания работы

программы? 3. Что такое индекс массива? 4. Какого типа должны быть переменные, являющиеся индексами массива? 5. Как можно задавать размер массива?

Page 76: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

76

6. Может ли реальное количество элементов в массиве быть меньше, чем указано при описании?

7. Может ли реальное количество элементов в массиве быть больше, чем указано при описании?

Задание • ответить на вопросы самоконтроля; • выполнить практическое задание №6, используя пример программы обработки

одномерного массива. Задание выбрать из таблицы по номеру варианта (Приложение 1).

Пример программы обработки одномерного массива

Задача. 1. Формулировка задачи: Задан одномерный массив целых чисел. Найти количество нечетных чисел среди элементов

массива 2. Таблица идентификаторов

№ Наименование переменной Обозначения в программе 1 Имя массива a 2 Размер массива n 3 Индекс массива i 4 Количество нечетных чисел kol

3. Листинг программы

program lab5; uses crt; var a: array [1…100] of integer; n, i,kol : integer; begin clrscr; writeln ('Введите размер массива n<=100'); readln (n); writeln ('Введите элементы массива'); for i:=1 to n do readln (a[ i ]); kol:=0; for i:=1 to n do if odd(a[ i ]) then kol:=kol+1; writeln(‘Количество нечетных = ’, kol);

Page 77: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

77

readln; end.

4. Результаты вычислений.

Приложение 1. Таблица вариантов задания 5

Вариант Задание

1

Даны натуральное n, целые числа а1, … , аn, каждое из которых отлично от нуля. Если в массиве отрицательные и положительные элементы чередуются ( +, - ,+ , - … или -, +, -, +, …), то ответом должен служить исходный массив. Иначе получить все отрицательные элементы массива, сохранив порядок их следования.

2 Даны натуральное n и действительные числа a1, … , an (n - четное). Получить max (a1+ an, a2+ an-1, … , an/2+ a(n/2)+1).

3 Даны натуральное число n, действительные числа a1, … , an. Найти максимальный среди отрицательных элементов имеющих четные индексы.

4 Даны натуральное n, действительные числа a1, … , an. Получить числа в1, в2, … , вn, где вi – среднее арифметическое всех элементов массива а1, … , аn, кроме аi (i = 1, 2, … , n).

5

Даны натуральное n, действительные числа a1, … , an. Если в результате замены отрицательных элементов массива a1, … , an их квадратами элементы будут образовывать неубывающую последовательность, то получить сумму элементов исходного массива; в противном случае получить их произведение.

6 Даны натуральное n, m, целые числа a1, … , an, b1, … , bm. Найти сумму тех элементов массива a1, … , an, индексы которых совпадают со значением элементов массива b1, … , bm.

7 Даны натуральное n, действительные числа a1, … , an (все числа попарно различны). Поменять в этом массиве местами наибольший и наименьший элементы.

8

Даны натуральное n, действительные числа a1, … , an. Получить преобразованный массив, заменяя a i нулями, если | ai | не равно max (a1, … , an), и заменяя a i единицей в противном случае (i = 1, 2, … , n).

9 Даны натуральное n, действительные числа a1, … , an (все числа попарно различны). Поменять в этом массиве местами наименьший и последний элементы.

10 Даны натуральное n, действительные числа a1, … , an, b1, … , bn. Получить новый массив с1, … , сn, каждый элемент которого сi = max (ai, bi), i = 1, 2, … , n.

11 Даны натуральное n, действительные числа a1, … , an, b1, … , bn. Преобразовать b1, … , bn по правилу: если ai < 0, то bi увеличить в 10 раз. Иначе bi заменить нулем, i = 1, 2, … , n.

12 Даны натуральное n, действительные числа a1, … , an. Требуется умножить элементы массива a1, … , an на квадрат ее наименьшего элемента, если ai ≥ 0. И на квадрат ее наибольшего члена, если ai < 0.

13 Даны натуральное n, действительные числа a1, … , an. Вычислить

Page 78: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

78

сумму тех элементов массива, индексы которых являются степенями двойки (1, 2, 4, 8, 16, …).

14

Даны натуральные n, m, действительные числа a1, … , an, b1, … , bm. Элементы каждого из массивов упорядочены по не убыванию. Объединить элементы этих двух массивов в один массив с1, … , сn + m так, чтобы они снова оказались упорядочены по не убыванию.

15 Даны натуральные n, m, действительные числа a1, … , an и b1, … , bm. Найти наименьший среди элементов a1, … , an, который не входит в b1, … , bm.

16 Даны натуральные n, целые числа a1, … , an. Найти сумму неповторяющихся элементов массива.

17

Даны натуральные n, целые числа a1, … , an. Наименьший элемент массива a1, … , an заменить целой частью среднего арифметического всех элементов, остальные элементы оставить без изменения. Если в массиве несколько элементов со значением min (a1, … , an), то заменить последний по порядку.

18

Даны натуральные n, целые числа a1, … , an. Преобразовать массив по правилу: все отрицательные элементы перенести в его начало, а все остальные в конец, сохраняя исходное взаимное расположение как среди отрицательных, так и среди остальных элементов.

19 Даны натуральные n, действительные числа a1, … , an (n - четное). Получить min (a1 * an, a2 * an-1, … , a[n/2] * a[n/2]+1).

20 Даны натуральные n, действительные числа a1, … , an. Преобразовать массив, расположив элементы в обратном порядке.

21

Даны натуральное n, действительные числа a1, … , an. Все элементы массива с четными номерами, предшествующие первому по порядку элементу со значением max (a1, … , an), умножить на max (a1, … , an).

22 Даны натуральное n, целые числа a1, … , an. Найти сумму квадратов тех элементов массива, которые по модулю больше максимального элемента.

23

Даны натуральное n, действительные числа a1, … , an. Если в результате замены отрицательных элементов массива a1, … , an их квадратами элементы будут образовывать неубывающую последовательность, то получить сумму элементов исходного массива; в противном случае получить их произведение.

24 Даны натуральное n, действительные числа a1, … , an. Найти максимальный элемент массива среди отрицательных элементов, имеющих четные индексы.

25 Даны натуральное n, действительные числа a1, … , an. Получить преобразованный массив, заменяя ai нулями, если | ai | не равно max (a1, … , an), и заменяя ai единицей в противном случае.

13. Двумерные массивы

Page 79: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

79

13.1. Матрицы

Если в массиве хранится таблица значений, то такой массив называют двумерным, а его элементы нумеруются двумя индексами – номером строки и номером столбца, на пересечении которых находится данный элемент.

В памяти компьютера все элементы массива занимают одну непрерывную область. Двумерный массив располагается в памяти по строкам.

Двумерный массив можно представить в виде матрицы:

⎟⎟⎟

⎜⎜⎜

333231

232221

131211

aaaaaaaaa

.

13.2. Описание двумерного массива

Для двумерных массивов: var a :array[1..n ,1..m] of <тип>; Где a - имя массива; n, m - количество строк и столбцов в массиве; <тип> - тип элементов массива. Количество элементов в массиве - n×m. Например: var mas: array [1…10,1..10] of real; begin … Описан массив mas - содержащий 100 элементов вещественного типа (10 строк и 10

столбцов). Размер массива должен быть задан в явном виде (как в предыдущем фрагменте), или через

const.

Например: const n = 5, m=5; var mas: array[1…n,1..m] of real; begin … Описан массив mas - содержащий 25 элементов целого типа (5 строк и 5 столбцов). Каждый элемент массива определяется с помощью двух индексов, стоящих справа от имени

в квадратных скобках.

Page 80: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

80

a[i, j] - элемент стоящий на пересечении i-ой строки и j-го столбца. a[i, i] - элементы главной диагонали. a[i, 2] - элементы второго столбца. Индекс может быть - переменной, константой, арифметическим выражением целого типа. Если количество строк равно количеству столбцов, матрица называется квадратной. Обработка двумерных массивов производится при изменении индексов элементов. Все элементы главной диагонали удовлетворяют условию: i=j (номер строки равен номеру столбца). Все элементы побочной диагонали удовлетворяют условию: i+j=n+1 (n - количество строк и столбцов). Элементы, расположенные над главной диагональю удовлетворяют условию: i<j (номер строки строго меньше номера столбца). Элементы, расположенные под главной диагональю удовлетворяют условию: i>j (номер строки строго больше номера столбца).

Ввод элементов двумерного массива

… for i:=1 to n do for j:=1 to m do readln(a[i]); … Данный фрагмент позволит ввести элементы массива по строкам. Для ввода элементов массива по столбцам, достаточно в предыдущем фрагменте поменять

местами внутренний и внешний циклы.

Вывод элементов двумерного массива

… for i:=1 to n do begin for j:=1 to n do write(a[I,j],‘ ‘); writeln; end; … Данный фрагмент позволит вывести элементы массива в виде матрицы.

Page 81: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

81

13.3. Обработка двумерных массивов Рассмотрим типовые задачи обработки двумерных массивов с использованием вложенных

циклов. Задача. Составить программу подсчета суммы и произведения элементов двумерного массива

вещественных чисел. Таблица идентификаторов

№ Наименование переменной Обозначения в программе 1 Имя массива a 2 Количество строк n 3 Количество столбцов m 4 Индексы массива I,j 5 Сумма элементов s 6 Произведение элементов p

program matr; uses crt; var a:array [1...10, 1...10] of real; i, j, n, m: integer; s,p :real; begin clrscr; writeln(‘ Введите n<=10 , m<=10 ’); readln (n,m); writeln(‘ Введите элементы массива по строкам ’); for i:=1 to n do for j:=1 to m do readln(a[i, j]); s:=0; p:=1; { поиск суммы и произведения } for i:=1 to n do for j:=1 to m do begin s:=s + a[i,j]; p:=p * a[i,j]; end; writeln(‘ Сумма элементов s=’,s:8:3); writeln(‘ Произведение элементов p=’,p:8:3); readln; end.

Page 82: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

82

Задача. Задана квадратная матрица целых чисел. Составить программу подсчета суммы элементов,

расположенных над главной диагональю. Таблица идентификаторов

№ Наименование переменной Обозначения в программе 1 Имя массива a 2 Количество строк и столбцов n 3 Индексы массива I,j 4 Сумма элементов над главной

диагональю s

program matr_1; uses crt; var a:array [1...10, 1...10] of real; i, j, n, m: integer; s,p :real; begin clrscr; writeln(‘ Введите n<=10 , m<=10 ’); readln (n,m); writeln(‘ Введите элементы массива по строкам ’); for i:=1 to n do for j:=1 to m do readln(a[i,j]); for i:=1 to 3 do for j:=i +1 to 3 do s:=s+a[i,j]; writeln('Сумма элементов s=', s); readln; end.

Для ввода элементов массива используются вложенные циклы с указанием номера вводимого элемента.

Для поиска суммы элементов над главной диагональю во внутреннем цикле задан закон изменения параметра внутреннего цикла:

j:=i+1 Задача.

Page 83: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

83

Задана целочисленная квадратная матрица. Определить является ли она симметричной относительно главной диагонали.

Таблица идентификаторов

№ Наименование переменной Обозначения в программе 1 Имя массива a 2 Количество строк и столбцов n 3 Индексы массива I,j 4 Флажок f

program matr_2; uses crt; var a: array [1...10, 1...10] of integer; i, j, n, f : integer; begin clrscr; writeln(‘ Введите n<=10 ’); readln (n,m); writeln(‘ Введите элементы массива по строкам ’); for i:=1 to n do for j:=1 to n do readln(a[i,j]); f:=0 for i:=1 to n do for j:=i to n do if a[i,j]<>a[j,i] then f:=1; if f=0 then writeln(‘ матрица симметрична’) else writeln (‘матрица не симметрична’); readln; end.

При решении этой задачи сравниваются элементы расположенные над главной диагональю ( a[ i,j ] ) с элементами, расположенными под главной диагональю ( a[ j,i ] ) .

Задача. Задана матрица вещественных чисел. Образовать одномерный массив, где каждый j – й

элемент равен произведению элементов j-ого столбца двумерного массива. Таблица идентификаторов

№ Наименование переменной Обозначения в программе

Page 84: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

84

1 Имя двумерного массива a 2 Имя одномерного массива b 3 Количество строк n 4 Количество столбцов m 5 Индексы массива I,j

program matr_3; uses crt; var a: array [1...10, 1...10] of integer; b: array [ 1..10 ] of integer; i, j, n, f : integer; begin clrscr; writeln(‘ Введите n<=10 , m<=10 ’); readln (n,m); writeln(‘ Введите элементы массива по строкам ’); for i:=1 to n do for j:=1 to m do readln (a[i, j]); writeln(‘ Исходная матрица ’); for i:=1 to n do begin for j:= 1 to n do write( a[I,j] , ‘ ‘); writeln; end; writeln(‘ Образованный одномерный массив ’); for j:=1 to m do begin b[ j ]:=1; { накапливается произведение элементов j столбца } for i:=1 to n do b[ j ]:= b[ j ] * a[ i, j ]; write( b[ j] , ‘ ‘); end; readln; end.

Задача. Задана целочисленная матрица a(m*n). Упорядочить элементы каждой строки по

возрастанию. Таблица идентификаторов

№ Наименование переменной Обозначения в программе 1 Имя двумерного массива a 2 Количество строк, столбцов n, m

Page 85: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

85

3 Индексы массива I,j 4 Флажок f 5 Дополнительная переменная для

обмена соседних элементов p

program mart_4; uses crt; var a: array[1...10, 1...10] of integer; i,j,n,f : integer; begin clrscr; writeln(‘ Введите n<=10 , m<=10 ’); readln (n,m); writeln(‘ Введите элементы массива по строкам ’); for i:=1 to n do for j:=1 to m do readln(a[i, j]); writeln(‘ Исходная матрица ’); for i:=1 to n do begin for j:=1 to n do write(a[I,j],‘ ‘); writeln; end; { переход от строки к строке } for i:=1 to n do { сортировка i-ой строки } repeat f:=0; for j:=1to m-1 do if a[i,j]>a[i,j+1] then begin p:=a[i,j]; a[i,j]=a[i,j+1]; a[i,j+1]:=p; f:=1; end; until f=0; writeln(‘ Преобразованная матрица ’); for i:=1 to n do begin for j:= 1 to n do write( a[I,j] , ‘ ‘); writeln; end; readln; end.

f =0 - признак того, что все элементы данной строки упорядочены.

Page 86: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

86

Самоконтроль

1. В чем состоит разница между одномерными и двумерными массивами? 2. В каких случаях целесообразно создавать двумерные массивы? 3. Как расположены элементы двумерного массива в памяти компьютера? 4. Как определить количество элементов в двумерном массиве? 5. Как определить размер памяти в байтах, выделенной под хранение двумерного массива? 6. Какая матрица называется квадратной? 7. Что характеризует элементы, расположенные на главной диагонали, над и под главной

диагональю?

Задание • ответить на вопросы самоконтроля; • выполнить практическое задание №7, используя пример программы обработки

двумерного массива. Задание выбрать из таблицы по номеру варианта (Приложение 1).

Пример программы обработки двумерного массива Задача. 1. Формулировка задачи: Составить программу нахождения максимального среди элементов двумерного массива

вещественных чисел. Определить номер строки и номер столбца, на пересечении которых был найден максимальный элемент.

2. Таблица идентификаторов. № Наименование переменной Обозначения в программе 1 Имя двумерного массива a 2 Количество строк n 3 Количество столбцов m 4 Индексы массива I,j 5 Значение максимального элемента max 6 Номер строки, где найден

максимальный элемент kmax

7 Номер столбца, где найден максимальный элемент

lmax

3. Листинг программы.

program lab6; uses crt; var a: array [1...10, 1...10] of real; i, j, n, m , kmax , lmax: integer;

Page 87: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

87

max :real; begin clrscr; writeln(‘ Введите n<=10 , m<=10 ’); readln(n,m); writeln(‘ Введите элементы массива по строкам ’); for i:=1 to n do for j:=1 to m do readln(a[i,j]); {за максимальный принимается элемент a11 } max:=a[1,1]; kmax:=1; lmax:=1; for i:=1 to n do for j:=1 to m do if a[i,j]>max then begin max:=a[i,j]; kmax:=i; lmax:=j; end; writeln(‘max=’, max:8:3); writeln(‘строка - ‘, kmax,’ столбец - ’,lmax); readln; end.

4. Результаты вычислений.

Приложение 1. Таблица вариантов задания 6

Вариант Задание

1

В данной действительной матрице размером n∗m поменять местами строку, содержащую элемент с наибольшим значением, со строкой, содержащей элемент с наименьшим значением. Предполагается, что эти элементы единственны.

2

Дана действительная матрица размером n∗m, все элементы которой различны. В каждой строке выбирается элемент с наибольшим значением, затем среди этих чисел выбирается наибольшее. Указать индексы элемента с найденным значением.

3

Дана целочисленная матрица размером n∗m. Написать программу, формирующую двумерный массив по следующему правилу: элементы первой строки – в порядке возрастания индексов столбцов, элементы второй строки – в порядке убывания индексов столбцов и т. д.

4 Дана действительная матрица размером n∗m. Найти среднее

Page 88: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

88

арифметическое каждого из столбцов, имеющих четные номера.

5 Дана действительная матрица размером n∗m. Все элементы с наибольшим значением заменить нулями (таких элементов может быть несколько).

6 Дана целочисленная матрица размером n∗m. Написать программу, позволяющую находить сумму наибольших значений элементов ее строк.

7

Дана целочисленная квадратная матрица размером n∗m. Написать программу, формирующую два одномерных массива. В один переслать по строкам верхний треугольник матрицы, включая элементы главной диагонали, в другой – нижний треугольник. Полученные массивы распечатать.

8 Дана целочисленная квадратная матрица размером n∗m. Написать программу, позволяющую исключать из нее столбец, в котором расположен минимальный элемент главной диагонали.

9

Дана целочисленная квадратная матрица размером n∗m. Написать программу, позволяющую поменять местами элементы, расположенные в верхней и нижней четвертях, ограниченные главной и побочной диагоналями (за исключением элементов, расположенных на диагоналях)

10 Задана действительная матрица размером n∗m. Написать программу, позволяющую заменить все элементы, наименьшие в строке, на нули.

11 Задана целочисленная матрица размером n∗m. Написать программу, позволяющую находить строки с наименьшей и наибольшей суммой и выводить их на печать.

12

Задана целочисленная квадратная матрица размером n∗n. Написать программу, преобразующую исходную матрицу по правилу: начетные столбцы разделить на среднее значение диагональных элементов матрицы, а четные оставить без изменения.

13

Задана действительная квадратная матрица размером n∗n. Вычислить сумму тех из ее элементов, расположенных на главной диагонали и выше ее, которые превосходят по величине все элементы, расположенные ниже главной диагонали. Если таких элементов нет, то ответом должно служить сообщение об этом.

14 Задана целочисленная квадратная матрица размером n∗n (n - четное). Написать программу, позволяющую менять местами элементы первой и второй строк, элементы третьей и четвертой строк и т. д.

15

Даны две действительные квадратные матрицы размером n∗n. Получить новую матрицу, прибавлением к элементам каждого столбца первой матрицы, произведения элементов соответствующих строк второй матрицы.

16

Даны две действительные квадратные матрицы размером n∗n. Получить новую матрицу умножением элементов каждой строки первой матрицы на наибольшее из значений элементов соответствующей строки второй матрицы.

17 Дана целочисленная квадратная матрица размером n∗n. Найти номера строк, все элементы которых – нули.

18 Задан массив из целых чисел размером n и число L. Написать

Page 89: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

89

программу, формирующую из него матрицу, содержащую по L элементов в строке. Недостающие элементы заполнить нулями.

19

Дана целочисленная матрица размером n∗m (m - четное). Написать программу, позволяющую менять местами элементы первого и последнего столбцов, элементы второго и (n-1)-го столбцов и т. д. до среднего столбца (n - нечетно)

20

Дана действительная квадратная матрица размером n∗n (n - четное), все элементы которой различны. Найти наибольший элемент среди стоящих на главной и побочной диагоналях и поменять его местами с элементом, стоящим на пересечении с этими диагоналями.

21 Дана целочисленная матрица размером n∗m. Найти максимальный по модулю элемент среди отрицательных элементов нечетных столбцов.

22

Дана целочисленная матрица размером n∗m и число K. Написать программу, переставляющую строки и столбцы таким образом, чтобы максимальный по модулю элемент был расположен на пересечении K–ой строки и K–го столбца.

23 Дана действительная матрица размером n∗m. Все элементы с наибольшим значением заменить нулями (таких элементов может быть несколько).

24

Дана целочисленная матрица размером n∗m. Написать программу, формирующую двумерный массив по следующему правилу: элементы первой строки – в порядке возрастания индексов столбцов, элементы второй строки – в порядке убывания индексов столбцов и т. д.

25 Дана целочисленная квадратная матрица размером n∗n. Написать программу, позволяющую исключать из нее столбец, в котором расположен минимальный элемент главной диагонали.

14. Подпрограммы

Если в программе имеется несколько одинаковых фрагментов, то возникает вопрос: нельзя ли оформить повторяющийся фрагмент в виде отдельного блока, а затем обращаться к нему несколько раз. Аналогичная идея возникает при отладке больших программ – если разбить программу на отдельные блоки, то отладить ее по частям будет проще. На языке Паскаль подпрограммы реализуются в виде функций или процедур.

14.1. Функции и процедуры

Функции и процедуры реализуют принципы структурного программирования. К функциям и процедурам обращаются если необходимо: разбить большую задачу на несколько меньших по объему и сложности задач; уменьшить объем программы за счет выделения типовых программных действий в функции

или процедуре; создание программных модулей, которые могут быть использованы и в других программах.

Page 90: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

90

Структура программы, содержащей процедуру (функцию)

program <имя>; <описательная часть основной прогаммы>; procedure <имя процедуры>; (function <имя функции>;) <описательная часть процедуры/функции>; begin <исполнительная часть процедуры/функции>; end; begin <исполнительная часть основной программы>; end. Процедуры ( функции ) могут содержать любые операторы языка Паскаль и повторяют

структуру основной программы, только текст процедуры ( функции) - заканчивается «;».

14.2. Процедуры

Процедура – это независимая именованная часть программы, которую после однократного описания можно многократно вызывать по имени.

Первая строка любой процедуры: procedure <имя>(<список формальных параметров>); <имя> - уникальный идентификатор, строится по правилам составления имен простых

переменных; <список формальных параметров> - список имен переменных с указанием их типа,

передающих информацию в процедуру и возвращающих результаты в основную программу. Обращение к процедуре из основной программы: <имя> (<список формальных параметров>); <список фактических параметров> - список переменных или констант, разделенных

запятыми. Например: procedure prim(x:real; var s:integer; z,y:integer); Описан заголовок процедуры где: x, z, y - передают информацию в процедуру; s - передает информацию в процедуру и возвращает результат - в основную (можно сказать

процедура изменяет значение s, хотя значение s в основной программе может быть до процедуры и не определено).

Page 91: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

91

Чтобы формальный параметр возвращал результат в основную, его необходимо описать с использованием служебного слова var.

Обращение к процедуре из основной: prim (x, s, z, y); ( имена фактических параметров x, s, z,y - совпадают с именами

формальных) или prim (a, s1, b, 5); ( именами фактических параметров a, s1, b – не совпадают с именами

формальных, а последний фактический параметр является числовой константой) Формальные и фактические параметры должны совпадать по типу, количеству и порядку

следования. Фактические параметры должны быть описаны в основной программе. Они называются глобальными переменными и доступны как в основной программе, так и в процедуре. Формальные параметры отдельно в процедуре не описываются. Время существования глобальных переменных – от начала и до конца работы программы.

Промежуточные переменные, которые используются только в процедуре, описываются в процедуре и называются локальными. Локальные переменные не доступны в основной программе. Время существования локальных переменных – от начала и до конца работы процедуры, в которой они описаны.

14.3. Вложенные процедуры

Директива forward

Если одна подпрограмма использует другую, а та, в свою очередь, использует первую,

возникает проблема размещения этих процедур в программе. Какую из них поместить в программе первой? В этих случаях прибегают к директиве forward.

Например: procedure pp1(a,b:integer):forward; procedure pp2(c: real); {Вторая процедура} var x,y:integer; begin … pp1(x, y); end; procedure pp1; {Первая процедура} var z:real; begin … pp2 (z); end; … Задача. Задан одномерный массив вещественных чисел. Найти максимальный элемент массива и

определить его номер. Составим программу с использованием двух процедур:

Page 92: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

92

процедура ввода элементов массива; процедура поиска максимального элемента и определение его номера. Для передачи массива в процедуру введем пользовательский тип mas.

program PP; type mas=array[1..100] of integer; {пользовательский тип} var { глобальные переменные } a:mas; max:real; n,max,kmax:integer; procedure input_mas(n:integer ; var a:mas ); var i:integer; {локальная переменная} begin for i:=1 to n do readln(a[ i ]); end; procedure max_m(n:integer; a:mas; var max,kmax:integer ); var i:integer; begin max:=a[1];kmax:=1; for i:=1 to n do if a[i]>max then begin max:=a[i]; kmax:=i; end; end; begin writeln(‘ Введите n<=100’) ; readln( n ); writeln (‘ Введите элементы массива ‘); input_mas(n,a); max_m(n,a,max,kmax ); writeln(‘max=’,max,‘kmax=’,kmax); readln; end.

14.4. Функции

Если результатом подпрограммы является только одно значение, то имеет смысл оформить такую подпрограмму в виде функции.

Первая строка любой функции: function <имя >(<список формальных параметров> ):<тип>; <список формальных параметров> - список имен переменных с указанием их типа,

передающих информацию в функцию;

Page 93: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

93

<имя> - возвращает результат в основную программу; <тип> - тип возвращаемого результата. Обращение из основной программы к функции возможно в структуре какого либо

оператора, например оператора присваивания: <переменная>:= <имя> (список фактических параметров); Функция возвращает в основную программу только один результат через переменную,

являющуюся именем функции. Эта переменная не должна быть описана в основной программе. В описательной части функции этой переменной должно быть присвоено какое-либо значение, иначе функция не возвращает никакого значения.

Задача. Составить программу вычисления n! с использованием функции. n! = 1* 2 * 3 * …* n

program factorial; {описательная часть основной программы} var n,k:integer; function fun(k:integer):integer; {описательная часть подпрограммы} var p,i:integer; begin {исполнительная часть подпрограммы} p:=1; for i:=1 to k do p:=p*i; fun:=p; end; { исполнительная часть основной программы } begin writeln('введите n'); readln(n); for k: = 1 to n do writeln(fun(k)); end. n, k - глобальные переменные. p, i - локальные переменные. fun - имя функции, возвращает результат в основную программу. Имя функции в теле функции в операторах присваивания может стоять только слева от знака «:=» , поэтому использована дополнительная переменная p для подсчета произведения.

Page 94: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

94

Самоконтроль 1. В каких случаях прибегают к построению подпрограмм? 2. В каком месте программы располагаются функции или процедуры? 3. Что такое процедура? 4. Какова структура процедуры? 5. Как передается информация в процедуру? 6. Каким образом возвращаются результаты работы процедуры в основную программу? 7. Какое соответствие должно быть между формальными и фактическими параметрами? 8. Какие переменные называются глобальными? Время существования глобальных

переменных? 9. Какие переменные называются локальными? Время существования локальных

переменных? 10. Когда используют директиву forward? 11. В каких случаях целесообразно прибегать к построению функций? 12. Как передается информация в функцию? 13. Каким образом возвращается результат работы функции в основную программу?

Задание • ответить на вопросы самоконтроля; • выполнить практическое задание №8, используя пример программы с использованием

подпрограмм. Задание выбрать из таблицы по номеру варианта (Приложение1).

Пример программы с использованием подпрограмм Задача. 1. Формулировка задачи: Задан двумерный массив целых чисел. Определить количество четных чисел в массиве. Составим: процедуру ввода элементов массива; функцию подсчета количества четных чисел; процедуру вывода двумерного массива в виде матрицы.

2. Таблица идентификаторов

№ Наименование переменной Обозначения в программе 1 Имя массива a 2 Количество строк n 3 Количество столбцов m 4 Индексы массива I,j

3. Листинг программы. program pp_1; type mas=array[1..10,1..10] of integer; var

Page 95: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

95

a:mas; n,m,i,j:integer ; { Процедура ввода массива } procedure input_mas(n,m:integer; var a:mas); begin for i:=1 to n do for j:=1 to n do readln(a[i,j]); end; {Функция подсчета количества нечетных чисел} function kol( n,m:integer; a:mas ):integer; var k:integer ; begin kol:=0; for i:=1 to n do for j:=1 to n do if not odd( a[ i,j ] ) then k:=k+1; kol:=k; end; {Процедура вывода матрицы} procedure print_mas(n,m:integer; a:mas); begin for i:=1 to n do begin for j:=1 to n do write( a[i,j],‘ ‘); writeln; end; end; { Исполнительная часть основной программы } begin writeln(‘Введите n<=10 , m<=10’); readln (n,m); writeln(‘Введите элементы массива по строкам’); input_mas(n,m,a); writeln(‘Исходная матрица’); print_mas(n,m,a); writeln(‘Количество нечетных чисел =’,kol(n,m,a)); readln; end.

Приложение 1. Таблица вариантов задания 7

Составить программу с использованием процедуры и функции на базе задания 6 Вариант Задание

Page 96: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

96

1

В данной действительной матрице размером n∗m поменять местами строку, содержащую элемент с наибольшим значением, со строкой, содержащей элемент с наименьшим значением. Предполагается, что эти элементы единственны.

2

Дана действительная матрица размером n∗m, все элементы которой различны. В каждой строке выбирается элемент с наибольшим значением, затем среди этих чисел выбирается наибольшее. Указать индексы элемента с найденным значением.

3

Дана целочисленная матрица размером n∗m. Написать программу, формирующую двумерный массив по следующему правилу: элементы первой строки – в порядке возрастания индексов столбцов, элементы второй строки – в порядке убывания индексов столбцов и т. д.

4 Дана действительная матрица размером n∗m. Найти среднее арифметическое каждого из столбцов, имеющих четные номера.

5 Дана действительная матрица размером n∗m. Все элементы с наибольшим значением заменить нулями (таких элементов может быть несколько).

6 Дана целочисленная матрица размером n∗m. Написать программу, позволяющую находить сумму наибольших значений элементов ее строк.

7

Дана целочисленная квадратная матрица размером n∗m. Написать программу, формирующую два одномерных массива. В один переслать по строкам верхний треугольник матрицы, включая элементы главной диагонали, в другой – нижний треугольник. Полученные массивы распечатать.

8 Дана целочисленная квадратная матрица размером n∗m. Написать программу, позволяющую исключать из нее столбец, в котором расположен минимальный элемент главной диагонали.

9

Дана целочисленная квадратная матрица размером n∗m. Написать программу, позволяющую поменять местами элементы, расположенные в верхней и нижней четвертях, ограниченные главной и побочной диагоналями (за исключением элементов, расположенных на диагоналях).

10 Задана действительная матрица размером n∗m. Написать программу, позволяющую заменить все элементы, наименьшие в строке, на нули.

11 Задана целочисленная матрица размером n∗m. Написать программу, позволяющую находить строки с наименьшей и наибольшей суммой и выводить их на печать.

12

Задана целочисленная квадратная матрица размером n∗n. Написать программу, преобразующую исходную матрицу по правилу: начетные столбцы разделить на среднее значение диагональных элементов матрицы, а четные оставить без изменения.

13

Задана действительная квадратная матрица размером n∗n. Вычислить сумму тех из ее элементов, расположенных на главной диагонали и выше ее, которые превосходят по величине все элементы, расположенные ниже главной диагонали. Если таких элементов нет, то ответом должно служить сообщение об этом.

Page 97: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

97

14 Задана целочисленная квадратная матрица размером n∗n (n - четное). Написать программу, позволяющую менять местами элементы первой и второй строк, элементы третьей и четвертой строк и т. д.

15

Даны две действительные квадратные матрицы размером n∗n. Получить новую матрицу, прибавлением к элементам каждого столбца первой матрицы, произведения элементов соответствующих строк второй матрицы.

16

Даны две действительные квадратные матрицы размером n∗n. Получить новую матрицу умножением элементов каждой строки первой матрицы на наибольшее из значений элементов соответствующей строки второй матрицы.

17 Дана целочисленная квадратная матрица размером n∗n. Найти номера строк, все элементы которых – нули.

18 Задан массив из целых чисел размером n и число L. Написать программу, формирующую из него матрицу, содержащую по L элементов в строке. Недостающие элементы заполнить нулями.

19

Дана целочисленная матрица размером n∗m (m - четное). Написать программу, позволяющую менять местами элементы первого и последнего столбцов, элементы второго и (n-1)-го столбцов и т. д. до среднего столбца (n - нечетно)

20

Дана действительная квадратная матрица размером n∗n (n - четное), все элементы которой различны. Найти наибольший элемент среди стоящих на главной и побочной диагоналях и поменять его местами с элементом, стоящим на пересечении с этими диагоналями.

21 Дана целочисленная матрица размером n∗m. Найти максимальный по модулю элемент среди отрицательных элементов нечетных столбцов.

22

Дана целочисленная матрица размером n∗m и число K. Написать программу, переставляющую строки и столбцы таким образом, чтобы максимальный по модулю элемент был расположен на пересечении K–ой строки и K–го столбца.

23 Дана действительная матрица размером n∗m. Все элементы с наибольшим значением заменить нулями (таких элементов может быть несколько).

24

Дана целочисленная матрица размером n∗m. Написать программу, формирующую двумерный массив по следующему правилу: элементы первой строки – в порядке возрастания индексов столбцов, элементы второй строки – в порядке убывания индексов столбцов и т. д.

25 Дана целочисленная квадратная матрица размером n∗n. Написать программу, позволяющую исключать из нее столбец, в котором расположен минимальный элемент главной диагонали.

15. Обработка строк текста

15.1. Символьные переменные Значением переменных символьного типа является один символ. Каждому символу

соответствует код символа – целое число в диапазоне то 0 до 255. Существует международная таблица ASCII-кодов.

Page 98: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

98

Для описания символьных переменных используют слово char и они занимают 1 байт памяти.

var c:char; Над символьными переменными допустимы только две операции: присвоение и сравнение. При сравнении символов сравниваются их коды. Символьные константы задаются в апострофах: c:=‘A’;

Фрагмент таблицы ASCII-кодов букв латинского алфавита

A 65 a 97 B 66 b 98 … … … … Z 90 z 122

Коды малых букв от заглавных отличаются на 32.

Фрагмент таблицы ASCII-кодов букв русского алфавита

A B … П

128 129 … 143

а б … п

160 161 … 175

Коды малых букв от заглавных отличаются на 32.

P … Я

144 … 159

р … я

224 … 239

Коды малых букв от заглавных отличаются на 80.

Е 240 е 241

15.2. Функции обработки символьных переменных chr(x:byte):char - возвращает символ, соответствующему коду x. Например: writeln( chr(65) ); Результат на экране: заглавная буква A латинского алфавита. ord(c:char):byte возвращает число, соответствующее коду символа c. Например: writeln( ord(‘A’) ); Результат на экране: число 65 – код заглавной буквы A латинского алфавита. upcase (c:char):char – преобразует малые буквы латинского алфавита в заглавные. Например:

Page 99: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

99

writeln( upcase(‘a’) ); Результат на экране: заглавная буква A латинского алфавита. Если аргументом этой функции окажется не малая буква латинского алфавита, то эта

функция никаких действий не выполнит. pred(c:char):char - возвращает предшествующий символ. Например: writeln( pred('B') ); Результат на экране: заглавная буква A латинского алфавита, код которой на 1 меньше кода буквы B. succ(c:char):char - возвращает последующий символ. Например: writeln( succ(‘A’) ); Результат на экране: заглавная буква B латинского алфавита, код которой на 1 больше кода буквы A. Задача. Вывести на экран таблицу ASCII-кодов. program ASCII; var i: byte; begin for i:=1 to 255 do writeln (chr(i),'=',i); end. Тип char в программах на Паскале часто используют для хранения вводимых с клавиатуры

ответов на запросы меню. Для этого используют функцию readkey. Работу этой функции обеспечивает модуль Crt. Приведем пример использования: Program char; uses crt; begin repeat … ch:= readkey until (ch='n') or (ch='N'); end.

Page 100: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

100

Цикл действий продолжается до тех пор, пока не будет введено с клавиатуры 'n' или 'N'.

15.3. Строковые переменные

Строковые переменные используются для хранения любой цепочки символов и занимают 255 байт памяти. Для описания строковых переменных используют служебное слово string.

а) var s:string; b) var t:string[20]; По умолчанию под строковую переменную s будет отведено 255 байт памяти (вариант а), а

под строковую переменную t будет отведено 20 байт (вариант b). Строковые константы задаются в апострофах: S:=’Москва’; Ввод строковых переменных осуществляется с помощью оператора - readln, а вывод -

writeln. var S:string; begin readln(s); … Ввод цепочки символов завершается нажатием Enter. Если количество введенных символов

превышает 255, то «хвост» отбрасывается, и в переменную попадают только первые 255 символов.

Над строковыми переменными допустимы три операции: присвоение, сравнение и «слияние».

Существует два способа обработки строковых переменных: обработка всей строки как единого целого; строковые переменные можно рассматривать как одномерный массив символов (элементов

типа char) и применять к ним функции символьных переменных. Операция слияния: d:= 'Москва - столица'; a:= 'России'; d + a 'Москва - столица России'

15.4. Функции обработки строковых переменных

length(s:string):byte - подсчитывается фактическая длина строки, включая пробелы и знаки препинания.

Например: … s:=’Москва’;

Page 101: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

101

wrtiteln(length(s)); Результат на экране: Число 6, количество символов в сломе Москва. copy(s:string,i,n):string - копируется фрагмент строки s. Где s - переменная, из которой копируется фрагмент; i - позиция, с которой копируется; n - количество копируемых символов. Если i и n - вне пределов строки, сообщения об ошибке не будет. Если i>length(s ) результат - строка нулевой длины. Если n >length(s ) результат - фрагмент от i до конца строки. Например: … s:='электрификация'; b:=copy(s,8,3)+copy(s,12,3); writeln(s); … Результат на экране: фикция pos(t:string,s:string):byte - осуществляет поиск подстроки t в строке s. Результатом этой функции является позиция вхождения t в s. Если подстрока не найден -

результат 0. Например: … t:='ритм'; s:='алгоритм'; k:=pos(t,s); wrieln(‘k=’,k); Результат на экране: k=5

15.5. Процедуры обработки строковых переменных

insert(t,s,i); - вставить подстроку t в строку s начиная, начиная с позиции i. Например: … s:='ритм'; insert(‘алго’,s,1); wrieln(s);

Page 102: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

102

… Результат на экране: алгоритм delete(s,i,n) ; - удалить из строки s с позиции i - n символов. Например: … s:='алгоритм'; delete(s,1,4); writeln(s); … Результат на экране: ритм i,n - в процедурах insert и delete обязательно должны присутствовать в строке s. Иначе -

сообщение об ошибке.

15.6. Примеры обработки строковых переменных

Задача. В произвольном тексте заменить все сочетания “чя” на “ча”. Таблица идентификаторов

№ Наименование переменной Обозначения в программе 1 Текст Text 2 Индекс массива i

Program word_text; Uses crt; var text:string; i:integer; begin clrscr; writeln(‘Введите текст’); readln(text); for i:=1 to length(text)-1 do if copy(text,i,2)=‘чя’ then begin delete (text,i+1,1); insert (‘a’,text,i+1); end; writeln(‘Преобразованный текст’);

Page 103: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

103

writeln(text); readln; end.

Задача. В произвольном тексте (text) в слове word заменить первую букву на заглавную и

подсчитать количество замен (текст латинский). Таблица идентификаторов

№ Наименование переменной Обозначения в программе 1 Текст text 2 Слово word 3 Индекс массива i 4 Количество замен s

Program word_text1; Uses crt; var text,word:string; s,i:integer; begin writeln(‘Введите текст’); readln(text); s: =0; writeln(‘Введите слово’); readln(word); for i:=1 to length(text)-lenght(word)+1 do if copy(text,i,length(word))=word then begin s:=s+1; text[i]:=upcase(text[i]); end; writeln (s); readln; end.

Задача. Заменить в произвольном тексте все слова word1 на слово word2. Таблица идентификаторов № Наименование переменной Обозначения в программе 1 Текст text 2 Слова первое word1 3 Слова второе word2

Page 104: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

104

4 Индекс i Program word_text2; var text,word1,word2:string; i:integer; begin writeln(‘Введите исходный текст’); readln text); writeln(‘Введите первое слово’); readln(word1); writeln(‘Введите второе слово’); readln(word2); repeat i:=pos(word1,text) if i<>0 then begin delete(text,i,length(word1)); insert(word2,text,i); end; until i=0; writeln(‘Преобразованный текст’); writeln(text); readln; end.

Самоконтроль

1. Какие типы данных используются для обработки текста? 2. Сколько байт памяти занимает символьная переменная? 3. Какие операции допустимы над символьными переменными? 4. Перечислите функции обработки символьных переменных? 5. Что такое строка? 6. Сколько байт памяти занимает строковая переменная? 7. Какие операции допустимы над строковыми переменными? 8. Перечислите функции и процедуры обработки строковых переменных? 9. Как можно обратиться к отдельным символам строки?

16. Структурированные типы данных При решении задач обработки большого количества данных используют массивы. Но при

работе с массивами основное ограничение заключается в том, что все элементы массива должны быть одного типа. Для работы с комбинированными типами данных применяют записи.

Page 105: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

105

Записи

Записи – это структурированный тип данных, позволяющих хранить вместе различные типы данных.

Запись состоит из нескольких полей, для каждого из которых при объявлении (описании) указывается имя и тип.

Например: type student = record; {запись} surname : string[20]; year : integer; bal : real; end; {завершает список полей} var st:student; Сформирован пользовательский тип данных – student, он базируется на стандартных типах

(string, integer,real). Переменная st - имеет тип student (запись), состоит из 3-х полей: surname – фамилия студента; year – год рождения; bal – средний бал. Каждое поле хранит информацию разного типа. При обращении к отдельным полям

указывается имя всей записи и имя отдельного поля через точку. st.surname:='Иванов'; st.year:=1905; st.bal:=4.5; Для уменьшения записи обращения к отдельным полям используют оператор with … do Например: with st do begin surname:='Иванов'; year:= 1905; bal:=4.5; end; Для обработки большого объема информации комбинированного типа целесообразно

строить массивы записей, где каждый элемент массива – запись, состоящая из нескольких полей разного типа.

Например, чтобы сохранить информацию о студентах группы в 25 человек, можно создать следующий массив записей:

type student = record; {запись} surname : string[20]; year : integer; bal : real;

Page 106: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

106

end; var st:array[ 1..25 ] of student; st – массив записей. Каждый элемент массива(St[i])содержит информацию об одном

студенте: St[i].surname – фамилия; St[i].year - год рождения; St[i].bal - средний бал. Задача. Создать массив записей, содержащий информацию о студентах группы. Каждая запись

содержит поля – фамилия, год рождения, пол. Подсчитать средний возраст студентов мужского пола группы.

Таблица идентификаторов

№ Наименование переменной Обозначения в программе 1 Имя массива st 2 Количество студентов n 3 Индекс массива i 4 Средний возраст p 5 Количество мужчин k 6 Текущий год t

program rec; uses crt; type student = record; {запись} surname : string[20]; year : integer; pol : char; end; var st:array[ 1..30 ] of student; i,n,t:integer; p:real; begin clrscr; writeln(‘Введите текущий год’); readln(t) writeln(‘Введите количество студентов’); readln(n) for i:=1 to n do

Page 107: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

107

with st[i] do begin writeln(‘Сведения о ’,i,‘ студенте’); writeln(‘Введите фамилию’); readln(surname); writeln(‘Введите год рождения’); readln(year); writeln(‘Введите средний бал’); readln(bal); end; p:=0; for i:=1 to n do begin if st[i].pol=’m’ then begin p:=p+(t-st[i].year); k:=k+1; end; writeln(‘Средний возраст мужчин =’,(p/k):8:3 ); readln; end.

Самоконтроль

1. В чем состоит основное преимущество записи? 2. Почему записи называют комбинированным типом записи? 3. Чем записи отличаются от массивов? 4. Что называется полем записи? 5. Какие требования предъявляются к идентификаторам поля записи? 6. Как определить объем памяти, требуемый для размещения записи? 7. С какой целью при обращении к полю записи используется оператор with … do?

Задание • ответить на вопросы самоконтроля; • выполнить индивидуальное задание (ИДЗ №2), на примере программы использования

массива записей. ИДЗ №2 выбрать из таблицы по номеру варианта (Приложение 2).

Пример программы использования массива записей

1. Титульный лист (Приложение 1).

2. Формулировка задачи:

Создать массив записей, содержащий сведения о сотрудниках фирмы. Каждая запись содержит поля – фамилия сотрудника, наименование отдела, оклад, трудовой стаж. Написать программу, выдающую следующую информацию:

Page 108: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

108

• список сотрудников отдела Х с указанием оклада и трудового стажа; • подсчитать среднюю заработную плату сотрудников отдела Х.

Название отдела Х вводится по запросу с клавиатуры.

3. Таблица идентификаторов № Наименование переменной Обозначения в

программе Тип переменной

1 Имя массива f record (запись)

2 Количество сотрудников n integer 3 Поле фамилия surname string 4 Поле отдел otdel string 5 Поле оклад oklad real 6 Поле стаж Stag integer 7 Средняя зарплата Sred real 8 Отдел поиска Х X string 9 Количество сотрудников в отделе

Х K integer

10 Индексы массива i integer

4. Листинг программы program rec_1; uses crt; type firma = record; {запись} surname : string[20]; otdel : string[20]; oklad : real; Stag : integer; end; var f:array[ 1..30 ] of firma; {массив записей} X:string[20]; i,n,k:integer; sred:real; begin clrscr; writeln(‘Введите n’); readln(n); writeln(‘Введите информацию о сотрудниках’); for i:=1 to n do with f[i] do begin writeln(‘Введите фамилию ’); readln(surname);

Page 109: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

109

writeln(‘Введите отдел ’); readln(otdel); writeln(‘Введите оклад ’); readln(oklad); writeln(‘Введите стаж ’); readln(Stag); end; writeln(‘Введите название отдела’); readln(X); sred:=0; k:=0; writeln(‘Список сотрудников отдела ’,X); for i:=1 to n do if f[i].otdel=X then begin writeln(f[i].surname,’ ‘,f[i].oklad:8:3); sred:=sred+f[i].oklad; k:=k+1; end; writeln(‘Средняя зарплата отдела=’,(sred/k):8:3); readln; end.

5. Результаты вычислений

Page 110: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

110

Приложение 1

Приложение 2. Таблица вариантов ИДЗ 2

Вариант Задание

1

Создать массив записей, содержащий сведения о месячной заработной плате рабочих завода. Каждая запись содержит поля – фамилия рабочего, наименование цеха, размер заработной платы за месяц. Необходимо: -отсортировать массив записей по полю заработная плата; -подсчитать общую сумму выплат за месяц по цеху Х. Наименование цеха Х вводится по запросу с клавиатуры.

2 Создать массив записей, содержащий сведения об участниках конференции. Каждая запись содержит поля – фамилия участника, возраст, город, из которого прибыл участник.

Page 111: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

111

Написать программу, выдающую следующую информацию: -список участников, приехавших из города Х с указанием возраста; -средний возраст участников конференции. Название города Х вводится по запросу с клавиатуры.

3

Создать массив записей, содержащий информацию о сотрудниках частной клиники. Каждая запись содержит поля – фамилия врача, специализация, стаж работы. Написать программу, выдающую следующую информацию: -список врачей по специализации Х с указанием стажа работы; -средний стаж сотрудников клиники. Специализация Х вводится по запросу с клавиатуры.

4

Создать массив записей, содержащий сведения об абонентах телефонной компании. Каждая запись содержит поля – фамилия абонента, год установки телефона, номер телефона. Написать программу, выдающую следующую информацию: -список абонентов, отсортированный по полю год установки; - по вводимой фамилии Х выдается номер телефона абонента. Фамилия Х вводится по запросу с клавиатуры.

5

Создать массив записей, содержащий сведения об ассортименте игрушек в магазине. Каждая запись содержит поля – название игрушки, цена, количество. Написать программу, выдающую следующую информацию: - стоимость самой дорогой игрушки и ее наименование; - общую стоимость всех игрушек в магазине.

6

Создать массив записей, содержащий сведения об экспортируемых товарах. Каждая запись содержит поля – наименование товара, страна, импортирующая товар, объем поставляемой партии в штуках. Написать программу, выдающую следующую информацию: -список стран, в которые экспортируется товар Х и объем его экспорта; -средний объем экспорта товара Х. Наименование товара Х вводится по запросу с клавиатуры.

7

Создать массив записей, содержащий сведения о студентах группы. Каждая запись содержит поля – фамилия студента, год рождения и оценки по трем экзаменам. Написать программу, выдающую следующую информацию: -список студентов, отсортированный по полю год рождения с указанием полученных оценок; -количество студентов, получивших неудовлетворительные оценки хотя бы по одной дисциплине.

8

Создать массив записей, содержащий сведения о городской библиотеке. Каждая запись содержит поля – шифр книги, автор, название, год издания и стоимость. Написать программу, выдающую следующую информацию: -список книг автора Х с указанием названия и года издания книги; -стоимость самой дорогой книги автора Х; Фамилия автора Х вводится по запросу с клавиатуры.

Page 112: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

112

9

Создать массив записей, содержащий сведения о наличии билетов и рейсах Аэрофлота. Каждая запись содержит поля – номер рейса, пункт назначения, время вылета, стоимость билетов. Написать программу, выдающую следующую информацию: -список рейсов самолетов в город Х, с указанием времени вылета и стоимости билетов; -номер рейса в город Х, с минимальной стоимостью билета. Наименование города Х вводится по запросу с клавиатуры.

10

Создать массив записей, содержащий сведения об ассортименте товаров в магазине. Каждая запись содержит поля – артикул, наименование, стоимость единицы товара, количество. Написать программу, выдающую следующую информацию: -список товаров, отсортированный по полю стоимость товара; - общую стоимость всех товаров в магазине.

11

Создать массив записей, содержащий сведения о сессии. Каждая запись содержит поля – индекс группы ( например ЭС-101), фамилия студента, оценки по трем экзаменам. Написать программу, выдающую следующую информацию: -фамилии неуспевающих студентов группы Х, с указанием количества задолженностей; -количество неуспевающих студентов группы Х. Наименование группы Х вводится по запросу с клавиатуры.

12

Создать массив записей, содержащий сведения об отправлении поездов дальнего следования. Каждая запись содержит поля – номер поезда, станция назначения, время отправления, стоимость билетов. Написать программу, выдающую следующую информацию: -время отправления поездов в город Х с указанием стоимости билетов; -номер поезда в город Х с минимальной стоимостью билета. Наименование города Х вводится по запросу с клавиатуры.

13

Создать массив записей, содержащий сведения о сотрудниках института. Каждая запись содержит поля – фамилия, пол, название отдела, год рождения, стаж. Написать программу, выдающую следующую информацию: -список сотрудников мужского пола отдела Х призывного возраста (старше 18 и младше 30 лет), с указанием стажа работы; -средний возраст сотрудников мужского пола отдела Х. Наименование отдела Х вводится по запросу с клавиатуры.

14

Создать массив записей, содержащий сведения о телефонах абонентов. Каждая запись содержит поля – фамилия абонента, адрес, номер телефона. Написать программу, выдающую следующую информацию: -по вводимой фамилии абонента Х и адресу Y выдается номер телефона. Фамилию абонента Х и адрес Y вводится по запросу с клавиатуры.

15

Создать массив записей, содержащий сведения о товарах некоторого склада. Каждая запись содержит поля – наименование, цена единицы товара, количество. Написать программу, выдающую следующую информацию:

Page 113: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

113

-список товаров, стоимость которых не превышает Х рублей с указанием количества; -общее количество товаров, стоимость которых не превышает Х. Стоимость Х вводится по запросу с клавиатуры.

16

Создать массив записей, содержащий сведения о товарах автосалона. Каждая запись содержит поля – модель автомобиля, цвет, номер двигателя, стоимость. Написать программу, выдающую следующую информацию: -список автомобилей модели Х с указанием цены, цвета и номера двигателя; -самый дорогой автомобиль модели Х. Модель автомобиля Х вводится по запросу с клавиатуры.

17

Создать массив записей, содержащий сведения о туристической фирме. Каждая запись содержит поля – наименование страны, наименование города, стоимость тура. Написать программу, выдающую следующую информацию: -список туров в страну Х с указанием наименования города и стоимости тура; -самый дорогой тур в страну Х. Название страны Х вводится по запросу с клавиатуры.

18

Создать массив записей, содержащий сведения о студентах группы. Каждая запись содержит поля – фамилия студента, индекс группы (например ЭС-101) и оценки по трем экзаменам. Написать программу, выдающую следующую информацию: -список отличников группы Х; -процент отличников по отношения к общему количеству студентов группы Х. Индекс группы Х вводится по запросу с клавиатуры.

19

Создать массив записей, содержащий сведения об абонентах телефонной компании. Каждая запись содержит поля – фамилия абонента, год установки телефона, номер телефона. Написать программу, выдающую следующую информацию: -список абонентов, отсортированный по полю год установки; -количество установленных телефонов с Х года. Значение Х вводится по запросу с клавиатуры.

20

Создать массив записей, содержащий информацию о количестве изделий, собранных рабочими за месяц. Каждая запись содержит поля – фамилия сборщика, наименование цеха, количество изделий, собранных рабочим за месяц. Считая заданными значение расценок по сборке единицы изделия Х, выдать следующую информацию: -ведомость заработной платы рабочих цеха; -общую сумму выплат по цеху. Стоимость сборки единицы изделия Х вводится по запросу с клавиатуры.

21 Создать массив записей, содержащий сведения о сотрудниках таксомоторного парка. Каждая запись содержит поля – фамилия водителя, номер автомобиля, количество выездов за месяц.

Page 114: МЕТОДИЧЕСКИЕ УКАЗАНИЯ к по дисциплине ...edu.tltsu.ru/er/er_files/book1271/book.pdf · 2020-02-06 · 5 УДК 532.5 (533.6) Методические

114

Написать программу, выдающую следующую информацию: -подсчитать общее количество выездов за месяц; -фамилию водителя, с наибольшим количеством выездов.

22

Создать массив записей, содержащий сведения об услугах частной клиники. Каждая запись содержит поля – название операции, стоимость операции, возрастные ограничения на каждую операцию. Написать программу, выдающую следующую информацию: -список услуг клиники, отсортированный по полю название операции; -по введенному названию операции Х распечатать стоимость и возрастные ограничения. Название операции Х вводится по запросу с клавиатуры.

23

Создать массив записей, содержащий сведения о сотрудниках института. Каждая запись содержит поля – фамилия сотрудника, оклад, стаж работы. Написать программу, которая должна: -начислить премию сотрудникам в размере оклада, стаж которых превышает Х лет: -распечатать список сотрудников, получивших премию с указанием размера премии. Величина Х вводится по запросу с клавиатуры.

24

Создать массив записей, содержащий сведения о товарах магазина. Каждая запись содержит поля – наименование товара, стоимость, количество. Написать программу, которая; -уменьшит стоимость товаров, количество которых не превышает Х, на 50%; -распечатать список новых цен. Количество Х вводится по запросу с клавиатуры.

25

Создать массив записей, содержащий информацию о количестве изделий, собранных рабочими цеха. Каждая запись содержит поля – фамилия рабочего, наименование цеха, количество собранных им изделий за месяц. Написать программу, выдающую следующую информацию: -список рабочих цеха, отсортированный по полю фамилия; -общее количество изделий, собранных рабочими цеха за месяц.