рефераты конспекты курсовые дипломные лекции шпоры

Реферат Курсовая Конспект

Информатика

Информатика - раздел Информатика, Министерство Образования И Науки Рф   Федераль...

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

 

Федеральное бюджетное государственное
образовательное учреждение

Высшего профессионального образования

  Политехнический институт Кафедра "Автоматизированные станочные системы"

Тула 2011 г.


Рассмотрено на заседании кафедры "Автоматизированные станочные системы"

протокол №1 от "31" августа 2011 г.

Зав. кафедрой________________А.Н. Иноземцев


СОДЕРЖАНИЕ

 

1. Понятие информатики. 9

1.1. История развития информатики. 9

1.2. Мировоззренческие экономические и правовые аспекты информационных технологий 11

2. Понятие информации и ее измерение 12

2.1. Теории информации. 12

2.2. Меры информации. 13

2.3. Единицы измерения информации и примеры.. 13

2.3.1 Синтаксическая мера информации. 14

2.3.2 Семантическая мера информации. 14

2.3.3 Прагматическая мера информации. 15

2.3.4 Алгоритмическая мера информации. 15

2.4. Количество и качество информации. 15

2.5. Единицы измерения информации. 17

2.6. Информацияи энтропия. 20

2.6.1 Сообщения и сигналы.. 21

2.6.2 Схема передачи информации. 21

2.6.3 Энтропия. 22

2.6.4 Избыточность. 22

2.6.5 Сенсация. 23

3. Понятие информационной технологии. 23

3.1. Новая информационная технология. 24

3.2. Инструментарий информационной технологии. 25

3.3. Составляющие информационной технологии. 25

3.4. Развитие информационных технологий. 26

3.4.1 Нулевое поколение ИТ. 27

3.4.2 Первое поколение ИТ. 27

3.4.3 Второе поколение ИТ. 28

3.4.4 Третье поколение ИТ. 28

3.4.5 Четвертое поколение ИТ. 29

3.4.6 Пятое поколение ИТ. 30

3.5. Базовая информационная технология. 32

3.6. Предметная информационная технология. 32

3.7. Обеспечивающая информационная технология. 33

3.8. Функциональная информационная технология. 33

3.9. Виды пользовательского интерфейса информационных технологий. 34

3.10. Свойства информационных технологий. 35

4. Сообщения и сигналы.. 36

4.1. Кодирование и квантование сигналов. 36

4.2. Виды и характеристики носителей и сигналов. 37

4.2.1 Характеристики сигналов, передаваемых по каналу. 37

4.2.2 Модуляция сигналов. 38

4.2.3 Виды и характеристики носителей. 38

4.2.4 Спектры сигналов. 39

4.2.5 Периодические сигналы.. 40

4.2.5.1 Тригонометрическая форма. 41

4.2.5.2 Комплексная форма. 41

4.2.5.3 Определение погрешности. 42

4.2.5.4 Спектр. 42

4.2.6 Непериодические сигналы.. 43

5. Модуляция и кодирование 47

5.1. Коды: прямой, обратный, дополнительный, модифицированный. 47

5.1.1 Прямой код числа. 47

5.1.2 Обратный код числа. 48

5.1.3 Дополнительный код числа. 48

5.1.4 Модифицированный код числа. 49

5.2. Систематические коды.. 49

5.3. Контроль по четности, нечетности, по Хеммингу. 51

5.3.1 Кодирование по методу четности-нечетности. 51

5.3.2 Коды Хэмминга. 53

5.4. Сетевые технологии обработки данных. 55

5.4.1 Распределенная обработка данных. 55

5.4.2 Обобщенная структура компьютерной сети. 56

5.4.3 Классификация вычислительных сетей. 57

5.5. Каналы передачи данных и их характеристики. 58

5.5.1 Обобщенные характеристики сигналов и каналов. 58

5.5.2 Характеристики канала передачи информации без помех. 59

5.5.3 Характеристики каналов передачи информации с помехами. 60

5.6. Методы повышения помехоустойчивости передачи и приема. 62

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

6. Представление информации в цифровых автоматах (ЦА). 67

6.1. Информационные основы контроля работы цифровых автоматов. 68

6.2. Основные принципы помехоустойчивого кодирования. 69

6.3. Помехоустойчивость кода. 75

6.4. Методы помехоустойчивого кодирования. 76

6.4.1 Метод контроля четности. 76

6.4.2 Метод контрольных сумм. 77

6.4.3 Коды Хэмминга. 78

6.4.4 Контроль по модулю. 78

6.4.5 Числовой метод контроля. 79

6.4.6 Цифровой метод контроля. 79

6.4.7 Выбор модуля для контроля. 80

6.5. Контроль логических операций. 82

6.5.1 Операции сдвига. 82

6.5.2 Операция сложения по модулю 2. 84

6.5.3 Операция логического умножения. 84

6.6. Контроль арифметических операций. 84

6.7. Арифметические коды.. 86

7. ЦАП и АЦП. 90

7.1. Основные понятия относящиеся к преобразователям. 91

7.2. Уровни цифровой логики. 92

7.3. Управляющий выходной сигнал – выходной сигнал «состояние». 94

7.4. Управляющий выходной сигнал строб-импульс 94

7.5. Аналоговые сигналы.. 95

7.6. Цифроаналоговые преобразователи. 95

7.6.1 Цифроаналоговое преобразование 96

7.6.2 Основные типы ЦАП. 96

7.6.2.1 ЦАП со взвешенными резисторами. 97

7.6.2.2 ЦАП с цепочкой резисторов типа R—2R. 97

7.6.3 Другие типы ЦАП. 99

7.7. Аналоговые преобразователи. 100

7.7.1 Аналогоцифровое преобразование 100

7.7.2 Основные типы АЦП. 101

7.7.2.1 Двухтактные интегрирующие АЦП. 102

7.7.2.2 АЦП последовательного приближения. 104

7.7.3 Другие типы АЦП. 105

7.7.3.1 Преобразователи напряжения в частоту. 105

7.7.3.2 Параллельные АЦП. 106

7.8. Факторы применения. 107

7.8.1 Характеристики ЦАП. 107

7.8.2 Характеристики АЦП. 112

7.9. Совместимость с системой. 114

7.10. Совместимость преобразователей (взаимозаменяемость) 117

8. Позиционные системы счисления. 117

8.1. Методы перевода чисел. 119

8.2. Форматы представления чисел с плавающей запятой. 126

8.3. Двоичная арифметика. 128

9. Понятие и свойства алгоритма. 132

9.1. Определение алгоритма. 134

9.2. Свойства алгоритма. 135

9.3. Правила и требования, предъявляемые к построению алгоритма. 136

9.4. Типы алгоритмических процессов. 137

9.5. Принцип программного управления. 140

9.5.1 Принципы Джона фон Неймана. 140

9.5.2 Функциональная и структурная организация компьютера. 142

9.6. Выполнение арифметических операций с числами с фиксированной и плавающей запятой 147

9.6.1 Коды: прямой, обратный, дополнительный, 147

9.6.2 Операция сложения. 148

9.6.3 Операция умножения. 148

9.6.4 Операция деления. 149

10. Файлы данных. 150

10.1. Файловые структуры.. 150

10.2. Носители информации и технические средства для хранения данных. 159

10.3. Организация данных на устройствах с прямым и последовательным доступом. 162

11. Вычислительная техника. 163

11.1. Древнейшие счетные инструменты.. 163

11.2. Развитие абака. 166

11.3. Логарифмы.. 170

11.4. Суммирующая машина Блеза Паскаля. 170

11.5. Чарльз Бэббидж и его изобретение 174

11.6. Табулятор Холлерита. 177

11.7. Машина Ц3. 179

11.8. Марк I 180

11.9. ЭНИАК. 183

11.10. ЭДСАК. 186

11.11. МЭСМ.. 186

11.12. Машина электронная вычислительная общего назначения БЭСМ-6. 187

11.13. IBM 360. 188

11.14. Альтаир 8800. 189

11.15. Компьютеры Apple 190

11.16. IBM 5150. 191

12. Основы языка Object Pascal/Delphi 191

12.1. Описание структуры проекта. 191

12.2. Описание структуры модуля. 194

12.3. Описание элементов программ. 195

12.3.1 Элементы языка программирования-алфавит. 197

12.3.2 Элементы языка программирования-идентификаторы,константы, выражения 199

13. Выражения на Object Pascal 201

13.1. Целая и вещественная арифметика. 202

13.2. Приоритет операций. 205

13.3. Встроенные функции. Построение сложных выражений. 206

14. Типы данных. 208

14.1. Встроенные типы данных. Целые типы. Представление знака числа. Арифметическое переполнение 211

14.1.1 Встроенные типы данных. 211

14.1.2 Целые типы.. 214

14.1.3 Представление знака числа. 215

14.1.4 Арифметическое переполнение 216

14.2. Вещественные типы. Сопроцессор. 217

14.3. Текстовые типы.. 221

14.4. Логический тип. 222

14.5. Оператор присваивания. Совместимость типов по присваиванию. 223

15. Ввод-вывод данных. 225

15.1. Устройства вывода. 225

15.2. Объекты, обеспечивающие вывод данных на экран. 226

15.2.1 Перечень компонентов ввода и отображения текстовой информации. 226

15.2.2 Отображение текста в надписях компонентов Label, StaticText и Panel 227

15.2.3 Окна редактирования Edit и MaskEdit 229

15.2.4 Многострочные окна редактирования Memo и RichEdit 233

15.2.5 Группа радиокнопок – компонент RadioGroup. 237

15.2.6 Ввод и отображение целых чисел — компоненты UpDown и SpinEdit 238

15.2.7 Компоненты выбора из списков — ListBox, CheckBox, CheckListBox и ComboBox 239

15.2.8 Таблица строк — компонент StringGrid. 242

15.2.9 Функция InputBox. 243

15.2.10 Процедура ShowMessage 245

15.3. Вывод в текстовый файл. 248

15.3.1 Объявление файла. 248

15.3.2 Назначение файла. 248

15.3.3 Вывод в файл. 249

15.3.4 Открытие файла для вывода. 249

15.3.5 Ошибки открытия файла. 251

15.3.6 Закрытие файла. 252

15.4. Устройства ввода. Ввод с клавиатуры. Реакция на действия пользователя. 252

15.4.1 Устройства ввода. 252

15.5. Ввод из файла. 255

15.5.1 Открытие файла. 255

15.5.2 Чтение данных из файла. 256

15.5.3 Чтение чисел. 256

15.5.4 Чтение строк. 257

15.5.5 Конец файла. 258

16. Ветвление 259

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

16.2. Логические (булевские) операции. 260

16.3. Составной оператор. 262

16.4. Оператор ветвления if 262

16.5. Оператор ветвления case 264

16.6. Исключительные ситуации. 265

17. Циклы.. 266

17.1. Функции цикла в программе. Циклы с пред- и постусловием. 266

17.2. Оператор While. Вечные циклы. 267

17.3. Вечные циклы.. 269

17.4. Оператор REPEAT. Процедуры INC и DEC. 269

17.5. Цикл FOR. 270

17.6. Команды BREAK и CONTINUE. 271

17.7. Вложенные циклы.. 272

17.8. Примеры задач с циклами. 274

18. Массивы.. 275

18.1. Объявление массива. 275

18.2. Операции с массивами. 277

18.2.1 Вывод массива. 277

18.2.2 Ввод массива. 279

18.2.2.1 Использование компонента StringGrid. 279

18.2.2.2 Использование компонента Memo. 285

18.2.3 Поиск минимального (максимального) элемента массива. 288

18.2.4 Поиск в массиве заданного элемента. 290

18.2.4.1 Алгоритм простого перебора. 290

18.3. Ошибки при использовании массивов. 292

19. Функции. 294

19.1. Создание пользовательских функций. Передача аргументов. 294

19.2. Глобальные и локальные переменные 298

19.3. Примеры написания пользовательских функций. 301

20. Процедуры.. 301

20.1. Процедуры программиста. 302

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

20.3. Перегрузка процедур и функций. 304

20.4. Упреждающее объявление процедур и функций (forward) 306

20.5. Компиляция. Однопроходные компиляторы.. 307

21. Библиографический список. 310

22. Предметный указатель. 311


Понятие информатики

Информатика – это техническая наука, систематизирующая приемы создания, хранения, воспроизведения, обработки и передачи данных средствами… Основная задача – систематизация приемов и методов работы с аппаратными и… Цель систематизации – выделение, внедрение и развитие передовых и, наиболее эффективных технологий, автоматизация…

История развития информатики

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

Мировоззренческие экономические и правовые аспекты информационных технологий

Ø Общие положения Ø Информационные ресурсы Ø Пользование информационными ресурсами

Понятие информации и ее измерение

 

Информация(лат. information) – по ГОСТ 7.0-99 сведения, воспринимаемые человеком и (или) устройствами как отражение фактов материального или духовного мира в процессе коммуникации. В широком смысле – отражение реального мира; в узком смысле – любые сведения, являющиеся объектом хранения, передачи, и преобразования информации.

 

Меры информации

Рисунок 2.1 - Меры информации

 

Единицы измерения информации и примеры

Таблица 1.1 - Единицы измерения информации

Мера информации Единицы измерения Примеры
Синтаксическая: шенноновский подход компьютерный подход Степень уменьшения неопределенности Единицы представления информации Вероятность события Бит, байт, Кбайт и т.д.
Семантическая Тезаурус Экономический показатель Пакет прикладных программ, ПК, компьютерные сети Рентабельность, производительность и т.д.
Прагматическая Ценность использования Емкость памяти, производительность ПК, скорость передачи данных и т.д. Денежное выражение
Алгоритмическая Минимальное число внутренних состояний машины Машина Тьюринга

 

Синтаксическая мера информации

Объем данных Vд. в сообщение измеряется количеством символов (разрядов) в этом сообщении. В различных системах счисления один разряд имеет различный… Ø в двоичной системе счисления единица измерения - бит (bit-binary… Ø в десятичной системе счисления единица измерения – дит (десятичный разряд).

Семантическая мера информации

Тезаурус- это совокупность сведений, которыми располагает пользователь или система. В зависимости от соотношений между смысловым содержанием информации S и…

Прагматическая мера информации

 

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

 

Алгоритмическая мера информации

Каждый согласится, что слово 0101….01 сложнее слова 00….0, а слово, где 0 и 1 выбираются из эксперимента – бросания монеты (где 0-герб,1 –решка),… Любому сообщению можно приписать количественную характеристику, отражающую… Так как имеется много разных вычислительных машин и разных языков программирования (разных способов задания…

Количество и качество информации

Потребительские показатели качества: · репрезентативность, содержательность, достаточность · актуальность, своевременность, точность

Единицы измерения информации

В современные компьютеры мы можем вводить текстовую информацию, числовые значения, а также графическую и звуковую информацию. Количество информации,… 1 байт= 8 бит; 1 Кбайт= 1024 байт (Кбайт читается как килобайт);

Информацияи энтропия

Можем ли мы ввести разумную меру информации? Над этим вопросом задумался американский математик и инженер Клод Шеннон. Результатом размышлений стала…

Сообщения и сигналы

Шеннону удалось придумать удивительно простую и глубокую модель передачи информации, без которой теперь не обходится ни один учебник. Он ввел… Рисунок 2.4 – Схема процесса передачи информации.

Схема передачи информации

 

Поясним технические термины на простом примере. Вася передает Пете свое имя. Они сидят по разные стороны стола. Вася пишет на листе бумаги букву и передвигает лист к Пете. Петя читает букву и переносит ее на свой лист бумаги. Если передача завершится успешно, на листе у Пети будет последовательность: «ВАСЯ». Если по столу бегает котенок, который все время норовит столкнуть передаваемый листок на пол или расцарапать бумагу, то аналогия с шумом при передаче дискретного сообщения будет полной.

Вася здесь — Источник сообщений. Лист бумаги и написанный на нем символ (буква русского алфавита), рука, которая передвигает лист — Передатчик. Стол — Канал связи. Котенок — Источник шума (особенно если любит помяукать). Петя, получающий лист с написанной на нем буквой, — Приемник. Он копирует букву на свой лист. Если Петя понимает то, что прочел (то есть он умеет читать и ни один символ не был утрачен во время передачи), значит, Сообщение дошло до Получателя. Если Петя читать не умеет — передача Сообщения не состоится. Получатель — не может его принять. Эта простая схема воспроизводится в любой сколь угодно технически изощренной системе передачи информации.

 

Энтропия

Разные сообщения несут в себе разные объемы информации. Попробуем сравнить следующие два вопроса: 1. На каком из пяти курсов университета учится студент? 2. Как упадет монета при подбрасывании: вверх «гербом» или «цифрой»?

Избыточность

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

Сенсация

Понятия энтропии (непредсказуемости) сообщения и избыточности (предсказуемости) естественно соответствуют интуитивным представлениям о мере… Но понятие информации, по Шеннону, — это строгая математическая теория, и ее…  

Понятие информационной технологии

Технологияпри переводе с греческого (techne) означает искусство, мастерство, умение, а это не что иное, как процессы. Под процессом следует понимать… Под технологией материального производства понимают процесс, определяемый…  

Новая информационная технология

К настоящему времени информационная технология прошла несколько эволюционных этапов, смена которых определялась главным образом развитием… Новая информационная технология- информационная технология с… Три основных принципа новой (компьютерной) информационной технологии:

Инструментарий информационной технологии

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

Составляющие информационной технологии

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

Развитие информационных технологий

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

Нулевое поколение ИТ

 

В нулевом поколении (4000 г. до н.э. - 1900 г.) в течение шести тысяч лет наблюдалась эволюция от глиняных таблиц к папирусу, затем к пергаменту и, наконец, к бумаге. Имелось много новшеств в представлении данных: фонетические алфавиты, сочинения, книги, библиотеки, бумажные и печатные издания. Это были большие достижения, но обработка информации в эту эпоху осуществлялась вручную.

 

Первое поколение ИТ

Первое поколение (1900-1955) связано с технологией перфокарт, когда запись данных представлялась на них в виде двоичных структур. Процветание…  

Второе поколение ИТ

Второе поколение (программируемое оборудование обработки записей, 1955-1980 гг.) связано с появлением технологии магнитных лент, каждая из которых… Программное обеспечение этого времени поддерживало модель обработки записей на… Системы пакетной обработки транзакций сохраняли их на картах или лентах и собирали в пакеты для последующей обработки.…

Третье поколение ИТ

Третье поколение (оперативные базы данных, 1965-1980 гг.) связано с внедрением оперативного доступа к данным в интерактивном режиме, основанном на… Технические средства для подключения к компьютеру интерактивных компьютерных… Оперативные базы данных хранились на магнитных дисках или барабанах, которые обеспечивали доступ к любому элементу…

Четвертое поколение ИТ

Четвертое поколение (реляционные базы данных: архитектура «клиент - сервер», 1980-1995 гг.) явилось альтернативой низкоуровневому интерфейсу. Идея… Кроме повышения продуктивности и простоты использования реляционная модель… Параллельная обработка баз данных была вторым неожиданным преимуществом реляционной модели. Отношения являются…

Пятое поколение ИТ

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

Базовая информационная технология

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

Предметная информационная технология

Под предметной технологией понимается последовательность технологических этапов по преобразованию первичной информации в результатную в определенной… Упорядоченную последовательность взаимосвязанных действий, выполняемых в… Технологический процесс обработки информации зависит от характера решаемых задач, используемых технических средств,…

Обеспечивающая информационная технология

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

Функциональная информационная технология

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

Свойства информационных технологий

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

Сообщения и сигналы

 

Кодирование и квантование сигналов

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

Виды и характеристики носителей и сигналов

 

Характеристики сигналов, передаваемых по каналу

Сигнал может быть охарактеризован различными параметрами. Таких параметров, очень много, но для задач, которые приходится решать на практике,… Третьим важным параметром является спектр частот Fx . Эти три параметра позволяют представить любой сигнал в…

Модуляция сигналов

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

Виды и характеристики носителей

Если обозначить параметры носителя через a1 , a2 , …, an ,то носитель как функция времени может быть представлен в виде: UН =g(a1 , …, an ,t). Модулированный импульс (сигнал) можно описать в виде:

Спектры сигналов

Всё многообразие сигналов, используемых в информационных системах, можно разделить на 2 основные группы: детерминированные и случайные.… Это разделение является условным, так как детерминированных сигналов в точном… математический аппарат, используемый для анализа детерминированных сигналов, гораздо проще аппарата анализа случайных…

Периодические сигналы

Функция x(t) называется периодической, если при некотором постоянном Т выполняется равенство: x(t)=x(t+nT), где Т – период функции, n – любое целое (положительное или отрицательное) число, а аргумент t принимает значение из…

Тригонометрическая форма

Любой периодический сигнал x(t), удовлетворяющий условию Дирихле (x(t) – ограниченая, кусочно-непрерывная, имеет на протяжении периода конечное… . Это выражение указывает на то, что периодическая функция x(t), имеющая период Т может быть разложена по sin и cos…

Комплексная форма

В математическом отношении удобнее оперировать комплексной формой ряда Фурье. Её получают, применяя преобразование Эйлера  

Определение погрешности

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

Спектр

 

Совокупности коэффициентов ak, bk, k=1, 2, 3,…, разложения периодической функции x(t) в ряд Фурье называется частотными спектрами этой функции Совокупность амплитуд и соответствующих частот гармоник принято называть спектром амплитуд.

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

Спектр амплитуд и спектр фаз однозначно определяют сигнал. Однако для многих практических задач достаточно ограничиться спектром амплитуд.

Рисунок 4.2 - Спектр амплитуд и спектр фаз

 

Характерной особенностью спектра периодического сигнала является его прерывистость (дискретность). Расстояние между соседними спектральными линиями одинаковое и равно частоте основной гармоники.

 

Непериодические сигналы

Всякий непериодический сигнал можно рассматривать как периодический, период изменения которого равен ¥. В связи с этим спектральный анализ…  

Модуляция и кодирование

  Одним из способов выполнения операции вычитания является замена знака… A – B = A + (–B).

Прямой код числа

Пример: 1 = 0000 0001, -1 = 1000 0001. Таким образом,прямой код положительного числа совпадает с самим числом, а… [А]пр = |A|, при А>0 ;

Обратный код числа

Например, обратные коды чисел А1 = 0,11010 и А2 = -0,11010 будут иметь вид [А1]обр = 011010; [А2]обр = 100101. Обратный код двоичного числаявляется дополнением модуля числа до наибольшего… Примеры: +12(10 с.с.)=1100(2 с.с.)=0_1100(пр)=0_1100(обр) -15.25(10 с.с.)=-1111.01(2…

Дополнительный код числа

Идея на примере десятичного вычитания двухразрядных чисел: предположим, что надо выполнить вычитание 84-32 /результат 52/. Дополним 32 до 100 /это… Таким образом дополнительный код является математическим дополнением до… Дополнительный код отрицательного числа отличается от обратного кода тем, что после замены цифр производится сложение…

Модифицированный код числа

Например, обратные модифицированные коды чисел А1 = 0,11010 и А2 = -0,11010 запишутся в виде [А1]обр = 00,11010; [А2]обр = 11,00101. Дополнительные модифицированные коды этих же чисел будут иметь вид [А1]доп =…  

Систематические коды

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

Контроль по четности, нечетности, по Хеммингу

Кодирование по методу четности-нечетности

При этом допускается, что может возникнуть только одна ошибка. В самом деле, для случая четности правильным будет только половина возможных… Таблица 3.1 Пример реализации метода четности Число …  

Коды Хэмминга

  Рисунок 5.3 - Р. Хэмминг

Сетевые технологии обработки данных

Распределенная обработка данных

В эпоху централизованного использования ЭВМ с пакетной обработкой информации пользователи вычислительной техники предпочитали приобретать… Принцип централизованнойобработки данных не отвечал высоким требованиям к… Распределенная обработка данных— обработка данных, выполняемая на независимых, но связанных между собой компьютерах,…

Обобщенная структура компьютерной сети

Компьютерные сети являются высшей формой многомашинных ассоциаций. Основные отличия компьютерной сети от многомашинного вычислительного комплекса: … Размерность. В состав многомашинного вычислительного комплекса входят обычно… Разделение функций между ЭВМ. Если в многомашинном вычислительном комплексе функции обработки данных, передачи данных…

Классификация вычислительных сетей

 

В зависимости от территориального расположения абонентских систем вычислительные сети можно разделить на три основных класса:

глобальные сети (WAN — Wide Area Network);

региональные сети (MAN — Metropolitan Area Network);

локальные сети (LAN—Local Area Network).

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

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

Локальная вычислительная сетьобъединяет абонентов, расположенных в пределах небольшой территории: В настоящее время не существует четких ограничений на территориальный разброс абонентов локальной вычислительной сети. Обычно такая сеть привязана к конкретному месту. К классу локальных вычислительных сетей относятся сети отдельных предприятий, фирм, банков, офисов и т.д. Протяженность такой сети можно ограничить пределами 2 - 2,5 км.

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

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

 

Каналы передачи данных и их характеристики

Обобщенные характеристики сигналов и каналов

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

Характеристики канала передачи информации без помех

Рисунок 5.4 - Структура канала передаи информации без помех  

Характеристики каналов передачи информации с помехами

Рисунок 5.5 - Структура канала передаи информации с помехами  

Методы повышения помехоустойчивости передачи и приема

В основах всех способов повышения помехоустойчивости информационных систем лежит использование определенных различий между полезным сигналом и… В настоящее время известно большое число способов повышения помехоустойчивости… I группа – основана на выборе метода передачи сообщений.

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

Для передачи сообщений в вычислительных сетях используются различные типы каналов связи. Наиболее распространены выделенные телефонные каналы и… Особняком в этом отношении стоят ЛВС, где в качестве передающей среды… Чтобы обеспечить передачу информации из ЭВМ в коммуникационную среду, необходимо согласовать сигналы внутреннего…

Представление информации в цифровых автоматах (ЦА).

Коды как средство тайнописи появились в глубокой древности. Из­вестно, что еще древнегреческий историк Геродот к V в. до н.э. приводил примеры… Коды, использующие два различных элементарных сигнала, называются двоичными.… Двоичное кодирование тесно связно с принципом дихотомии, который реализуется в графическом методе представления…

Информационные основы контроля работы цифровых автоматов

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

Помехоустойчивость кода

Минимальное кодовое расстояние некоторого кода определяется как минимальное расстояние Хэмминга между любыми разрешенными кодовыми словами этого… Очевидно, что -кратная ошибка приводит к тому, что искаженная кодовая…

Методы помехоустойчивого кодирования

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

 

Метод контроля четности

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

Метод контрольных сумм

Рассмотренный выше метод контроля четности может быть применен многократно для различных комбинаций разрядов передаваемых кодовых слов – и это… Пример: Будем из входной последовательности символов брать по четыре информационных символа а1а2а3а4, дополнять их тремя…

Коды Хэмминга

Коды, предложенные американским ученым Р. Хэммингом, обладают способностью не только обнаружить, но и исправить одиночные ошибки. Эти коды –… По методу Хэмминга могут быть построены коды разной длины. При этом чем больше…  

Контроль по модулю

Рассмотрим основные положения из теории сравнений. Если целым числам А и В соответствует один и тот же остаток от деления на… А = В(mod р).

Числовой метод контроля

При числовом методе контроля код заданного числа определяется как наименьший положительный остаток от деления числа на выбранный модуль р: rA = A-{A/p}p где в фигурных скобках {} — целая часть от деления числа; А — контролируемое число.

Цифровой метод контроля

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

Выбор модуля для контроля

Достоинства числового метода контроля — в справедливости свойств сравнений для контрольных кодов, что облегчает контроль арифметических операций;… Так как rа ≡ А(mod р); r'А ≡ ∑аi(mod p), имеем аiqi ≡… Это равенство возможно тогда, когда почленно обе части выражения равны: аiqi ≡ аi(mod p), или qi ≡ l(mod…

Контроль логических операций

 

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

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

 

Операции сдвига

 

Пусть задано число А = апап-1 ...а1а0, имеющее контрольный код rа = аks...аk1.

Обозначим код числа А, сдвинутый влево, через (без циклического переноса) и (с циклическим переносом) (при сдвиге вправо стрелка в обозначении будет повернута направо). Соответствующим образом обозначим и контрольный код:; ; ; .

Cдвиг влево двоичного числа эквивалентен умножению на два. Так как при сдвиге числа происходит потеря некоторых его разрядов, можно предполагать, что контрольный код сдвинутого числа изменится на величину Δ:

,

где — сдвинутый влево контрольный код.

Величина Δ зависит от значений аn и аks,которые при сдвиге выходят за пределы разрядной сетки.

Если при сдвиге n-разрядного числа старшая единица выйдет за пределы разрядной сетки, то это эквивалентно вычитанию единиц из контрольного кода сдвинутого числа [— вес (n+ 1)-го разряда].

Если при сдвиге контрольного кода выходит за пределы разрядной сетки разряд аks = 1, то это эквивалентно уменьшению контрольного кода на 2S. Такую потерю надо восстановить прибавлением к контрольному коду единицы.

В общем случае предыдущее уравнение принимает вид

.

Веса разрядов кодовой комбинации, представленной в системе с основанием 2S, назначаются следующим образом:

 

s=3 an an-1 an-2 an-3…a3 a2 a2
Вес σ 22 21 20 22…22 21 20

 

В результате значения поправок Δ для контроля выполнения левого сдвига по модулю будут:

 

Значение an ….
Значение aks ….
Поправка Δ…. -1 +1

 

Значение поправки Δ можно заменить ее дополнением до модуля.

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

.

При сдвиге вправо происходит потеря младших разрядов числа и контрольного кода этого числа. Так как сдвиг вправо эквивалентен делению на 2, то

; .

Эти потери надо компенсировать. Значит, контрольный код сдвинутого вправо числа можно найти по формуле

.

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

 

Значение a1 ….
Значение ak1 ….
Поправка Δ для:        
p = 3….
p = 7.…

 

При модифицированном сдвиге вправо, который выполняется по правилу A = 1, an-1, an-2…a2a1; = 1, an-1…a3a2, происходит также потеря младших разрядов кодовой комбинации числа и контрольного кода. Для этого случая предыдущая формула сохраняет свой вид, но поправки должны быть следующими:

 

Значение a1 ….
Значение ak1 ….
Поправка ΔM для:        
p = 3….
p = 7.…

Операция сложения по модулю 2

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

Операция логического умножения.

Операцию логического умножения двух чисел можно выразить через другие арифметические и логические операции: . Умножение на 2-1 означает сдвиг кода числа, стоящего в скобках, вправо на один… где — контрольный код суммы, сдвинутый вправо на один разряд: — инверсия контрольного кода логической суммы чисел,…

Контроль арифметических операций

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

Арифметические коды

Контроль по модулю, рассмотренный ранее, позволяет эффективно обнаруживать одиночные ошибки. Однако одиночная ошибка в одном разряде может привести… Существуют два вида арифметических кодов. Арифметическим кодом 1-го вида будем называть код А∙N, где А — контролируемое число, N — модуль. Для таких кодов…

ЦАП и АЦП

Преобразование между аналоговыми и цифровыми величинами—основная операция, в вычислительных и управляющих системах, поскольку физические параметры,… ЦАП можно представить как цифровой управляемый потенциометр, который создает… В АЦП цифровое число на выходе зависит от отношения преобразуемого входного сигнала к опорному сигналу,…

Основные понятия относящиеся к преобразователям

 

На Рисунок 6.1 в виде структурной схемы изображены типичные связи ЦАП и АЦП. Возможны также и другие связи, такие как по входу или выходу генератора синхронизирующих импульсов, по дополнительным логическим входам или выходам, и связи, которые являются внутренними для преобразователя и выделены для удобства будущего потребителя, как например: связи по выводам источника опорного биполярного напряжения смещения.

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

 

Рисунок 7.1 - Структурная схема типичных связей преобразователей

 

Таблица 6.1. Входные и выходные сигналы преобразователей

ЦАП АЦП
Аналоговый сигнал Выходной сигнал: напряжение или ток, полярность, величина Входной сигнал: обычно напряжение, полярность, величина
Цифровой код Входной сигнал: поступающий через буферное запоминающее устройство или непосредственно последовательный или параллельный, код, логические уровни Выходной сигнал: последовательный или параллельный, код, логические уровни, синхронизация
Напряжение питания Аналоговое: обычно ± 15 Цифровое: +5 В (или другие) Аналоговое: обычно ± 15 Цифровое: +5 В (или другие)
Сигналы управления Входной сигнал: строб-импульс (ы) Входной сигнал: команда преобразования Выходной сигнал: импульс «состояние»
Опорный сигнал Внутренний или внешний, фиксированный или переменный, полярность Внутренний или внешний, фиксированный или переменный, полярность

 

Уровни цифровой логики

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

Управляющий выходной сигнал строб-импульс

Большинство цифроналоговых преобразователей, за исключением преобразователей последовательных типов (таких, которые основаны на зарядке емкостей),…  

Аналоговые сигналы

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

Цифроаналоговые преобразователи

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

Цифроаналоговое преобразование

На Рисунок 6.2 показана структурная схема ЦАП, который принимает 3-разрядное с дополнительным знаковым разрядом цифровое слово и преобразует его в… Рисунок 7.2 - Трех разрядный преобразователь с дополнительным знаковым разрядом

Основные типы ЦАП

Как упоминалось ранее, в настоящее время подавляющее большинство ЦАП, находящих сбыт, построены по двум основным схемам: в виде цепочки взвешенных…  

ЦАП со взвешенными резисторами

Преобразователи со взвешенными резисторами (Рисунок 6.3) содержат источник опорного напряжения, набор ключей, набор двоично-взвешенных прецизионных… Рисунок 7.3 - ЦАП, основанный на суммировании взвешенных токов

ЦАП с цепочкой резисторов типа R—2R

ЦАП с цепочкой резисторов типа R —2R также содержат источник опорного напряжения, набор ключей и операционный усилитель. Однако вместо набора… На Рисунок 6.4 показан простой 4-разрядный ЦАП с цепочкой резисторов типа R —…

Другие типы ЦАП

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

Аналоговые преобразователи

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

Аналогоцифровое преобразование

На Рисунок 6.5 показана элементарная модель аналогоцифрового преобразования с ЦАП, составляющим простой блок в системе преобразования. Импульс… Существенным недостатком этого метода является сравнительно большое время,…

Основные типы АЦП

 

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

 

Двухтактные интегрирующие АЦП

Двухтактный интегрирующий АЦП, как показано на Рисунок 6.6, содержит интегратор, некоторый логический узел управления, генератор тактовых импульсов,… Преобразователь этого типа подсчитывает последовательность импульсов…

АЦП последовательного приближения

Основные причины, по которым в вычислительных системах с преобразованием информации почти повсеместно используется способ последовательного… Этот тип преобразователя требует времени преобразования, равного произведению… Преобразователь последовательного приближения состоит из ЦАП, управляемого решающим логическим узлом, выходной сигнал…

Другие типы АЦП

Преобразователи напряжения в частоту

На Рисунок 6.9 показан типичный преобразователь напряжения в частоту. В нем входной аналоговый сигнал интегрируется и подается на компаратор. Когда… Рисунок 7.9 - АЦП напряжения в частоту

Параллельные АЦП

Последовательно-параллельный и просто параллельный преобразователи применяются главным образом там, где требуется максимально высокое… Рисунок 7.10 - Метод преобразования с параллельными компараторами - самый быстродействующий и самый простой

Факторы применения

Характеристики ЦАП

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

Характеристики АЦП

Характеристики АЦП подобны характеристикам ЦАП. Кроме того, почти все сказанное о характеристиках ЦАП справедливо и для характеристик АЦП. Они тоже… Преобразователь с n разрядами необязательно является n-разрядным… Все аналоговые цепи имеют внутренний шум. Если среднее квадратическое значение шума, приведенного ко входу АЦП или к…

Совместимость с системой

Перечень характеристик, даваемый фирмами изготовителями, является лишь отправной точкой при выборе подходящего АЦП или ЦАП. Некоторые системные… Преобразователь должен быть работоспособным в присутствии помех источников… Однако некоторые факторы, связанные с применением в системах, могут не быть так очевидны. Например, в зависимости от…

Совместимость преобразователей (взаимозаменяемость)

Большинство АЦП и ЦАП не являются универсально совместимыми по физическим, а некоторые и по электрическим параметрам. Физически корпуса различаются… Тем не менее, наблюдается некоторая тенденция в улучшении физической… С электрической точки зрения картина более благоприятная. Многие, хотя и не все, фирмы изготовители предусматривают…

Позиционные системы счисления

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

Методы перевода чисел.

Числа в разных системах счисления можно представить следующим образом:  

Перевод чисел делением на основание новой системы.

Пример. Перевести десятичное число A = 6110 в двоичную систему счисления (q = 2).   61 | 2

Табличный метод перевода.

Другой вид табличного метода заключается в том, что имеются таблицы эквивалентов в каждой системе только для цифр этих систем и степеней основания… Пример. Перевести десятичное число A = 11310 в двоичную систему счисления,…  

Форматы представления чисел с плавающей запятой.

 

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

Как и для целых чисел, при представлении действительных чисел в компьютере чаще всего используется двоичная система, следовательно, предварительно… Нормализованная записьотличного от нуля действительного числа - это запись…  

Представление чисел с плавающей запятой.

Пример: Если истинный порядок равен -5, тогда смещённый порядок для 4-байтового числа…  

Алгоритм представления числа с плавающей запятой.

Представить число -25,625 в машинном виде с использованием 4 байтового представления (где 1 бит отводится под знак числа, 8 бит - под смещённый…   Этап 1:

Двоичная арифметика.

 

Правила сложения:

Пример. Сложить двоичные числа 11012 и 110112.

Запишем слагаемые в столбик и пронумеруем разряды, присвоив младшему разряду номер 1:

 

номера разрядов:

5 4 3 2 1

+ 1 1 0 1

1 1 0 1 1

 

Процесс образования результата по разрядам описан ниже:

  1. разряд 1 формируется следующим образом: 1 + 1 = 10; 0 остается в разряде 1, 1 переносится во второй разряд;
  2. разряд 2 формируется следующим образом: 0 + 1 + 1 = 10, где вторая 1 - единица переноса; 0 остается в разряде 2, 1 переносится в третий разряд;
  3. третий разряд формируется следующим образом: 1 + 0 + 1 = 10, где вторая 1 - единица переноса; 0 остается в разряде 3, 1 переносится в разряд 4;
  4. четвертый разряд формируется следующим образом: 1 + 1 + 1 = 11, где третья 1 - единица переноса; 1 остается в разряде 4, 1 переносится в пятый разряд;
  5. пятый разряд формируется следующим образом: 1 + 1 = 10; где вторая 1 - единица переноса; 0 остается в разряде 5, 1 переносится в шестой разряд.

 

Таким образом:

1 1 0 1

+ 1 1 0 1 1

1 0 1 0 0 0

 

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

Поскольку 13 + 27 = 40, двоичное сложение выполнено верно.

 

Пример. Сложить шестнадцатеричные числа 1С16 и 7В16.

Запишем слагаемые в столбик и пронумеруем разряды, присвоив младшему разряду номер 1:

 

номера разрядов:

2 1

+1 С

7 В

 

Процесс образования результата по разрядам описан ниже (он включает преобразование в процессе сложения каждой шестнадцатеричной цифры в десятичное число и обратные действия):

  1. разряд 1 формируется следующим образом: С16 + В16 = 12 + 11 = 23 = 1716; 7 остается в разряде 1; 1 переносится в разряд 2;
  2. разряд 2 формируется следующим образом: 116 + 716 + 116 = 916, где вторая 116 - единица переноса.

 

Таким образом:

1 С

+7 В

9 7

 

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

Поскольку 28 + 123 = 151, сложение выполнено верно.

Правила вычитания:

Пример. Вычесть из двоичного числа 1012 двоичное число 112.

Запишем алгебраические слагаемые в столбик в порядке "уменьшаемое - вычитаемое" и пронумеруем разряды, присвоив младшему разряду номер 1:

 

номера разрядов:

3 2 1

-1 0 1

1 1

 

Процесс образования результата по разрядам описан ниже:

  1. разряд 1 формируется следующим образом: 1 - 1 = 0;
  2. разряд 2 формируется следующим образом: поскольку 0 меньше 1 и непосредственное вычитание невозможно, занимаем для уменьшаемого единицу в старшем разряде 3. Тогда разряд 2 рассчитывается как 10 - 1 = 1;
  3. третий разряд формируется следующим образом: поскольку единица была занята в предыдущем шаге, в разряде остался 0.

 

Таким образом:

1 0 1

- 1 1

1 0

 

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

По Таблица 7.2 имеем:

1012 = 5;

112 = 3;

102 = 2.

Поскольку 5 - 3 = 2, вычитание выполнено верно.

 

Пример. Вычесть из шестнадцатеричного числа 9716 шестнадцатеричное число 7В16.

Запишем алгебраические слагаемые в столбик в порядке "уменьшаемое - вычитаемое" и пронумеруем разряды, присвоив младшему разряду номер 1:

 

номера разрядов:

2 1

-9 7

7 В

 

Процесс образования результата по разрядам описан ниже:

  1. разряд 1 формируется следующим образом: поскольку 7 меньше В и непосредственное вычитание невозможно, занимаем для уменьшаемого единицу в старшем разряде 2. Тогда 1716 - В16 = 23 - 11 = 12 = С16;
  2. разряд 2 формируется следующим образом: поскольку единица была занята в предыдущем шаге, разряд 2 уменьшаемого стал равным 816. Тогда разряд 2 рассчитывается как 8166 - 716 = 116.

 

Таким образом:

9 7

-7 В

1 С

 

Вычитание выполнено верно (см. пример про сложение).

 

Правила умножения:

Пример. Умножить двоичное число 1012 на двоичное число 112.

Запишем множители в столбик и пронумеруем разряды, присвоив младшему разряду номер 1:

 

номера разрядов:

3 2 1

1 0 1

1 1

 

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

  1. умножение множимого на разряд 1 множителя дает результат: 1012 * 12 = 1012;
  2. умножение множимого на разряд 2 множителя дает результат: 1012 * 102 = 10102. Здесь значение разряда 2 множителя сформировано по принципам формирования значения числа в позиционных системах счисления;
  3. для получения окончательного результата складываем результаты предыдущих шагов: 1012 + 10102 = 11112.

 

Для проверки результата найдем полное значение сомножителей и произведения (см. Таблица 7.2):

1012 = 5;

112 = 3;

11112 = 15.

Поскольку 5 * 3 = 15, умножение выполнено верно.

 

Пример. Умножить шестнадцатеричное число 1С16 на шестнадцатеричное число 7В16.

Запишем множители в столбик и пронумеруем разряды, присвоив младшему разряду номер 1:

 

номера разрядов:

2 1

1 С

7 В

 

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

  1. умножение множимого на разряд 1 множителя дает результат: 1С16 * В16 = 28 * 11 = 308 = 13416;
  2. умножение множимого на разряд 2 множителя дает результат: 1С16 * 716 = 28 * 112 = 3136 = С4016. Здесь значение разряда 2 множителя сформировано по принципам формирования значения числа в позиционных системах счисления;
  3. для получения окончательного результата складываем результаты предыдущих шагов: 13416 + С4016 = D7416.

 

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

16 = 28;

16 = 123;

.

Поскольку 28 * 123 = 3444, умножение выполнено верно.

 

Правила деления:

Рассмотрим правила деления только для двоичных чисел, поскольку деление шестнадцатеричных чисел проще выполнять, переведя их предварительно в десятичную систему счисления.

Пример. Разделить двоичное число 11112 на двоичное число 112.

Решение задачи представим схемой:

Для проверки правильности результата преобразуем двоичные числа в десятичные:

11112 = 15;

112 = 3;

15 / 3 = 5;

5 = 1012.

Деление выполнено верно.

 

Понятие и свойства алгоритма

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

Определение алгоритма

Само слово “алгоритм” происходит от algorithmi - латинской формы написания имени аль-Хорезми, под которым в средневековой Европе знали величайшего… Алгоритм может быть предназначен для выполнения его человеком, группой людей… Одно из принципиальных обстоятельств состоит в том, что исполнитель не вникает в смысл того, что он делает, но…

Свойства алгоритма

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

Правила и требования, предъявляемые к построению алгоритма

Первое правило - при построении алгоритма, прежде всего необходимо задать множество объектов, с которыми будет работать алгоритм. Формализованное… Это правило позволяет сразу отделить алгоритмы от "методов" и… Второе правило - для работы алгоритма требуется память. В памяти размещаются входные данные, с которыми алгоритм…

Типы алгоритмических процессов

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

Принцип программного управления

Принципы Джона фон Неймана

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

Функциональная и структурная организация компьютера

Рассмотрим устройство компьютера на примере самой распространенной компьютерной системы — персонального компьютера. Персональным компьютером (ПК)… Принцип открытой архитектуры заключается в следующем: · Регламентируются и стандартизируются только описание принципа действия компьютера и его конфигурация (определенная…

Выполнение арифметических операций с числами с фиксированной и плавающей запятой

  Для машинного представления отрицательных чисел используют коды прямой,… Прямой код числа A = – 0, a1 a2 ... an – машинное изображение этого числа в виде [A]пр = 1, a1 a2 ... an.

Операция сложения

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

Операция умножения

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

Операция деления

где Å – операция сложения по mod 2; Sg A – знак делимого A; Sg B – знак делителя B. Для определения цифр частного Ci используют следующие правила. Правило 1. Если делимое A и делитель B представлены в соответствии с Таблица 8.1 ,

Файлы данных

В разных источниках по информатике и вычислительной технике определения термина "файл" так же, как и термина "операционная…  

Файловые структуры

Программная часть файловой системы, определяемая ее назначением, должна содержать следующие компоненты: Ø средства взаимодействия с процессами пользователей, которые должны… Ø средства, реализующие методы доступа к внутренним составным элементам файла и к файлу в целом, а также…

Носители информации и технические средства для хранения данных

Устройства хранения информации называются накопителями. В основе их работы лежат разные принципы (в основном это магнитные или оптические… Накопители на жестких магнитных дисках (НЖМД). Накопитель содержит один или… Сами диски представляют собой обработанные с высокой точностью керамические или алюминиевые пластины, на которые…

Организация данныхна устройствах с прямым и последовательным доступом

Под организацией данных понимается способ расположения записей файла во внешней памяти (на носителе записи). Наибольшее распространение получили… 1. Последовательная организация. Записи в файле располагаются в физическом… 2. Прямая организация. Прямая (или произвольная) организация файла может использоваться только на магнитных дисках и…

Вычислительная техника

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

Древнейшие счетные инструменты

Древнейшим счетным инструментом, который сама природа предоставила в распоряжение человека, была его собственная рука. «Понятие числа и фигуры,—… Имена числительные во многих языках указывают, что у первобытного человека… По словам знаменитого русского путешественника Н. И. Миклухо-Маклая, туземцы Новой Гвинеи считали следующим образом:…

Развитие абака

Бирки и веревки с узелками не могли удовлетворить возраставшие в связи с развитием торговли потребности в средствах вычисления. Развитию же… Во-первых, не было подходящего материала для выполнения вычислений — глиняные… Происхождение термина «абак»не установлено. Большинство историков производят его от семитического корня; согласно…

Логарифмы

Термин «логарифм» возник из сочетания греческих слов logos — отношение, соотношение и arithmos — число. Основные свойства логарифма позволяют заменить умножение, деление, возведение… Логарифмом обозначается обычно loga N. Логарифм с основанием е = 2,718... называется натуральным и обозначается ln N.…

Суммирующая машина Блеза Паскаля

В 1640 г. попытку создать механическую вычислительную машину предпринял Блез Паскаль (1623—1662). Существует мнение, что «на идею счетной машины Блеза Паскаля натолкнуло, по… Первая работающая модель машины была готова уже в 1642 году. Паскаля она не удовлетворила, и он сразу же начал…

Чарльз Бэббидж и его изобретение

В 1812 года Чарльз Бэббидж начинает размышлять о возможных способах машинного вычисления таблиц. Бэббидж (Babbage) Чарльз (26 декабря 1791, Лондон — 18 октября, 1871, там же),… Он хорошо знал, что всевозможные математические таблицы широко используются в практической деятельности землемеров,…

Табулятор Холлерита

Вооруженные карандашом и бумагой или в лучшем случае суммирующей машиной американские статистики 19 века испытывали острую необходимость в… В 1882 году он принял должность преподавателя машиностроения в Массачусетском… Первоначально он предполагал использовать в качестве носителя информации бумажную ленту с пробитыми в ней…

Машина Ц3

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

Марк I

 

В 1937 году американский физик Говард Гатуэй Айкен начал работать в Гарвардском университете над тезисами своей диссертации. Айкену было около сорока — возраст, не типичный для диссертанта. Нетипичным был и его путь в науку.

Закончив военно-техническую школу в Индианаполисе, Айкен поступил в Висконсинский университет, где в 1923 году получил степень бакалавра в области электротехники. Но еще в 1919 году, будучи студентом, Айкен начал служить в Мэдисонской газовой компании, специализируясь на разработке и исследовании генераторов сильных токов. Добившись некоторых успехов, он в 1928 году перешел в фирму «Вестингауз». Но молодого инженера тянуло к «основам науки» — математике и физике, и в 1931 году он снова становится студентом, на этот раз Чикагского университета. В следующем году, окончательно порвав с Вестингаузом, он переходит в Гарвард, где завершает свое научное образование.

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

Фирма IBM, согласившаяся финансировать создание машины, выделила в распоряжение Айкена четырех инженеров. Работа продолжалась около пяти лет, и в августе 1944 года была закончена и передана Гарвардскому университету «Вычислительная машина с автоматическим управлением последовательностью операций» (АСКК), известная под названием «Марк I».

Замечательно, что ее автором был человек, широтой своих интересов — инженер, математик, физик,— напоминавший Чарльза Бэббиджа. С идеями великого англичанина Айкен познакомился случайно, спустя три года после начала работы над «Марк I». Пораженный предвидением Бэббиджа, он писал: «Живи Бэббидж на 75 лет позже, я остался бы безработным!»

В «Марк I» использовались механические элементы для представления чисел и электромеханические — для управления работой машины. Как и в аналитической машине, числа хранились в регистрах, состоящих из десятизубых счетных колес. Каждый регистр содержал 24 колеса, причем 23 из них использовались для представления числа, а одно — для представления его знака. Регистр имел механизм передачи десятков и поэтому использовался не только для хранения чисел; находящееся в одном регистре могло быть передано в другой регистр и добавлено к находящемуся там числу (или вычтено из него).

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

Всего в «Марк I» было 72 регистра и, кроме того, дополнительная память из 60 регистров, образованных механическими переключателями. В эту дополнительную память вручную вводились константы — числа, которые не изменялись в процессе вычислений.

Умножение и деление производились в отдельном устройстве. Кроме того, машина имела встроенные релейные блоки для вычисления функций sin х, 10х и log х. Скорость выполнения арифметических операций в среднем составляла: сложение и вычитание —0,3 секунды, умножение — 5,7 секунды, деление—15,3 секунды. Таким образом, «Марк I» был «эквивалентен» примерно 20 операторам, работающим с ручными счетными машинами.

Работой «Марк I» управляли команды, вводимые с помощью перфорированной ленты. Каждая команда кодировалась посредством пробивки отверстий в 24 колонках, идущих вдоль ленты, и считывалась с помощью контактных щеток. Совокупность электрических сигналов, полученных в результате «прощупывания» позиций данного ряда, определяла действие машины на данном шаге вычислений (Рисунок 11.13).

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

 

Рисунок 11.13 - «Марк 1»

 

В качестве устройств вывода Айкен использовал пишущие машинки и перфораторы. «Марк I» содержал все основные блоки аналитический машины: устройства ввода и вывода, устройство управления, память («склад») и арифметическое устройство («мельница»).

Вслед за пуском «Марк I» гарвардская группа, оформившаяся в вычислительную лабораторию университета во главе с все тем же Айкеном, начала работу над «Марк II». В этой машине для запоминания чисел, выполнения арифметических операций и операций управления должны были использоваться электромеханические реле. Законченная в 1947 году «Марк II» содержала около 13 000 таких реле и была, таким образом, чисто, релейной вычислительной машиной.

Числа в «Марк II» представлялись в форме с плавающей запятой, то есть в виде а∙10 , где а содержит до 10 значащих цифр, а порядок в заключен в пределах —15 ≤ в ≤ 15.

Каждая десятичная цифра представлена в двоичной форме и хранится в группе из четырех реле.

В двоичной системе счисления используются две цифры— 0 и 1, и любое число поэтому представляется как последовательность нулей и единиц. Например, число 53 в двоичной системе выглядит как 110101. Широкое использование двоичной системы в вычислительной технике обусловлено существованием простых технических аналогов двоичной цифры — электромеханических реле и электронных триггеров, которые могут находиться в одном из двух устойчивых состояний. Тогда одному из них можно поставить в соответствие 0, а другому—1. Нетрудно видеть, что для представления одной десятичной цифры потребуется 4 двоичных разряда (скажем, цифра 9 выглядит как 1001). В «Марк II» используется не чисто двоичное, а двоично-десятичное представление чисел, поэтому для представления десятиразрядной десятичной мантиссы требуется 4 * 10 двоичных разрядов (и реле соответственно). Еще 4 реле идут на представление показателя и 2 реле используются для хранения знака мантиссы и показателя. Таким образом, каждый из 100 регистров машины содержит 46 реле.

Для ввода чисел в регистр и вывода их (на эти операции уходит примерно 0,033 секунды) используется еще 16 реле. Короткие арифметические операции выполняются в сумматоре, который в отличие от «Марк I» отделен от памяти, Время выполнения операций сложения и вычитания занимает примерно 0,125 секунды. Умножение выполняется в отдельном устройстве и требует в среднем 0,25 секунды, а операция деления заменена операцией вычисления приближенных значений обратных величин. В машине предусмотрены специализированные устройства для вычисления функций 10х, cos х, sin x; log х. Так же как в «Марк I», для управления машиной используется перфолента, а вывод результатов осуществляется с помощью печатающих механизмов.

 

ЭНИАК

 

Десятилетний период преимущественного применения электровакуумных приборов в универсальных ЦВМ (50-е годы) характеризуется развертыванием серийного производства ЦВМ с хранимой программой, выделением электронной вычислительной техники в самостоятельную область техники, оказывающую влияние на развитие других областей научно-технического прогресса, и созданием электронной вычислительной промышленности в ряде экономически развитых стран.

Первая электронная вычислительная машина ЭНИАК была построена в США (1946), хотя технические предпосылки для создания электронно-вычислительных машин имелись по многих странах с высокоразвитой промышленностью, в том числе и в СССР. Но в результате военных действий второй мировой войны промышленность почти всех высокоразвитых государств сильно пострадала. Ущерб, нанесенный фашистскими захватчиками нашей стране, был колоссальным. Для США же годы второй мировой войны были годами бурного экономического развития. Обладая мощной промышленной базой, США имели возможность проводить разносторонние научные и технические исследования. Хотя большинство этих исследований было прямо пли косвенно связано с военными нуждами, однако диапазон и размах научно-исследовательской работы были значительно шире, чем в других странах. Наиболее ярким примером может служить огромный объем работ по проекту «Манхеттен» (создание атомной бомбы). Постройка первой электронной ЦВМ также целиком финансировалась за счет военных ассигнований. Разумеется, это нисколько не умаляет выдающегося вклада конструкторов ЭНИАК в развитие вычислительной техники, хотя и показывает, что в США в тот период времени имелись наиболее благоприятные условия для реализации подобных проектов.

Работа над ЭНИАКом проходила в обстановке чрезвычайной секретности. Не удивительно поэтому, что выдающийся американский математик Джон фон Нейман узнал о ней совершенно случайно. Будучи консультантом крупнейшей в США Абердинской баллистической лаборатории, он летом 1944 года встретил на железнодорожной станции Абердина своего старого знакомого Германа Гольдстайна. В разговоре тот упомянул о работах Моучли — Эккерта. «Когда Джонни увидел, к чему мы пришли, он двумя ногами прыгнул в электронные вычислительные машины»,— вспоминал впоследствии Гольдстайн.

НЕЙМАН (Нойман) (Neumann) Джон (Янош) фон (3 декабря 1903, Будапешт — 8 февраля 1957, Вашингтон), американский математик и физик. Труды по функциональному анализу, квантовой механике, логике, метеорологии. Внес большой вклад в создание первых ЭВМ и разработку методов их применения. Его теория игр сыграла важную роль в экономике.

МОКЛИ (Mauchly) Джон Уильям (30 августа 1907, Цинциннатти, шт. Огайо — 8 января 1980, Эмблер, шт. Пенсильвания), американский физик и инженер, изобретатель в1946 совместно с П. Эккертом первого универсального компьютера «Эниак» (ENIAC Electronic Numerical Integrator and Computer).

ЭККЕРТ (Eckert) Джон Преспер-младший (9 апреля 1919, Филадельфия, шт. Пенсильвания — 3 июня 1995, Брин Мор, там же), американский инженер. В 1946, совместно с Дж. Мокли, изобрел первый универсальный компьютер, ставший прототипом большинства современных компьютеров.

Естественно, что фон Нейман легко мог оценить огромное практическое значение быстродействующих вычислительных машин и включился в работу над ними. Он присоединился к группе Моучли — Эккерта тогда, когда конструкция ЭНИАКа была выбрана (Рисунок 11.14 и Рисунок 11.15). Однако, как у Бэббиджа в процессе работы над разностной машиной возникла идея аналитической, так и в муровской группе до завершения ЭНИАКа родилась идея принципиально новой ЭВМ!

Трудно назвать автора этой идеи. По-видимому, она возникла в результате дискуссий трех главных идеологов нового направления —Д. фон Неймана, Г. Гольдстайна и А. Беркса — впоследствии декана факультета вычислительной техники Мичиганского университета. Эти ученые изложили основные принципы построения вычислительных машин нового типа в ставшей теперь классической статье: «Предварительное рассмотрение логической конструкции электронного вычислительного устройства». Главные положения этой статьи — обоснование использования двоичной системы для представления чисел и принцип «хранимой программы».

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

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

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

Для устранения этого недостатка фон Нейман и его коллеги предложили «принцип хранимой программы», в соответствии с которым программа, как и исходные числовые данные, вводилась и хранилась в памяти машины. Из памяти отдельные команды извлекались в устройство управления, где их содержание декодировалось (расшифровывалось) и использовалось для передачи чисел из памяти в арифметическое устройство, выполнения операций над ними и отсылки результата обратно в память. Команды предварительно вводились в последовательные регистры памяти и выполнялись в порядке очередности до тех пор, пока не встречалась команда перехода (условного или безусловного), направлявшая ход вычислительного процесса по одному из нескольких возможных путей. Такой подход позволял интерпретировать команды как числа и, следовательно, давал возможность осуществлять арифметические и логические операции над ними, автоматически (без вмешательства программиста) изменять и модифицировать их в процессе решения задачи.

Секретом успеха Неймана иногда считают его «аксиоматический метод». Он рассматривал предмет, сконцентрировавшись на его основных свойствах (аксиомах), из которых вытекает все остальное.

Рисунок 11.14 - Джон фон Нейман и его «детище»

Рисунок 11.15 - ЭНИАК

 

ЭДСАК

 

Первая машина с хранимой программой - "ЭДСАК" - была создана в Кембриджском университете (Англия) в 1949 г. Она имела запоминающее устройство на 512 ртутных линиях задержки. Время выполнения сложения было 0,07 мс, умножения - 8,5 мс (Рисунок 11.16).

 

Рисунок 11.16 - 1949г. ЭДСАК.

 

МЭСМ

 

В 1948г. году академик Сергей Алексеевич Лебедев предложил проект первой на континенте Европы ЭВМ - Малой электронной счетно-решающей машины (МЭСМ). В 1951г. МЭСМ официально вводится в эксплуатацию, на ней регулярно решаются вычислительные задачи. Машина оперировала с 20разрядными двоичными кодами с быстродействием 50 операций в секунду, имела оперативную память в 100 ячеек на электронных лампах (Рисунок 11.17).

Рисунок 11.17 - 1951г. МЭСМ

 

Машина электронная вычислительная общего назначения БЭСМ-6

1. Область применения: универсальная ЭВМ для решения широкого класс задач науки и техники (Рисунок 11.18 и Рисунок 11.19). 2. Описание машины: в структуре БЭСМ-6 впервые в отечественной практике и…  

IBM 360

В 1964 году фирма IBM объявила о создании шести моделей семейства IBM 360 (System 360), ставших первыми компьютерами третьего поколения. Модели имели единую систему команд и отличались друг от друга объемом…

Альтаир 8800

В январе 1975 года вышел свежий номер журнала "Popular Electronics", на обложке которого был изображен Рисунок 11.22 Altair 8800, сердцем…  

Компьютеры Apple

В 1976 году появился персональный компьютер Apple-1 (Рисунок 11.23). Он был разработан в середине 70-х Стивом Возняком. В то время он работал на… В 1977 году вышла вторая модель Apple 2 (Рисунок 11.24).

IBM 5150

12 августа 1981 года компания IBM выпустила персональный компьютерIBM 5150 (Рисунок 11.25). Компьютер стоил немалые деньги – 1565 долл. и имел всего… Внешний вид IBM 5150 для того времени был очень необычным – впервые монитор и…  

Описание структуры проекта

Любая программа в Delphi состоит из файла проекта (файл с расширением dpr) и одного или нескольких модулей (файлы с расширениями pas). Каждый из…   Структура проекта

Uses

Forms,

Unit1 in 'Unit1.pas' {Form1};

{$R *.res}

Begin

Application.Initialize;

Application.CreateForm(TForm1, Form1);

Application.Run;

End.

 

В окне кода жирным шрифтом выделяются так называемые зарезервированные слова, а курсивом - комментарии (так же выделяются зарезервированные слова и комментарии в книге). Как видим, текст программы начинается зарезервированным словом program и заканчивается словом end с точкой за ним. Замечу, что сочетание end со следующей за ней точкой называется терминатором программной единицы: как только в тексте программы встретится такой терминатор, компилятор прекращает анализ программы и игнорирует оставшуюся часть текста.

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

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

 

{$R *.RES}

 

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

Поскольку речь зашла о комментариях, замечу, что в Object Pascal в качестве ограничителей комментария могут также использоваться пары символов (*, *) и //. Скобки (*...*) допускают вложенные комментарии, а символы // указывают компилятору, что комментарий располагается за ними и продолжается до конца текущей строки:

 

{Это комментарий}

 

(*Это тоже комментарий*)

 

//Все символы до конца этой строки составляют комментарий

 

Слово Program со следующим за ним именем программы и точкой с запятой образуют заголовокпрограммы. За заголовком следует раздел описаний, в котором программист (или Delphi) описывает используемые в программе идентификаторы. Идентификаторыобозначают элементы программы, такие как типы, переменные, процедуры, функции (об элементах программы мы поговорим чуть позже). Здесь же с помощью предложения, которое начинается зарезервированным словом uses (использовать) программист сообщает компилятору о тех фрагментах программы (модулях), которые необходимо рассматривать как неотъемлемые составные части программы и которые располагаются в других файлах. Строки:

 

uses

 

Forms, Unit1 in 'Unitl.pas' {fmExample};

 

указывают, что помимо файла проекта в программе должны использоваться модули Forms и Unit1. модуль Forms является стандартным (т. е. уже известным Delphi), а модуль Unit1 - новым, ранее неизвестным, и Delphi в этом случае указывает также имя файла с текстом модуля (in 'uniti.pas') и имя связанного с модулем файла описания формы {fmExample}.

Собственно тело программыначинается со слова begin (начать) и ограничивается терминатором end с точкой. Тело состоит из нескольких операторов языка Object Pascal. В каждом операторе реализуется некоторое действие - изменение значения переменной, анализ результата вычисления, обращение к подпрограмме и т. п. В теле нашей программы - три исполняемых оператора:

 

Application.Initialize;

Application.CreateForm(TForm1, Form1);

Application.Run;

 

Каждый из них реализует обращение к одному из методов объекта Application. Я вынужден забежать вперед и хотя бы кратко пояснить только что введенные термины, которые определяют важные для Object Pascal понятия. Объектом называется специальным образом оформленный фрагмент программы, заключающий в себе данные и подпрограммы для их обработки. Данные называются полями объекта, а подпрограммы - его методами. Объект в целом предназначен для решения какой-либо конкретной задачи и воспринимается в программе как неделимое целое (иными словами, нельзя из объекта "выдернуть" отдельное поле или метод). Объекты играют чрезвычайно важную роль в современных языках программирования. Они придуманы для того, чтобы увеличить производительность труда программиста и одновременно повысить качество разрабатываемых им программ. Два главных свойства объекта - функциональность и неделимость - делают его самостоятельной или даже самодостаточной частью программы и позволяют легко переносить объект из одной программы в другую. Разработчики Delphi придумали для нас с вами сотни объектов, которые можно рассматривать как кирпичики, из которых программист строит многоэтажное здание программы. Такой принцип построения программ называется объектно-ориентированным программированием (ООП). В объекте Application собраны данные и подпрограммы, необходимые для нормального функционирования Windows-программы в целом. Delphi автоматически создает объект-программу Application для каждого нового проекта. Строка:

 

Application.Initialize;

 

означает обращение к методу Initialize объекта Application. Прочитав эту строку, компилятор создаст код, который заставит процессор перейти к выполнению некоторого фрагмента программы, написанного для нас разработчиками Delphi. После выполнения этого фрагмента (программисты говорят: после выхода из подпрограммы) управление процессором перейдет к следующей строке программы, в которой вызывается метод CreateForm и т. д.

 

Описание структуры модуля

Структура модуля Модули - это программные единицы, предназначенные для размещений фрагментов…  

Описание элементов программ

Элементы программы Элементы программы- это минимальные неделимые ее части, еще несущие в себе… · зарезервированные слова;

Элементы языка программирования-алфавит

Алфавит Алфавит языка Object Pascal включает буквы, цифры, шестнадцатеричные цифры,… Буквы - это буквы латинского алфавита от а до z и от А до Z , а также знак подчеркивания "_". В языке нет…

Элементы языка программирования-идентификаторы,константы, выражения

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

Выражения на Object Pascal

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

Целая и вещественная арифметика

Выражение состоит из операндов и операторов. Операторынаходятся между операндами и обозначают действия, которые выполняются над операндами. В…   Таблица 14.1 - Алгебраические операторы Оператор Действие + Сложение …

Приоритет операций

При вычислении значений выражений следует учитывать, что операторы имеют разный приоритет. В Object Pascal определены следующие операции: Ø унарные not, @ ;

Встроенные функции. Построение сложных выражений

В языке Object Pascal основной программной единицей является подпрограмма. Различают два вида подпрограмм: процедуры и функции. Как процедура, так и… Для выполнения часто встречающихся вычислений и преобразований язык Delphi… Значение функции связано с ее именем. Поэтому функцию можно использовать в качестве операнда выражения, например в…

Типы данных

В математике переменные классифицируются в соответствии с некоторыми важными характеристиками. Производится строгое разграничение между… Рисунок 14.1 - Структура типов данных.

Встроенные типы данных. Целые типы. Представление знака числа. Арифметическое переполнение

Встроенные типы данных

  - порядковые типы; - вещественные типы;

Целые типы

В Таблица 15.1 приведены характеристики целых типов языка программирования Object Pascal. Они различаются диапазоном допустимых значений и размером…   Таблица 15.1 - Целые типы Название Диапазон значений Размер, байт Byte …

Представление знака числа

Для беззнаковых величин все биты являются битами данных и вместо ограничения +32767 переменная может содержать числа до +65535. Для знаковых величин… Таким образом: - унарный знак + (плюс), поставленный перед параметром целого или вещественного типа, никак не влияет на его…

Арифметическое переполнение

Если в переменной можно хранить лишь неотрицательные значения (типы BYTE и WORD), то попытка записи в них отрицательного значения не вызовет ошибки.… Приведем другой пример: в стандартной настройке компилятор Delphi не…  

Вещественные типы. Сопроцессор

В отличие от порядковых типов, значения которых всегда сопоставляются с рядом целых чисел и, следовательно, представляются в ПК абсолютно точно,…   В переменных вещественных типов содержатся числа, состоящие из целой и дробной частей. В Object Pascal определено…

Текстовые типы

Текстовые (символьные) типы - это типы данных, состоящие из одного символа. В Windows используется код ANSI (по названию разработавшего этот код… В Object Pascal есть три символьных типа: Char, AnsiChar, и WideChar (Таблица…  

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

Логический тип данных, названный в честь английского математика XIX века Дж. Буля кажется очень простым. Но с ним связан ряд интересных моментов. … Во-первых, к данным этого типа применимы логические операции AND, OR, XOR,… Во-вторых, допустимы присваивания вида:

Оператор присваивания. Совместимость типов по присваиванию

 

Оператор в программе - это единое неделимое предложение, выполняющее какое-либо алгоритмическое действие. Тело программы представляет собой последовательность операторов. Необходимо заметить, что под любым оператором подразумевается действие (сравнение, присваивание, переход по программе и т.д.). Блоки описания переменных, констант, меток, типов и составляющие их предложения не являются в этом смысле операторами. Операторы, расположенные в программе друг за другом, разделяются точкой с запятой «;». Этот символ имеет значение конца оператора и разделяет записанные в одну строку операторы:

 

а:=45; b:=а*20;

 

Однако это не означает, что можно не закрывать единственные в строке операторы символом «;».

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

 

- оператор присваивания;

- вызов процедуры;

- оператор безусловного перехода GOTO;

- пустой оператор.

 

procedure TForm1.FormCreate(Sender: TObject);

begin

Button1.Caption:= 'Звук';

end;

 

Единственная строка в теле вышеприведенной процедуры представляет собой так называемый оператор присваивания языка Object Pascal. В левой части оператора указывается свойство Button1.Caption, а в правой части - значение ' Звук ', которое мы хотим придать этому свойству. Связывает обе части комбинация символов “:=”, которая читается как “присвоить значение”. Символы “:=” всегда пишутся слитно, без разделяющих пробелов, хотя перед двоеточием и после знака равенства можно для лучшей читаемости программы вставлять пробелы. Как и любое другое предложение языка, оператор присваивания завершается точкой с запятой.

 

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

Итак, значение и переменная разделены парой «:=». Такое обозначение присваивания в Pascal введено по двум причинам:

- это четко разделяет операцию присваивания и операцию сравнения;

- это позволяет избежать правильных с точки зрения программирования, но странно выглядящих с точки зрения математики выражений вида "a=a+1", характерных для языков C или Basic.

Таким образом, для вычисления произведения двух чисел, хранящихся в переменных a и b, и занесения результата в переменную с нужно применить оператор:

 

с:=a*b;

 

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

В случае с целыми типами следует руководствоваться “вложенностью” типов, т.е. везде, где может использоваться Word, допускается использование Byte (но не наоборот), в LongInt “входит” SmallInt, который, в свою очередь, включает в себя ShortInt.

Текстовые константы совместимы с любым строковым типом.

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

 

Ввод-вывод данных

Устройства вывода

Монитор — устройство визуального отображения информации (в виде текста, таблиц, рисунков, чертежей и др.).  

Объекты, обеспечивающие вывод данных на экран

Перечень компонентов ввода и отображения текстовой информации

В библиотеке визуальных компонентов Delphi существует множество компонентов, позволяющих отображать, вводить и редактировать текстовую информацию. В…   Таблица 16.1 – Перечень визуальных компонентов Компонент Страница Описание …

Отображение текста в надписях компонентов Label, StaticText и Panel

Для отображения различных надписей на форме используются в основном компоненты Label, StaticText (появившийся только в Delphi 3) и Panel. Первые два… Тексты, отображаемые в перечисленных компонентах, определяются значением их…  

Окна редактирования Edit и MaskEdit

Для отображения текстовой информации, и даже с дополнительной возможностью прокрутки длинных текстов, можно использовать также окна редактирования… Внешнее оформление окон редактирования определяется свойством BorderStyle. В компонентах Edit и MaskEdit вводимый и выводимый текст содержится в свойстве Text. Это свойство можно устанавливать…

Try

A := StrToInt(Edit1.Text);

...{операторы, использующие переменную А}

except on EConvertError do

ShowMessage('Вы ввели ошибочное число;

повторите ввод');

 

Этот код обеспечивает сообщение пользователю об ошибке ввода и предотвращает ошибочные вычисления. Впрочем, это не лучший вариант предотвратить ошибочный ввод, поскольку пользователь узнает о своей ошибке только после того, как программа пытается использовать введенные данные. Лучше, если пользователь просто не сможет ввести неправильные символы. Например, если вы хотите, чтобы пользователь мог вводить в окно редактирования Edit только цифры и символ точки, вы можете в обработчик события OnKeyPress этого компонента вставить оператор:

if not (Key in ['0'..'9', ',']) then Key := #0;

 

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

Свойство MaxLength определяет максимальную длину вводимого текста. Если MaxLength = 0, то длина текста не ограничена. В противном случае значение MaxLength указывает максимальное число символов, которое может ввести пользователь.

Свойство Modified, доступное только во время выполнения, показывает, проводилось ли редактирование текста в окне. Если вы хотите использовать это свойство, то в момент начала работы пользователя с текстом Modified надо установить в false. Тогда при последующем обращения к этому свойству можно по его значению (true или false) установить, было или не было произведено редактирование.

Свойство PasswordChar позволяет превращать окно редактирования в окно ввода пароля. По умолчанию значение PasswordChar равно #0 — нулевому символу. В этом случае это обычное окно редактирования. Но если в свойстве указать иной символ (например, символ звездочки «*»), то при вводе пользователем текста в окне будут появляться именно эти символы, а не те, которые вводит пользователь. Тем самым обеспечивается секретность ввода пароля.

Компонент MaskEdit отличается от Edit тем, что в нем можно задать строку маски в свойстве EditMask. Маска состоит из трех разделов, между которыми ставится точка с запятой (;). В первом разделе — шаблоне – записываются специальным образом символы (см. Таблица 16.2 - Символы шаблона маски), которые можно вводить в каждой позиции, и символы, добавляемые самой маской. Во втором разделе записывается 1 или 0 в зависимости от того, надо или нет, чтобы символы, добавляемые маской, включались в свойство Text компонента. В третьем разделе указывается символ, используемый для обозначения позиций, в которых еще не осуществлен ввод. Прочитать результат ввода можно или в свойстве Text, которое в зависимости от вида второго раздела маски включает или не включает в себя символы маски, или в свойстве EditText, содержащем введенный текст вместе с символами маски.

Таблица 16.2 - Символы шаблона маски

! Наличие символа «!» означает, что в EditText недостающие символы предваряются пробелами, а отсутствие символа «!» означает, что пробелы размещаются в конце.
> Символ «>» означает, что все последующие за ним символы должны вводиться в верхнем регистре, пока не кончится маска или пока не встретится символ «<».
< Символ «<» означает, что все последующие за ним символы должны вводиться в нижнем регистре, пока не кончится маска или пока не встретится символ «>».
<> Символы «<>» означают, что анализ регистра не производится.
Символ «» означает, что следующий за ним символ является буквенным, а не специальным, характерным для маски. Например, символ «>» после символа «» воспримется как знак >, а не как символ, указывающий на верхний регистр.
L Символ «L» означает, что в данной позиции должна бытъ буква.
l Символ «l» означает, что в данной позиции может быть только буква или ничего.
A Символ «А» означает, что в данной позиции должна быть буква или цифра.
a Символ «а» означает, что в данной позиции может быть буква, или цифра, или ничего.
C Символ «С» означает, что в данной позиции должен быть любой символ.
c Символ «с» означает, что в данной позиции может быть любой символ или ничего.
Символ «0» означает, что в данной позиции должна быть цифра.
Символ «9» означает, что в данной позиции может быть цифра или ничего.
# Символ «#» означает, что в данной позиции может быть цифра, знак «+», знак «-» или ничего.
: Символ «:» используется для разделения часов, минут и секунд.
/ Символ «/» используется для разделения месяцев, дней и годов в датах.
  Символ « » означает автоматическую вставку в текст пробела.

 

Вводить маску можно непосредственно в свойство EditMask. Но удобнее пользоваться специальным редактором масок, вызываемым при нажатии кнопки с многоточием в строке свойства EditMask в Инспекторе Объектов.

В редакторе масок окно Sample Masks содержит наименования стандартных масок и примеры ввода с их помощью. В окно Input Mask надо ввести маску. Если вы выбираете одну из стандартных масок, то окно Input Mask автоматически заполняется и вы можете, если хотите, отредактировать эту маску.

Окно Character for Blanks определяет символ, используемый для обозначения позиций, в которых еще не осуществлен ввод (третий раздел маски). Индикатор Save Literal Characters определяет второй раздел маски: установлен, если второй раздел равен 1, и не установлен, если второй раздел равен 0.

Кнопка Masks позволяет выбрать и загрузить какой-либо другой файл стандартных масок. К сожалению, среди файлов стандартных масок, поставляемых с Delphi, отсутствует маска, соответствующая российским стандартам. Но вы легко можете сами сделать себе такой файл стандартных масок. Он делается в обычном текстовом редакторе и должен сохраняться как «только текст» с расширением .dem. Чтобы редактор масок Delphi видел этот файл, его надо сохранить в каталоге Delphi BIN. Каждая строка файла состоит из трех частей, разделяемых символом вертикальной черты. Первая часть состоит из пояснительного текста, появляющегося в левой панели окна Sample Masks редактора масок. Вторая часть — пример, который появляется в правой панели окна Sample Masks редактора масок. А третья часть — сама маска.

 

Телефон | 5551212 | !000-00-00;0;_

Телефон с кодом страны | 0955551212 | !(999) 000-00-00;0;_

Почтовый индекс | 123456 | !000000;1;_

Паспорт| VII123456 | !L-LL 999999;0;_

Дата с указанием дня | 270694 | !99/99/00;1;_

Дата без указания дня | 0694 | !99/00;1;_

Время с секундами | 210515 | ! 90:00:00;1;_

Время без секунд | 1345 | !90:00;1;_

 

Рассмотрим примеры масок. В приведенном выше файле маска для ввода номера телефона имеет вид:

 

!(999) 000-00-00;0;_

 

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

 

(___)___-__-__

 

Поскольку второй раздел маски равен 0, то при чтении введенных пользователем значений свойства EditText и Text будут различаться. Свойство EditText для примера будет равно (095) 123-45-67, а свойство Text будет равно 0951234567. Если второй раздел маски сделать равным 1, то значения обоих свойств будут равны (095) 123-45-67.

Рассмотрим еще пример. Если с помощью EditMask надо ввести, например, целое число без знака, состоящее не более, чем из двух цифр, можно задать маску 99;0;. Если число обязательно должно быть двузначным, то маска должна иметь вид 00;0;.

 

Многострочные окна редактирования Memo и RichEdit

Компоненты Memo и RichEdit являются окнами редактирования многострочного текста. Они так же, как и окно Edit, снабжены многими функциями,… В компоненте Memo формат (шрифт, его атрибуты, выравнивание) одинаков для… Компонент RichEdit работает с текстом в обогащенном формате RTF. При желании изменить атрибуты вновь вводимого…

Begin

Color:=FontDialog1.Font.Color;

Name:=FontDialog1.Font.Name;

Size:=FontDialog1.Font.Size;

Style:=FontDialog1.Font.Style;

end;

RichEdit1.SetFocus;

 

В приведенном коде присваивается поочередно значение каждого свойства. Но этот текст можно кардинально сократить, воспользовавшись тем, что объекты SelAttributes и Font совместимы по типу. Поэтому можно присвоить сразу все свойства одного объекта другому:

if FontDialog1.Execute then

RichEdit1.SelAttributes.Assign(FontDialog1.Font);

RichEdit1.SetFocus;

 

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

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

Но значения атрибутов в DefAttributes сохраняются и в любой момент эти значения могут быть методом Assign присвоены атрибутам свойства SelAttributes, чтобы вернуться к прежнему стилю.

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

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

 

Таблица 16.3 – Свойства типа TParaAttributes

Alignment Определяет выравнивание текста. Может принимать значения taLeftJustify (влево), taCenter (по центру) или taRightJustify (вправо).
FirstIndent Число пикселей отступа красной строки.
Numbering Управляет вставкой маркеров, как в списках. Может принимать значения nsNone — отсутствие маркеров, nsBullet — маркеры ставятся.
LeftIndent Отступ в пикселях от левого поля.
RightIndent Отступ в пикселях от правого поля.
TabCount Количество позиций табуляции.
Tab Значения позиций табуляции в пикселях.

 

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

 

RichEdit1.Paragraph.Alignment:=taLeftJustify; // Влево

RichEdit1.Paragraph.Alignment:=taCenter; // По центру

RichEdit1.Paragraph.Alignment:=taRightJustify;// Вправо

 

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

 

RichEdit1.Paragraph.Numbering:=nsBullet;

 

Уничтожение списка в текущем абзаце осуществляется оператором

 

RichEdit1.Paragraph.Numbering:=nsNone;

 

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

if (ABullet.Checked) then

RichEdit1.Paragraph.Numbering:=nsNone

else RichEdit1.Paragraph.Numbering :=nsBullet;

ABullet.Checked:=not ABullet.Checked;

 

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

Свойства TabCount и Tab имеют смысл при вводе текста только при значении свойства компонента WantTabs = true. Это свойство разрешает пользователю вводить в текст символ табуляции. Если WantTabs = false, то нажатие пользователем клавиши табуляции просто переключит фокус на очередной компонент и символ табуляции в текст не введется.

Мы рассмотрели основные отличия Memo и RichEdit. Теперь остановимся на общих свойствах этих окон редактирования.

Свойства Alignment и WordWrap имеют тот же смысл, что, например, в метках, и определяют выравнивание текста и допустимость переноса длинных строк. Установка свойства ReadOnly в true задает текст только для чтения. Свойство MaxLength определяет максимальную длину вводимого текста. Если MaxLength = 0, то длина текста не ограничена. Свойства WantReturns и WantTab определяют допустимость ввода пользователем в текст символов перевода строки и табуляции.

Свойство ScrollBars определяет наличие полос прокрутка текста в окне. По умолчанию ScrollBars = ssNone, что означает их отсутствие. Пользователь может в этом случае перемещаться по тексту только с помощью курсора. Можно задать свойству ScrollBars значения ssHorizontal, ssVertical или ssBoth, что будет соответственно означать наличие горизонтальной, вертикальной или обеих полос прокрутки.

Основное свойство окон Memo и RichEditLines, содержащее текст окна в виде списка строк и имеющее тип TStrings. Начальное значение текста можно установить в процессе проектирования, нажав кнопку с многоточием около свойства Lines в окне Инспектора Объектов. Перед вами откроется окно редактирования списков строк. Вы можете редактировать или вводить текст непосредственно в этом окне, или нажать кнопку CodeEditor и работать в обычном окне Редактора Кода. В этом случае, завершив работу с текстом, выберите из контекстного меню, всплывающего при щелчке правой кнопкой мыши, команду Close Page и ответьте утвердительно на вопрос, хотите ли вы сохранить текст в соответствующем свойстве окна редактирования.

Во время выполнения приложения вы можете заносить текст в окно редактирования с помощью методов свойства Lines типа TStrings. Этот тип широко используется в свойствах многих компонентов, и его описание вы можете найти в во встроенной справке Delphi. Здесь коротко укажем только на его основные свойства и методы, используемые в свойстве Lines.

Весь текст, представленный одной строкой типа String, внутри которой используются разделители типа символов возврата каретки и перевода строки, содержится в свойстве Text.

Доступ к отдельной строке текста вы можете получить с помощью свойства Strings[Index: Integer]. Индексы, как и везде в Delphi, начинаются с 0. Так что Memo1.Lines.Strings[0] — это текст первой строки. Учтите, что если окно редактирования изменяется в размерах при работе с приложением и свойство WordWrap = true, то индексы строк будут изменяться при переносах строк, так что в этих случаях индекс мало о чем говорит.

Свойство только для чтения Count указывает число строк в тексте.

Для очистки текста в окне надо выполнить процедуру Clear. Этот метод относится к самому окну, а не к его свойству Lines.

Для занесения новой строки в конец текста окна редактирования можно воспользоваться методами Add или Append свойства Lines. Для загрузки текста из файла применяется метод LoadFromFile. Сохранение текста в фале осуществляется методом SaveToFile.

Пусть, например, в вашем приложении имеется окно редактирования Edit1, в котором пользователь вводит имя сотрудника, и есть кнопка, при щелчке на которой в окно Memo1 должна занестись шапка характеристики этого сотрудника, после чего пользователь может заполнить текст характеристики.

Обработчик щелчка на кнопке может иметь вид:

 

Memo1.Clear;

Memo1.Lines.Add ('Х А Р А К Т Е Р И С Т И К А');

Memo1.Lines.Add('Сотрудник '+Edit1.Text) ;.

Memo1.SetFocus;

 

Загрузка в окно Memo1 текста из файла (например, хранящейся в файле характеристики сотрудника) может осуществляться командой

 

Memo1.Lines.LoadFromFile ('text.txt');

 

Сохранение текста в файле может осуществляться командой

 

Memo1.Lines.SaveToFile('text.txt');

 

Свойство SelStart компонентов Memo и RichEdit указывает позицию курсора в тексте или начало выделенного пользователем текста. Свойство CaretPos указывает на запись, поле X которой содержит индекс символа в строке, перед которым расположен курсор, а поле Y — индекс строки, в которой находится курсор (встроенная справка Delphi утверждает другое — что свойство CaretPos содержит координаты курсора в пикселях; но, к счастью, это не так). Таким образом, учитывая, что индексы начинаются с 0, значения Memo1.CaretPos.Y+1 и Memо1.CaretPos.X+1 определяют соответственно номер строки и символа в ней, перед которым расположен курсор.

 

15.2.5 Группа радиокнопок – компонент RadioGroup

 

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

Компонент RadioGroup — это панель группы радиокнопок. Это панель, которая может содержать регулярно расположенные столбцами и строками радиокнопки. Надпись в левом верхнем углу панели определяется свойством Caption. А надписи кнопок и их количество определяются свойством Items, имеющим тип TStrings. Щелкнув на кнопке с многоточием около этого свойства в окне Инспектора Объектов, вы попадете в редактор списков строк. В нем вы можете занести надписи, которые хотите видеть около кнопок, по одной в строке. Сколько строчек вы запишете — столько и будет кнопок.

Кнопки, появившиеся в панели после задания значений Items, можно разместить в несколько столбцов (не более 17), задав свойство Columns. По умолчанию Columns = 1, т.е. кнопки размещаются друг под другом.

Определить, какую из кнопок выбрал пользователь, можно по свойству ItemIndex, которое показывает индекс выбранной кнопки. Индексы, как всегда в Delphi, начинаются с 0. По умолчанию ItemIndex = -1, что означает отсутствие выбранной кнопки. Если вы хотите, чтобы в момент начала выполнения приложения какая-то из кнопок была выбрана (это практически всегда необходимо), то надо установить соответствующее значение ItemIndex во время проектирования. Если вы используете радиокнопки не для ввода, а для отображения данных, устанавливать значение ItemIndex можно программно во время выполнения приложения.

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

 

Ввод и отображение целых чисел — компоненты UpDown и SpinEdit

Компонент UpDown превращает Edit в компонент, в котором пользователь может выбирать целое число, изменяя его кнопками со стрелками. Если к тому же… Основное свойство компонента UpDown — Associate, связывающее кнопки со… Свойство AlignButton компонента UpDown, которое может принимать значения udLeft или udRight, определяет, слева или…

Компоненты выбора из списков — ListBox, CheckBox, CheckListBox и ComboBox

Компоненты ListBox и ComboBox отображают списки строк. Они отличаются друг от друга прежде всего тем, что ListBox только отображает данные и… Основное свойство обоих компонентов, содержащее список строк, — Items, имеющее… В компоненте ListBox имеется свойство MultiSelect, разрешающее пользователю множественный выбор в списке. Если…

Таблица строк — компонент StringGrid

 

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

Компонент StringGrid предназначен в первую очередь для отображения таблиц текстовой информации. Однако этот компонент может отображать и графическую информацию.

 

Таблица 16.5 - Основные свойства компонента

Cells[ACol, ARow: Integer]: string Строка, содержащаяся в ячейке с индексами столбца и строки ACol и ARow.
Cols[Index: Integer]: TStrings Список строк, содержащихся в столбце с индексом Index.
Rows[Index: Integer]: TStrings Список строк, содержащихся в строке с индексом Index.
Objects [ACol, ARow: Integer]: TObject; Объект, связанный со строкой, содержащейся в ячейке с индексами столбца и строки ACol и ARow.

 

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

Свойства ColCount и RowCount определяют соответственно число столбцов и строк, свойства FixedCols и FixedRows — число фиксированных, не прокручиваемых столбцов и строк. Цвет фона фиксированных ячеек определяется свойством FixedColor. Свойства LeftCol и TopRow определяют соответственно индексы первого видимого на экране в данный момент прокручиваемого столбца и первой видимой прокручиваемой строки.

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

Свойство Options является множеством, определяющим многие свойства таблицы: наличие разделительных вертикальных и горизонтальных линий в фиксированных (goFixedVertLine и goFixedHorzLine) и не фиксированных (goVertLine и goHorzLine) ячейках, возможность для пользователя изменять с помощью мыши размеры столбцов и строк (goColSizing и goRowSizing), перемещать столбцы и строки (goColMoving и goRowMoving) и многое другое. Важным элементом в свойстве Options является goEditing — возможность редактировать содержимое таблицы.

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

Среди множества событий компонента StringGrid следует отметить событие OnSelectСell, возникающее в момент выбора пользователем ячейки. В обработчик этого события передаются целые параметры ACol и ARow — столбец и строка выделенной ячейки, и булев параметр CanSelect — допустимость выбора. Параметр CanSelect можно использовать для запрета выделения ячейки, задав его значение false. А параметры ACol и ARow могут использоваться для какой-то реакции программы на выделение пользователя. Например, оператор

 

Label1.Caption:='Выбрана ячейка '

+IntToStr(ARow)+':'+IntToStr(ACol);

 

выдаст в метку Label1 номер выбранной ячейки. А оператор

 

Label1.Caption :=StringGrid1.Cells [ACol, ARow];

 

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

Функция InputBox

Окно ввода — это стандартное диалоговое окно, которое появляется на экране в результате вызова функции InputBox. Значение функции InputBox — строка,… В общем виде инструкция ввода данных с использованием функции InputBox… Переменная := InputBox(Заголовок, Подсказка, Значение);

Процедура ShowMessage

Вывести на экран окно с сообщением можно при помощи процедуры ShowMessageили функции MessageDlg. Процедура ShowMessageвыводит на экран окно с текстом и командной кнопкой ОК. … В общем виде инструкция вызова процедуры ShowMessageвыглядит так:

Вывод в текстовый файл

Объявление файла

Файл — это именованная структура данных, представляющая собой последовательность элементов данных одного типа, причем количество элементов… Как и любая структура данных (переменная, массив) программы, файл должен быть… В общем виде объявление файла выглядит так:

Назначение файла

Объявление файловой переменной задает только тип компонентов файла. Для того чтобы программа могла выводить данные в файл или считывать данные из… Имя файла задается вызовом процедуры AssignFile, связывающей файловую… Описание процедуры AssignFile выглядит следующим образом:

Вывод в файл

Непосредственно вывод в текстовый файл осуществляется при помощи инструкции write или writeln. В общем виде эти инструкции записываются следующим…   write (ФайловаяПеременная, СписокВывода) ;

Открытие файла для вывода

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

Var

f: TextFile; // файл

fName: String[80]; // имя файла

i: integer;

Begin

fName := Editl.Text;

AssignFile(f, fName);

Rewrite(f); // открыть для перезаписи

// запись в файл

for i: =0 to Memol.Lines.Count do // строки нумеруются с нуля

writeln(f, Memol.Lines[i]);

CloseFile(f); // закрыть файл

MessageDlg('Данные ЗАПИСАНЫ в файл ',mtlnformation,[mbOk],0);

end;

 

В листинге 16.2 приведена процедура, которая запускается нажатием командной кнопки: «Добавить». Она открывает файл, имя которого указано в поле Edit1, и добавляет в него содержимое поля Memol.

 

Листинг 16.2. Добавление в существующий файл

procedureTForm1.Button2Click(Sender: TObject);

Var

f: TextFile; // файл

fName: String[80];.// имя файла

i: integer; begin

fName := Editl.Text;

AssignFile(f, fName);

Append(f); // открыть для добавления

// запись в файл

fori:=0 toMemo1.Lines.Count do // строки нумеруются с нуля

writeln(f, Memo1.Lines[i]);

CloseFile(f); // закрыть файл

MessageDlg('Данные ДОБАВЛЕНЫ в файл ',mtInformation,[mbOk],0);

End;

 

Ошибки открытия файла

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

Закрытие файла

 

Перед завершением работы программа должна закрыть все открытые файлы. Это делается вызовом процедуры close. Процедура close имеет один параметр — имя файловой переменной. Пример использования процедуры:

 

Close(f).

 

Устройства ввода. Ввод с клавиатуры. Реакция на действия пользователя

Устройства ввода

К устройствам ввода можем отнести следующие: клавиатура, сканер, планшет. Клавиатура компьютера — устройство для ввода информации в компьютер и подачи… Все символы, набираемые на клавиатуре, немедленно отображаются на мониторе в позиции курсора (курсор — светящийся…

Ввод из файла

 

Программа может вводить исходные данные не только с клавиатуры, но и из текстового файла. Для того чтобы воспользоваться этой возможностью, нужно объявить файловую переменную типа TextFile, назначить ей при помощи инструкции AssignFile имя файла, из которого будут считываться данные, открыть файл для чтения (ввода) и прочитать (ввести) данные, используя инструкцию read или readln.

 

Открытие файла

Открытие файла для ввода (чтения) выполняется вызовом процедуры Reset, имеющей один параметр — файловую переменную. Перед вызовом процедуры Reset с… Например, следующие инструкции открывают файл для ввода:  

Чтение данных из файла

 

Чтение из файла выполняется при помощи инструкций read и readln, которые в общем виде записываются следующим образом:

read(ФайловаяПеременная, СписокПеременных);

readln(ФайловаяПеременная, СписокПеременных) ;

 

где:

· ФайловаяПеременная — переменная типа TextFile;

· СписокПеременных — имена переменных, разделенные запятыми.

 

Чтение чисел

Следует понимать, что в текстовом файле находятся не числа, а их изображения. Действие, выполняемое инструкциями read или readln, фактически состоит… Например, если текстовый файл а: data. txt содержит следующие строки: 23 15 45 28 56 71

Чтение строк

В программе строковая переменная может быть объявлена с указанием длины или без нее. Например:  

Конец файла

Пусть на диске есть некоторый текстовый файл. Нужно в диалоговое окно вывести содержимое этого файла. Решение задачи довольно очевидно: надо открыть… Для определения конца файла можно воспользоваться функцией EOF (End of File —… Значение функции EOF можно проверить сразу после открытия файла. Если при этом оно окажется равным True, то это…

Ветвление

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

 

Действие операций отношениясоответствует их математическому пониманию. Результатом этих операций является булевское значение (True, False).

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

При сравнении операндов указательного типа допустимо использование только операций = и <>. В Таблица 17.1 приведены все операции отношения. Два указателя равны только в том случае, если они ссылаются на один и тот же объект.

Таблица 17.1 Операции отношения

Операция Действие Выражение Результат
= Равно A = B True, если A = B
<> Не равно A <> B True, если A < B или A > B
< Меньше A < B True, если A < B
> Больше A > B True, если A > B
<= Меньше или равно A <= B True, если A < B или A = B
>= Больше или равно A >= B True, если A > B или A = B

В Таблица 17.2 приведены примеры операций отношений.

 

Таблица 17.2 Примеры операций отношения

Выражение Результат
123 = 132 False
123 <> 132 False
17 <= 19 True
17 > 19 False
7 >= 7 True
False <> True True
'ABC' < 'ABD' True

 

 

16.2. Логические(булевские) операции

 

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

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

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

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

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

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

Результатом выполнения логических (булевских) операций является логическое значение True или False. Операндами в логическом выражении служат данные типа Boolean.

 

Таблица 17.3 Логическиеоперации

Операция Действие Выражение A B Результат
not Логическое отрицание not A True   False
False   True
and Логическое И A and B True True True
True False False
False True False
False False False
or Логическое ИЛИ A or B True True True
True False True
False True True
False False False
xor Исключающее ИЛИ A xor B True True False
True False True
False True True
False False False

 

 

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

Таблица 17.4 и Таблица 17.5:

 

Таблица 17.4 Примеры

Выражение Результат
not (17 > 19) True
(7 <= 8) or (3 < 2) True
(7 <= 8) and (3 < 2) False
(7 <= 8) xor (3 < 2) True

 

Таблица 17.5 Примеры

  Десятичное значение Двоичное представление
Операнд A
Операнд B
not A
A and B
A or B
A xor B
A shl B
A shr B

 

Составной оператор

 

Составной операторпредставляет собой группу из произвольного числа операторов, отделенных друг от друга точкой с запятой и заключенную в так называемые операторные скобки - begin и end:

 

begin

<оператор 1>;

<оператор 2>;

 

<оператор N>

end

 

Частным случаем составного оператора является тело следующей программы:

 

var

X, Y : Integer;

begin

X := 4;

Y := 6;

Edit.Text:=IntToStr(X + Y); // Точка с запятой после этого оператора

не обязательна

end.

 

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

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

 

Оператор ветвления if

 

Оператор ветвления if- одно из самых популярных средств, изменяющих естественный порядок выполнения операторов программы. Вот его общий вид:

 

if <условие> then

<оператор 1>

Else

<оператор 2>;

 

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

При выполнении условного оператора сначала вычисляется условие, результат которого может принимать только булевский тип, а затем, в зависимости от значения результата (True, False), выполняется Оператор1, стоящий после ключевого слова then (если результат равен True), или Оператор2, стоящий после ключевого слова else (если результат равен False).

 

Поясним сказанное на примере:

var

A, B, C: Integer;

begin

A := 2;

B := 8;

if A > B then

C := A

else

C := B;

Edit.Text:=IntToStr(C);

end.

 

В данном случае значение выражения А > В ложно, следовательно появится сообщение C=8.

У оператора if существует и другая форма, в которой else отсутствует:

 

if <условие> then <оператор>;

 

Логика работы этого оператора if еще проще: выполнить оператор, если условие истинно, и пропустить оператор, если оно ложно. Поясним сказанное на примере:

 

var

A, B, C: Integer;

begin

A := 2;

B := 8;

C := 0;

if A > B then C := A + B;

Edit.Text:=IntToStr(C);

end.

 

В результате на экране появится сообщение С=0, поскольку выражение А > В ложно и присваивание С := А + В пропускается.

Один оператор if может входить в состав другого оператора if. В таком случае говорят о вложенности операторов. При вложенности операторов каждое else соответствует тому then, которое непосредственно ему предшествует. Например:

 

var

A: Integer;

begin

Readln(A);

if A >= 0 then

if A <= 100 then

Edit1.Text:= 'A попадает в диапазон 0 - 100.';

else

Edit1.Text:= 'A больше 100.';

else

Edit1.Text:= 'A меньше 0.';

end.

 

Конструкций со степенью вложенности более 2-3 лучше избегать из-за сложности их анализа при отладке программ.

 

Оператор ветвления case

 

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

 

case <переключатель> of

<список 1 значений переключателя>: <оператор 1>;

<список 2 значений переключателя>: <оператор 2>;

……

<список N значений переключателя>: <оператор N>;

else <оператор N+1>

end;

 

Оператор case вычисляет значение переключателя (который может быть задан выражением), затем последовательно просматривает списки его допустимых значений в поисках вычисленного значения и, если это значение найдено, выполняет соответствующий ему оператор. Если переключатель не попадает ни в один из списков, выполняется оператор, стоящий за словом else. Если часть else отсутствует, управление передается следующему за словом end оператору.

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

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

case StrToInt(Edit1.text) of

20..31: Label1.Caption:= 'День попадает в диапазон 20 - 31.';

1, 5..10: Label1.Caption:= 'День попадает в диапазон 1, 5 - 10.';

else Label1.Caption:= 'День не попадает в заданные диапазоны.';

end;

 

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

 

case StrToInt(Edit1.text) of

1, 5..10: Label1.Caption:= 'День попадает в диапазон 1, 5 - 10.';

20..31: Label1.Caption:= 'День попадает в диапазон 20 - 31.';

else Label1.Caption:= 'День не попадает в заданные диапазоны.';

end;

16.6. Исключительные ситуации

 

Для чего они нужны? Допустим, что у тебя есть участок кода, где может произойти ошибка. Как сделать так, чтобы программа не вылетала при её возникновении? Очень просто. Надо заключить этот код в блок проверки исключений и тогда твоя программа выдержит даже цунами.

Блок try...except (Рисунок 17.1) служит для обработки конкретных исключительных ситуаций(или более кратко - исключений). Этот блок имеет два наиболее характерных способа записи (полный и сокращенный), первый из которых неформально можно представить в следующем виде:

try

<СписокОператоров1>

except

on <Исключение1> do <Оператор1>;

on <Исключение2> do <Оператор2>;

. . . .

on <ИсключениеN> do <ОператорN>

else <СписокОператоровM>

end;

Рисунок 16.1 - Исключительные ситуации

Опишем принцип работы полного варианта блока try...ехсерt. Если в процессе работы проекта ошибок времени выполнения не происходит, то наличие блока обработки исключительных ситуаций никакого влияния на работу не оказывает. Если же при выполнении СпискаОператоро1 между зарезервированными словами try и except возникает исключительная ситуация, то выполнение СпискаОператоров1 прерывается, и управление передается в блок обработки исключения (Exception Block), который по структуре похож на оператор case. В случае, когда возникшая исключительная ситуация совпадает с одним из заголовков альтернатив on...do, то выполняется соответствующий этой альтернативе Оператор, в противном случае выполняется СписокОператоров2 (после зарезервированного слова else).

Кроме описанного полного варианта записи блока try...except, возможен еще и сокращенный, который в неформальном синтаксисе выглядит так:

 

try

<СписокОператоров1>

except

<СписокОператоров2>

end;

При использовании такого блока обработки исключений управление на Список0ператоров2 будет передано при любой ошибке, возникшей в процессе выполнения СпискаОператоров1. Если же ошибок при обработке СпискаОператоров1 не было, то СписокОператоров2 также, как и в полном варианте блока try...except, выполняться не будет.

Рассмотрим простейший пример:

TRY

x:=y/0;

EXCEPT

// Здесь можно вывести сообщение об ошибке.

END;

x:=0;

 

Между TRY и EXCEPT я вставил маленькое действие - деление на ноль. Компьютер не умеет делать такие вещи, поэтому произойдёт ошибка и выполнится код между EXCEPT и END. После обработки ошибки процедура заканчивает выполнение и все остальные операторы не будут выполнены, как, например, в нашем случае - x:=0; Если бы мы поменяли 0 на любое другое число, то ошибки бы не было, и код между EXCEPT и END никогда не выполнился бы.

Циклы

Функции цикла в программе. Циклы с пред- и постусловием

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

Вечные циклы

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

Пример использования:

t:=true;

while t do

begin

x:=100;

if x<10 then t:=false;

end;

Оператор REPEAT. Процедуры INC и DEC

Инструкция repeat, как и инструкция while, используется в программе если надо провести некоторые повторяющиеся вычисления (цикл), однако число повторов во время разработки программы неизвестно и может быть определено только во время работы программы, т. е. определяется ходом вычисления. В общем виде инструкция repeat записывается так:

 

Repeat

{инструкции}

until условие;

 

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

Инструкция repeat выполняется следующим образом: сначала выполняются инструкции, следующие за словом repeat. Затем проверяется условие (вычисляется значение выражения условие). Если условие ложно (значение выражения условие равно FALSE), то инструкции цикла (инструкции, находящиеся между repeat и until) выполняются еще раз. Если условие истинно (значение выражения условие равно TRUE), то выполнение цикла прекращается. Таким образом, инструкции, находящиеся между repeat и until выполняются до тех пор, пока условие ложно (значение выражения условие равно FALSE).

 

Пример использования:

 

x:=0;

repeat

x:=x+1;

until x=10;

 

Алгоритм, соответствующий инструкции repeat, представлен на Рисунок 18.2 - Блок-схема, соответствующая инструкции repeat.

 

 

Рисунок 17.2 - Блок-схема, соответствующая инструкции repeat

Обратите внимание.

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

Для того чтобы цикл завершился, необходимо, чтобы инструкции цикла, находящиеся между repeat и until, изменяли значения переменных, входящих в выражение условие

Процедура INC увеличивает порядок на 1 или N и соответствует утверждению X:=X+1 или X: = X + N.

 

procedure Inc(var X [ ; N: Longint ] ),

 

где X - переменная порядкового типа, N - выражение типа целого числа.

Процедура DEC уменьшает на 1 или N от переменной и соответствует утверждению X: = X - 1, или X: = X - N.

 

procedure Dec(var X[ ; N: Longint]),

 

где X - переменная порядкового типа, N - выражение типа целого числа.

Цикл FOR

Оператор forиспользуется, если некоторую последовательность действий надо выполнить несколько раз, причем число повторений заранее известно… В общем виде инструкция for записывается так:  

Команды BREAK и CONTINUE

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

Вложенные циклы

Если цикл включает в себя один или несколько циклов, то содержащий внутри себя другие циклы называется внешним, а цикл, содержащийся в другом цикле… При решении некоторых задач возникает потребность в организации вложенных… Например, требуется написать программу, которая печатает все целые числа, сумма квадратов которых равна заданному…

Примеры задач с циклами

1) Вычисление суммы элементов ряда.

 

program summr;

var

i:integer;

elem, summ:real;

begin

sum:=0;

for i:=1 to 5 do

begin

elem:=1/i;

sum:=sum+elem;

writeln(i:2,’’,elem:4:2);

end;

writeln(‘Сумма элементов ряда: ‘summ:4:2’);

end.

2) Вычисление числа ПИ с заданной точностью.

 

program pi;

var

n:integer;

p, t, elem:real;

begin

p:=0;

n:=1;

elem:=1;

write(‘Задайте точность вычисления ПИ ’);

readln(t);

writeln(‘Вычисление ПИ с точностью’,t:9:6);

while elem >= t do

begin

elem:=1/(2*n-1);

if (n mod 2) = 0

then p:=p-elem

else p:=p+elem;

n:=n+1;

end;

p:=p*4;

writeln(‘Значение ПИ с точностью’,t:9:6,’равно’,p:9:5);

writeln(‘Просуммировано’,n,’ членов ряда’);

end.

3) Вычисление суммы положительных чисел, введенных с клавиатуры.

 

program summrep;

var

summ, numb:integer;

begin

writeln(‘Вычисление суммы положительных целых чисел’);

summ:=0;

repeat

write(‘->’);

readln(numb);

if numb>0 then sum:=sum+numb;

until numb <= 0;

writeln(‘Сумма введенных чисел: ’summ);

end.

 

Массивы

 

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

 

Объявление массива

Массив, как и любая переменная программы, перед использованием должен быть объявлен в разделе объявления переменных. В общем виде инструкция… Имя: array[нижний_индекс. .верхний_индекс] ofтип где:

Операции с массивами

 

Типичными операциями при работе с массивами являются:

· вывод массива;

· ввод массива;

· поиск максимального или минимального элемента массива;

· поиск заданного элемента массива;

· сортировка массива.

 

Вывод массива

Под выводом массива понимается вывод на экран монитора (в диалоговое окно) значений элементов массива. Если в программе необходимо вывести значения всех элементов массива, то для… В качестве примера на Рисунок 19.1 приведено диалоговое окно приложения, которое демонстрирует инициализацию и процесс…

Interface

Uses

Windows, Messages, SysUtils, Variants,

Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls;

 

Type

TForm1 = class(TForm);

Button1: TButton;

Label1: TLabel;

 

procedure ButtonlClick(Sender: TObject);

Private

{ Private declarations }

Public

{ Public declarations }

End;

 

Var

Form1: TForm1;

 

Implementation

($R *.dfm}

Const

NT = 5;

 

Var

team: array[1..NT] of string[10] =

('Зенит','Динамо','Ротор','Спартак','СКА');

 

procedure TForml.ButtonlClick(Sender: TObject);

Var

st:string; // список команд

i:integer; // индекс, номер элемента массива

 

Begin

// формирование списка для отображения в форме

for i:=l to NT do st := st + IntToStr(i)+ ' '

+ team[i] + #13; // вывод списка Label1.Caption := st;

End;

End.

Ввод массива

Под вводом массива понимается процесс получения от пользователя (или из файла) во время работы программы значений элементов массива. "Лобовое" решение задачи ввода элементов массива — для каждого… Очевидно, что последовательность чисел удобно вводить в строку таблицы, где каждое число находится в отдельной ячейке.…

Использование компонента StringGrid

Для ввода массива удобно использовать компонент StringGrid. Значок компонента StringGrid находится на вкладке Additional (Рисунок 19.1).  

Interface

Uses

Windows, Messages, SysUtils, Variants,

Classes, Graphics, Controls, Forms, Dialogs, Grids, StdCtrls;

 

Type

TForm1 = class(TForm);

Label1: TLabel;

StringGridl: TStringGrid;

Button1: TButton;

Label2: TLabel;

 

procedure ButtonlClick(Sender: TObject);

Private

{ Private declarations }

 

Public

{ Public declarations }

End;

 

Var

Form1: TForml ;

 

Implementation

{$R *.dfm}

procedure TForml.ButtonlClick(Sender: TObject);

Var

a : array[1..5] of integer; // массив

summ: integer; // сумма элементов

sr: real; // среднее арифметическое

i: integer; // индекс

 

Begin

// ввод массива

// считаем, что если ячейка пустая, то соответствующий

// ей элемент массива равен нулю

 

for i:= 1 to 5 do

 

if Length(StringGridl.Cells[i-1, 0]) <>0

then a[i] := StrToInt(StringGridl.Cells[i-1,0])

else a[i] := 0;

 

// обработка массива

summ := 0;

for i :=1 to 5 do

summ := summ + a[i]; sr := summ / 5;

 

//вывод результата

Label2.Caption :='Сумма элементов: ' + IntToStr(summ)

+ #13+ 'Среднее арифметическое: ' + FloatToStr(sr);

End;

 

End.

 

После пробных запусков программы возникает желание внести изменения в процесс ввода массива. Так, было бы неплохо, чтобы курсор автоматически переходил в следующую ячейку таблицы, например, в результате нажатия клавиши <Enter>. Сделать это можно при помощи процедуры обработки события onKeyPress. На эту же процедуру можно возложить задачу фильтрации вводимых в ячейку таблицы данных. В нашем случае надо разрешить ввод в ячейку только цифр.

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

 

Листинг 3. Процедура обработки события OnKeyPress

 

procedure TForm1.StringGridlKeyPress(Sender: TObject; var Key: Char);

Begin

case Key of

#8,'0'..'9' : ; // цифры и клавиша <Backspace>

#13: // клавиша <Enter>

 

if StringGridl.Col < StringGridl.ColCount — 1

then StringGridl.Col := StringGridl.Col + 1;

else key := Chr(0); // остальные символы запрещены

End;

 

End;

 

Если нужно ввести массив дробных чисел (a: array [1. .5] of real), то процедура обработки события OnKeyPress несколько усложнится, т. к. помимо цифр допустимыми символами являются символ-разделитель (запятая или точка — зависит от настройки Windows) и минус. С целью обеспечения некоторой дружественности программы по отношению к пользователю можно применить трюк: подменить вводимый пользователем неверный разделитель верным. Определить, какой символ-разделитель допустим в текущей настройке Windows, можно, обратившись к глобальной переменной DecimaiSeparator.

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

Листинг 4. Ввод и обработка массива дробных чисел

 

unit. getar_1; interface

uses

Windows, Messages, SysUtils, Variants, Classes,

Graphics, Controls, Forms, Dialogs, Grids, StdCtrls;

 

type

TForm1= class(TForm);

Label1: TLabel;

StringGrid1: TStringGrid;

Button1: TButton;

Label2: TLabel;

 

procedure Button1ClicktSender: TObject);

procedure StringGridlKeyPress(Sender: TObject; var Key: Char);

 

private

{ Private declarations }

public

{ Public declarations }

end;

 

var

Form1: TForm1;

 

implementation

{$R *.dfm}

 

procedure TForm1.ButtonlClick(Sender: TObject);

var

a : array[1..5] of real; // массив

suram: real; // сумма элементов

sr: real; // среднее арифметическое

i: integer; // индекс

 

begin

// ввод массива

// считаем, что если ячейка пустая, то соответствующий

// ей элемент массива равен нулю

 

for i:= 1 to 5 do

if Length(StringGridl.Cells[i-l,0])<>0

then a[i] := StrToFloat(StringGridl.Cells[i-1, 0]) else a[i] := 0;

 

// обработка массива

summ := 0;

for i :=1 to 5 do

summ := summ + a[i]; sr := summ / 5;

 

// вывод результата

Label2.Caption :='Сумма элементов: ' + FloatToStr(summ)

+ #13+ 'Среднее арифметическое: ' + FloatToStr(sr);

end;

 

// Функция обеспечивает ввод в ячейку только допустимых символов

procedure TForm1.StringGridlKeyPress(Sender: TObject; var Key: Char);

 

begin

case Key of

#8,'0'..'9' : ; // цифры и <Backspace>

#13: // клавиша <Enter>

if StringGridl.Col < StringGridl.ColCount - 1

then StringGridl.Col := StringGridl.Col + 1; '.',',':

 

// разделитель целой и дробной частей числа

begin

if Key <> DecimalSeparator then

Key := DecimalSeparator;

// заменим разделитель

// на допустимый

 

if Pos(StringGridl.Cells[StringGridl.Col,0],

DecimalSeparator) <> 0

then Key := Chr(O); // запрет ввода второго

// разделителя

end;

 

' -' : // минус можно ввести только первым символом,

// т. е. когда ячейка пустая

if Length(StringGrid1.Cells[StringGrid1.Col, 0]) <>0 then

Key := Chr(0) ;

else // остальные символы запрещены

key := Chr(0);

end;

end;

end.

 

Использование компонента Memo

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

Interface

Uses

Windows, Messages, SysUtils, Classes,

Graphics, Controls, Forms, Dialogs, Menus, StdCtrls;

 

Type

TForm1 = class(TForm)

Memo1: TMemo;

Button1: TButton;

Label1: TLabel;

 

procedure ButtonlClick(Sender: TObject);

 

Private

{ Private declarations }

 

Public

{ Public declarations }

End;

 

Var

Forml: TForm1;

 

Implementation

($R *.DFM}

procedure TForml .ButtonlClick(Sender: TObject);

Const

SIZE=5; // размер массива

 

Var

a:array[l..SIZE]of string[30]; //массив

n: integer; // количество строк, введенных в поле Memo

i:integer; // индекс элемента массива

st:string;

 

Begin

n:=Memo1.Lines.Count;

if n = 0 then begin

ShowMessage('Исходные данные не введены!');

Exit; // выход из процедуры обработки события

End;

 

// в поле Memo есть текст

if n > SIZE then begin

ShowMessage('Количество строк превышает размер массива.');

n:=SIZE; // будем вводить только первые SIZE строк

End;

 

for i:=1 to n do

a[i]:=Form1.Memol.Lines[i-1]; // строки Memo пронумерованы с нуля

 

// вывод массива в окно сообщения

if n > 0 then begin

st:='Введенный массив:'+#13;

 

for i: =1 to n do

st:=st+IntToStr(i)+' '+ a[i]+f13;

ShowMessage(st);

End;

End;

 

End.

 

Основную работу выполняет процедура TForm1.Button1Click, которая сначала проверяет, есть ли в поле Memo1 текст. Если текст есть (в этом случае значение свойства Lines.Count больше нуля), то процедура сравнивает количество введенных строк и размер массива. Если это количество превышает размер массива, то программа изменяет значение п, тем самым подготавливает ввод только первых SIZE строк.

 

На Рисунок 19.5 приведен вид диалогового окна приложения Ввод массива. После щелчка на командной кнопке Ввод появляется окно (Рисунок 19.6), которое содержит значения элементов массива, полученные из Memo-поля.

 

Рисунок 19.5 - Окно приложения Ввод массива

 

Рисунок 19.6 - Массив, введенный из Memo-поля

 

Поискминимального (максимального) элемента массива

Задачу поиска минимального элемента массива рассмотрим на примере массива целых чисел. Алгоритм поиска минимального (максимального) элемента массива довольно… Диалоговое окно приложения поиска минимального элемента массива содержит соответствующим образом настроенный компонент…

Interface

Windows, Messages, SysUtils, Classes, Graphics,

Controls, Forms, Dialogs, StdCtrls, Grids;

 

Type

TForm1 = class(TForm)

Label1: TLabel;

Button1: TButton;

Label2: TLabel;

StringGridl: TStringGrid;

 

procedure ButtonlClick(Sender: TObject);

Private

{ Private declarations )

 

Public

{ Public declarations }

End;

 

Var

Form1: TForm1;

Implementation

{$R *.DFM}

 

procedure TForm1.ButtonlClick(Sender: TObject);

Const

SIZE=5;

 

Var

a:array[l..SIZE] of integer; // массив целых

min:integer; // номер минимального элемента массива

i:integer; // номер элемента, сравниваемого с минимальным

 

Begin

// ввод массива

for i:=1 to SIZE do

a[i]:=StrToInt(StringGridl.Cells[i-1,0]);

 

// поиск минимального элемента

min:=1; // пусть первый элемент минимальный

for i:=2 to SIZE do

if a[i]< a[min] then min:=i;

 

// вывод результата

label2.caption:='Минимальный элемент массива:'

+IntToStr(a[min] +#13+'Номер элемента:'+ IntToStr(min);

 

End;

End.

 

На Рисунок 19.7 приведен вид диалогового окна приложения после щелчка на кнопке Поиск.

 

Рисунок 19.7 - Окно приложения Поиск минимального элемента массива

 

Поиск в массиве заданного элемента

При решении многих задач возникает необходимость определить, содержит ли массив определенную информацию или нет. Например, проверить, есть ли в… Для организации поиска в массиве могут быть использованы различные алгоритмы.… 18.2.4.1 Алгоритм простого перебора

Ошибки при использовании массивов

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

Библиографический список

1. Основы информатики: Учеб. пособие для вузов / А.Н. Морозевич, Н.Н. Говядинова, В.Г. Левашенко и др.; Под ред. А.Н. Морозевича. - Минск: Новое… 2. Симонович С.В. Информатика: Базовый курс: Учеб. пособие для втузов / Под… 3. Каймин В.А. Информатика: Учебник для вузов / В.А. Каймин. - М.: ИНФРА-М, 2002. - 272с., ил.

Предметный указатель

  «абак», 167 array, 276

– Конец работы –

Используемые теги: информатика0.032

Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Информатика

Что будем делать с полученным материалом:

Если этот материал оказался полезным для Вас, Вы можете сохранить его на свою страничку в социальных сетях:

Еще рефераты, курсовые, дипломные работы на эту тему:

Лекции по курсу Информатика Лекция 1. Основные понятия и методы теории информатики и кодирования. Информатика как научная дисциплина. Понятие информации и информационных процессов
Лекция Основные понятия и методы теории информатики и кодирования... Информатика как научная дисциплина... Понятие информации и информационных процессов...

ЛЕКЦИЯ 1. 3 ПОНЯТИЕ ПРАВОВОЙ ИНФОРМАТИКИ И ЕЕ ПРЕДМЕТ. Правовая информатика как наука и учебная дисциплина. О месте правовой информатики в системе наук и правоведении. 14
ВВЕДЕНИЕ... ЛЕКЦИЯ... ПОНЯТИЕ ПРАВОВОЙ ИНФОРМАТИКИ И ЕЕ ПРЕДМЕТ Правовая информатика как наука и учебная дисциплина...

Лекции 1.ОСНОВНЫЕ ПОНЯТИЯ И КАТЕГОРИЯ ИНФОРМАТИКИ. 2 ЛЕКЦИИ 2. МАТЕМАТИЧЕСКИЕ ОСНОВЫ ИНФОРМАТИКИ. СИСТЕМЫ СЧИСЛЕНИЯ. 12 ЛЕКЦИЯ 3. АППАРАТНОЕ ОБЕСПЕЧЕНИЕ ЭВМ. 20 ЛЕКЦИЯ 4. ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ КОМПЬЮТЕРОВ.. 49 Широко распространён также англоязычный вар
gl ОГЛАВЛЕНИЕ... Лекции ОСНОВНЫЕ ПОНЯТИЯ И КАТЕГОРИЯ ИНФОРМАТИКИ... ЛЕКЦИИ МАТЕМАТИЧЕСКИЕ ОСНОВЫ ИНФОРМАТИКИ СИСТЕМЫ СЧИСЛЕНИЯ...

Тема урока: Информация и её виды. Что изучает информатика? Техника безопасности в компьютерном классе Урок информатики в 10 классе 1 Из материалов сайта
Урок информатики в классе... Из материалов сайта Скородянской средней школы Губкинского района... Цель урока Познакомить учащихся с новым предметом Изучить понятие информации Воспитание умения слушать учителя...

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

ЛЕКЦИИ ПО КУРСУ ИНФОРМАТИКА Лекция 1. Введение. История информатики. Измерение
Лекция... Введение История информатики Измерение...

Конспект лекций по дисциплине Информатика Введение в информатику
Введение в информатику Определение инфоpматики В году... Формы существования информации... Информация может существовать в самых разнообразных формах...

Объект и предмет информатики. Структура Информатики
Информатика делится на ряд разделов... Теоретическая информатика... Основная статья Теоретическая информатика...

КУРС ЛЕКЦИЙ по дисциплине Информатика Лекция 1 1. Введение в информатику
Федеральное агентство по образованию... Государственное образовательное учреждение... высшего профессионального образования...

Рассматривается история развития информатики и излагается предмет информатики
Ключевые слова advanced brainware CD RW DARPA edu gov hardware Internet MAX net org science true Windows автомат база данных вектора... Хотя информатика и считается достаточно молодой наукой по отношению ко многим... При рассмотрении вопроса об истории информатики будем исходить из первых признаков и событий информационного обмена...

0.03
Хотите получать на электронную почту самые свежие новости?
Education Insider Sample
Подпишитесь на Нашу рассылку
Наша политика приватности обеспечивает 100% безопасность и анонимность Ваших E-Mail
Реклама
Соответствующий теме материал
  • Похожее
  • По категориям
  • По работам