Вводная лекция Преподаватель: Доцент Кафедры ВС, к.т.н. Поляков Артем Юрьевич ФГОБУ ВПО "СибГУТИ" Кафедра вычислительных систем © Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ» Дисциплины "ЯЗЫКИ ПРОГРАММИРОВАНИЯ" "ПРОГРАММИРОВАНИЕ"
Структура курса © Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ» 2 Продолжи- тельность 2 семестра (34 учебные недели) Виды занятий Лекционные (34 занятия); Лабораторные работы (34 занятия). Итоговый контроль зачет (1 семестр) экзамен (2 семестр) курсовой проект (2 семестр) Семестр 1 Изучение основ программирования. Форма практических занятий: решение учебных задач Семестр 2 Изучение алгоритмов и динамических структур данных. Получение навыков решения прикладных задач. Форма практических занятий: выполнение лабораторных и курсовой работ.
План занятий в осеннем семестре © Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ» 3 1.Введение в программирование. 2.Основные типы данных и управляющие конструкции языка СИ. 3.Обработка массивов данных. 4.Модульное программирование. 5.Обработка табличных данных. 6.Работа с текстовыми и бинарными файлами. 7.Преобразование типов данных, работа с указателями. 8.Классы памяти.
Аппаратурное обеспечение вычислительных машин © Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ» 4
Программное обеспечение вычислительных машин © Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ» 5 Системное ПО Прикладная программа 1 Прикладная программа 2 Прикладная программа N...
Хранение информации в вычислительных машинах © Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ» 6 Основная задача вычислительных средств – хранение и обработка информации Транзистор Элементная база позволяет создавать приборы, имеющие два устойчивых состояния Наиболее удобной является двоичная система счисления Конденсатор Ферромагнетики
Двоичная система счисления © Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ» 7 Цифры двоичной СС: 0, 1 x 10 x2x x 10 x2x = = = = = = 100 2
Связь двоичной и шестнадцатеричной СС © Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ» 8 x2x2 x 10 x x2x2 x 10 x А B C D E F Родственные СС, один шестнадцатеричный разряд представляется четырьмя двоичными
Связь двоичной и шестнадцатеричной СС (2) © Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ» 9 x2x2 x 10 x x2x2 x 10 x
Перевод x 2 x 16 © Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ» 10 Для перевода из двоичной СС в шестнадцатеричную достаточно разбить x 2 на 4-хразрядные блоки и перевести каждый из них по отдельности: = = 6D5 16 x2x2 x x2x2 x А 1011B 1100C 1101D 1110E 1111F
Перевод x 16 x 2 © Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ» 11 Для перевода из шестнадцатеричной СС в двоичную необходимо каждый разряд шестнадцатеричного числа представить 4-хразрядным двоичным числом: 2F8 16 = x2x2 x x2x2 x А 1011B 1100C 1101D 1110E 1111F
Единицы измерения информации © Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ» 12 БИТ – binary digit – разряд двоичного числа. БАЙТ - минимально адресуемый набор из 8 битов или 0 0 Килобайт (КБ) = 1024 байт Мегабайт (МБ) = 1024 КБ Гигабайт (ГБ) = 1024 МБ Терабайт (ТБ) = 1024 ГБ Петабайт (ПБ) = 1024 ТБ
Внутреннее представление беззнаковых целых чисел © Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ» 13 Беззнаковые (unsigned) целые числа в памяти хранятся в виде двоичного представления исходного целого числа, например: = = Хранение чисел в ЭВМ базируется на их двоичном представлении. Различают знаковые и беззнаковые целые, а также вещественные числа
Представление текстовой информации © Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ» 14 Хранение информации возможно только в виде двоичных чисел. Текст не является числом или набором чисел! Требуется способ преобразовать текст в набор чисел (оцифровать) Текст имеет естественное разбиение на: 1.слова 2.буквы
Представление текстовой информации (2) © Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ» 15 Текст кодируется посимвольно. Каждому символу сопоставляется уникальное число. Данное отображение называется кодировкой. Пример: таблица ASCII-кодов. Симв.Код 16 Код 10 'a'6198 'b'6299 'c'63100 'd'64101 'e'65102 'f'66103 Симв.Код 16 Код 10 '1'3048 '2'3149 '3'3250 '4'3351 '5'3452 '6'3553
Представление текстовой информации (3) © Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ» A.B.C.D.E.F 0.NULSOHSTXETXEOTENQACKBELBSTABLFVTFFCRSOSI 1.DLEDC1DC2DC3DC4NAKSYNETBCANEMSUBESCFSGSRSUS 2. !"#$ %&'()*+,./ : ; ? 5.PQRSTUVWXYZ[\]^_ 6.`abcdefghijklmno 7.pqrstuvwxyz{|}~DEL Полная версия таблицы ASCII-кодов. Коды указаны в шестнадцатеричной системе счисления
Неформальное определение программирования © Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ» 17 Процесс обучения часто незаинтересованного исполнителя с целью заставить его решать нужную Вам задачу. Исполнитель способен выполнять только ограниченный набор базовых действий (команд). Для выполнения нестандартных действий необходимо предоставить исполнителю инструкцию (алгоритм), состоящую из известных команд. После того, как исполнитель обучен выполнять новый вид команд, их можно использовать для дальнейшего обучения.
Пример © Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ» 18 3 литра 5 литров Необходимо отмерить 4 литра Базовые действия (команды) 1.Набрать полную 3л бутыль. 2.Набрать полную 5л бутыль. 3.Перелить из 3л в 5л 4.Перелить из 5л в 3л. 5.Вылить 3л 6.Вылить 5л Требуется инструкция (алгоритм), позволяющая на основе базовых операций достичь требуемой цели
Алгоритмы решения 1 © Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ» 19 Базовые действия (команды) 1.Набрать полную 3л бутыль. 2.Набрать полную 5л бутыль. 3.Перелить из 3л в 5л 4.Перелить из 5л в 3л. 5.Вылить 3л 6.Вылить 5л Алгоритм: 1. Набрать полную 5л бутыль. 2. Перелить из 5л в 3л. 3. Вылить 3л. 4. Перелить из 5л в 3л. 5. Налить полную 5л бутыль. 6. Перелить из 5л в 3л. 1. 5Л0Л 2. 2Л3Л 3. 2Л0Л 4. 0Л2Л 5. 5Л2Л 6. 4Л3Л
Алгоритмы решения 2 © Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ» 20 Базовые действия (команды) 1.Набрать полную 3л бутыль. 2.Набрать полную 5л бутыль. 3.Перелить из 3л в 5л 4.Перелить из 5л в 3л. 5.Вылить 3л 6.Вылить 5л Алгоритм: 1. Набрать полную 3л бутыль. 2. Перелить из 3л в 5л. 3. Набрать полную 3л бутыль. 4. Перелить из 3л в 5л. 5. Вылить 5л. 6. Перелить из 3л в 5л. 7. Набрать полную 3л бутыль. 8. Перелить из 3л в 5л. 1. 0Л3Л 2. 3Л0Л 3. 3Л 4. 5Л1Л 5. 0Л1Л 6. 1Л0Л 7. 1Л3Л 8. 4Л0Л
Обработка информации (упрощенный процессор) © Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ» 21 R1R1 R2R2 Устр. управл. АЛУ КомандаКодОписание ADD01R 1 + R 2 SUB02R 1 – R 2 MUL03R 1 * R 2 DIV04R 1 / R 2 РегистрКодОписание R1R1 01Регистры общего назначения R2R2 02
Специфика обработки информации на современных процессорах © Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ» 22 R1R1 R2R2 Устр. управл. АЛУ 1.Количество регистров не позволяет хранить большие объемы информации 2.Арифметико-логическое устройство (АЛУ) служит для выполнения доступных комманд. 3.Устройство управления обеспечивает выполнение команд
Задача поиска корней уравнения вида: а·x + b = c © Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ» 23 1.Решение задачи математически. Выражение неизвестной переменной x через известные переменные a, b и c: x = (c – b)/a 2.Реализация вычислений по полученной формуле на упрощенном процессоре 3.Входные данные (значения a, b и c) вводятся с клавиатуры или из файла и размещаются в оперативной памяти в ячейках A (адрес 10), B(20) и C(30). Адрес – порядковый номер первого байта ячейки. 4.Результат записывается в ячейку X с адресом 40.
Вычисление x = (c – b)/a на упрощенном процессоре © Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ» 24 R1R2 Исполнительное устройство ОЗУ SUB01 DIV02 MOV03 R101 R202 А В СХ Машинное словоКомментарий MOV C -> R MOV B -> R2 01SUB (R1 = R1 – R2) MOV A -> R2 02DIV (R1 = R1 / R2) Машинное словоКомментарий MOV R2 -> X A1010 B2020 C3030 X
Программа на низкоуровневом языке ASSEMBLER © Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ» 25 Машинное словоПрограмма на языке ASSEMBLER MOV C R MOV B R2 01SUB MOV A R2 02DIV MOV R2 X
Программа на языке высокого уровня Си © Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ» 26 Машинное слово Программа на языке ASSEMBLER Программа на языке Си MOV C R1 X = (C – B) / A; MOV B R2 01SUB MOV A R2 02DIV MOV R2 X
Этапы формирования исполняемого кода из исходного © Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ» 27 program1.c (текстовый файл) …. X=(C – B)/A; …… …. MOV C R1 MOV B R2 SUB MOV A R2 DIV MOV R2 X …… program1.asm (текстовый файл) … …… program1.o (объектный (бинарный) файл) Компиляция (compilation) Компоновка (assembling) programN.cprogramN.asmprogramN.o..... … …… program (исполняемый (бинарный) файл) Редактирова ние связей (linking)
СПАСИБО ЗА ВНИМАНИЕ! © Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ» 28