Скачать презентацию Прикладная математика и информатика Языки и методы программирования Скачать презентацию Прикладная математика и информатика Языки и методы программирования

01_Introduction.ppt

  • Количество слайдов: 59

Прикладная математика и информатика Языки и методы программирования Алтайский государственный университет Математический факультет Кафедра Прикладная математика и информатика Языки и методы программирования Алтайский государственный университет Математический факультет Кафедра информатики Барнаул 2013

Фундаментальная информатика и информационные технологии Основы программирования Алтайский государственный университет Математический факультет Кафедра информатики Фундаментальная информатика и информационные технологии Основы программирования Алтайский государственный университет Математический факультет Кафедра информатики Барнаул 2013

3 Лекция 1 n План ¨ Организация курса n n Преподаватели Содержание курса Организация 3 Лекция 1 n План ¨ Организация курса n n Преподаватели Содержание курса Организация практических занятий Учебные материалы ¨ Основы алгоритмизации ¨ Быстрое введение в язык Си

Организация курса n n n Преподаватели Организация курса Содержание занятий Принципы оценивания Учебные материалы Организация курса n n n Преподаватели Организация курса Содержание занятий Принципы оценивания Учебные материалы

5 Организация курса Преподаватели n n n Жилин Сергей Иванович зав. кафедрой информатики, доцент 5 Организация курса Преподаватели n n n Жилин Сергей Иванович зав. кафедрой информатики, доцент n Группы – 432, 434 Консультации – по расписанию Расписание – на доске объявлений каф. информатики Кафедра информатики – ауд. 415 Л

6 Организация курса Преподаватели n n n Смолякова Лариса Ленгардовна старший преподаватель кафедры информатики 6 Организация курса Преподаватели n n n Смолякова Лариса Ленгардовна старший преподаватель кафедры информатики n Группы – 433 Консультации – по расписанию Расписание – на доске объявлений каф. информатики Кафедра информатики – ауд. 415 Л

7 Организация курса I семестр n n Лекции Практикум Зачет Экзамен 16 16 II 7 Организация курса I семестр n n Лекции Практикум Зачет Экзамен 16 16 II семестр 16 16 n Зачет – по результатам выполнения лабораторных работ и промежуточных тестов Экзамен – в письменной форме n Итоговая оценка за экзамен n О = 0. 5*Э + 0. 3*Л + 0. 2*Т Э – оценка за экзаменационную работу Л – средняя оценка за лабораторные работы Т – средняя оценка за тесты

Организация курса Содержание лекций n n Программирование на языке Си (I семестр) Алгоритмы и Организация курса Содержание лекций n n Программирование на языке Си (I семестр) Алгоритмы и структуры данных (II семестр) 8

Организация курса Содержание лекций n Программирование на языке Си (I семестр) ¨ Основы алгоритмизации Организация курса Содержание лекций n Программирование на языке Си (I семестр) ¨ Основы алгоритмизации ¨ Быстрое введение в язык Си ¨ Базовые типы данных и операции ¨ Управляющие конструкции. Функции ¨ Массивы, строки, структуры ¨ Указатели, Динамическое распределение памяти ¨ Файлы n Алгоритмы и структуры данных (II семестр) 9

Организация курса Содержание лекций n n Программирование на языке Си (I семестр) Алгоритмы и Организация курса Содержание лекций n n Программирование на языке Си (I семестр) Алгоритмы и структуры данных (II семестр) ¨ Алгоритмы. Сложность алгоритмов ¨ Абстрактные типы данных ¨ Сортировка и поиск ¨ Списки. ¨ Стэки. Очереди. Дэки ¨ Деревья ¨ Хэширование ¨ Графы и алгоритмы на графах ¨ Алгоритмы вычислительной геометрии ¨ Поиск с возвратом 10

Организация курса Содержание практических занятий n n Практические занятия = лаб. работы + тесты Организация курса Содержание практических занятий n n Практические занятия = лаб. работы + тесты Программирование на языке Си (I семестр) 1. 2. 3. 4. 5. n Линейный вычислительный процесс Ветвящийся вычислительный процесс Циклический вычислительный процесс Массивы Структуры. Функции Алгоритмы и структуры данных (II семестр) 1. 2. 3. Строки. Файлы Сортировка Абстрактные типы данных 11

Организация курса Принципы оценивания n n Отчет о лабораторной работе защищается очно Критерии оценивания Организация курса Принципы оценивания n n Отчет о лабораторной работе защищается очно Критерии оценивания (по убыванию приоритета) 1. 2. 3. 4. 5. n n Способность автора внятно изложить идею алгоритма и отвечать на вопросы по исходному коду программы. Работоспособность программы. Эффективность алгоритмов. Соблюдение автором «правил хорошего тона» при построении исходного кода. Оригинальность алгоритмов и/или их реализации. Выполнение основной части лабораторной работы позволяет получить оценку « 3» Оценка может быть повышена при выполнении усложненных заданий 12

Организация курса 13 Учебные материалы n n n n Таблица текущей успеваемости Results-1314* Слайды Организация курса 13 Учебные материалы n n n n Таблица текущей успеваемости Results-1314* Слайды к лекциям* Электронные книги* Видео-ролики* Книги Сайты Компиляторы и среды разработки * * Доступны в компьютерных классах на P: CoursesZhilinC

Организация курса Электронные книги 1. Голуб А. И. С и С++: Правила программирования 2. Организация курса Электронные книги 1. Голуб А. И. С и С++: Правила программирования 2. Громов Ю. Ю. , Татаренко С. И. Программирование на языке Cи P: BooksGolub. pdf P: BooksGromov. Tatarenkodir. htm 3. 4. Дейтел Х. М. , Дейтел П. Дж. Как программировать на C Керниган Б. , Ритчи Д. Язык С 5. Кучин Н. В. , Павлова М. М. Основы программирования на языке Си P: BooksDeitel. pdf P: BooksKernigan. Ritchieindex. html P: BooksKuchin. Pavlova. pdf 6. 7. Подбельский В. В. , Фомин С. С. Программирование на языке Си 8. Поляков К. Программирование на языке Си 9. Пахомов Б. C/C++ и MS Visual C++ 2008 для начинающих Богатырев А. Руководство полного идиота по программированию (на языке Си) P: BooksPahomov. djvu P: Books Podbelski. Fomin. djvu P: BooksPolyakovdevcpp_1. pdf P: BooksBogatyrev. pdf 10. Уэйт М. и др Язык Си: руководство для начинающих 14

Организация курса Книги в библиотеке АГУ www. lib. asu. ru 1. Голуб А. И. Организация курса Книги в библиотеке АГУ www. lib. asu. ru 1. Голуб А. И. С и С++: Правила программирования. М. : БИНОМ, 1996. – 272 с. (32. 973. 26 А 484) 2. Давыдов В. Г. Программирование и основы алгоритмизации. М. : Высшая школа, 2003. – 447 с. (32. 973. 26 Д 138) 3. Джехани Н. Программирование на языке Си. М. : Радио и связь, 1988. – 272 с. (32. 973. 2 Д 409) 4. Жешке Р. Толковый словарь стандарта языка Си. СПб. : Питер, 1994. – 221 с. (32. 973. 2 Ж 655) 5. Керниган Б. В. , Ритчи Д. М. Язык программирования Си. М. : Финансы и статистика, 1992. – 272 с. (32. 973. 26 К 362) 6. Крупник А. Изучаем Си. СПб. : Питер, 2001. – 256 с. (32. 973. 26 К 845) 7. Павловская Т. А. С/С++. Программирование на языке высокого уровня. СПб. : Питер, 2007. – 461 с. (32. 973. 26 П 124) 8. Подбельский В. В. Практикум по программированию на языке Си. М. : Финансы и статистика, 2004. – 576 с. (32. 973. 26 П 44) 9. Тондо К. Язык Си: книга ответов. 15

Организация курса Электронная библиотечные системы «Лань» и «Университетская билиотека online» 16 Организация курса Электронная библиотечные системы «Лань» и «Университетская билиотека online» 16

Организация курса Электронная библиотека издательства «Лань» n Издательство «Лань» предоставляет бесплатный доступ к электронным Организация курса Электронная библиотека издательства «Лань» n Издательство «Лань» предоставляет бесплатный доступ к электронным изданиям для высшей школы n Доступ возможен только из сети Алт. ГУ n Больше информации – на www. lib. asu. ru Книги от «Лани» n Вирт Н. Алгоритмы и структуры данных. Новая версия для Оберона n Липман С. , Лажойе Ж. Язык программирования С++. Полное руководство n Потопахин В. Современное программирование с нуля! n Ховард М. , Лебланк Д. , Виега Д. 19 смертных грехов, угрожающих безопасности программ. Как не допустить типичных ошибок n … 17

Организация курса Сайты 1. Code. Net. ru – все для программиста http: //www. codenet. Организация курса Сайты 1. Code. Net. ru – все для программиста http: //www. codenet. ru/cat/Languages/C-CPP/ 2. C Programming and C++ Programming http: // cprogramming. com/ 3. http: //www. cprogrammingreference. com/ 4. C Programming questions with solution http: //cquestionbank. blogspot. com/ 5. C Programming Reference Библиотека программиста http: //www. progbook. net/ 6. Интернет университет информационных технологий http: //www. intuit. ru/catalog/se/pl/ 7. Описание языка программирования ANSI C http: //linfoline. homedns. org/ansi-c. html 8. Поляков К. Язык программирования Си. Практический курс. http: //kpolyakov. narod. ru/school/c. htm 9. Язык Си в примерах – Викиучебник http: //ru. wikibooks. org/wiki/Язык_Си_в_примерах 10. Информатика и ВТ – все для студентов УГАТУ http: //www. twirpx. com/files/informatics 18

Организация курса Компиляторы и среды разработки n Microsoft Visual Studio 2008 Основной вариант n Организация курса Компиляторы и среды разработки n Microsoft Visual Studio 2008 Основной вариант n Инсталлирован в классах n Лицензионный дистрибутив можно получить бесплатно n n Cм. раздел MSDN AA на сайте МФ: www. math. asu. ru Контактное лицо – Иван Кунгуров (msdnaa@math. asu. ru) Microsoft Visual С++ 20 xx Express Свободно распространяемый вариант n Дистрибутив n n www. microsoft. com/express/vc/ 19

Организация курса Компиляторы и среды разработки Свободно распространяемые среды разработки n Bloodshed Dev-Cpp http: Организация курса Компиляторы и среды разработки Свободно распространяемые среды разработки n Bloodshed Dev-Cpp http: //www. bloodshed. net/devcpp. html n P: CoursesZhilinCDistrDev. Cpp n n Code: : Blocks http: //www. codeblocks. org/ n P: CoursesZhilinCDistrCode. Blocks n n Netbeans + GCC n n http: //www. netbeans. org/features/cpp Eclipse CDT + GCC n http: //www. eclipse. org/cdt/ 20

Первичные сведения о языке Си n n n Почему Си? История Простейшая программа Первичные сведения о языке Си n n n Почему Си? История Простейшая программа

Быстрое введение в язык Си Почему Си? n Один из наиболее популярных языков программирования Быстрое введение в язык Си Почему Си? n Один из наиболее популярных языков программирования n Синтаксис языка Си является основой для многих других языков программирования (С++, Java. Script, С# и пр. ) n Программы на Си хорошо переносимы между различными платформами (компиляторы Си существуют, практически, для всех типов процессоров) n Сочетает в себе черты языков низкого и высокого уровней 22

Организация курса Популярность ЯП n TIOBE Programming Community Index for July 2012 ¨ Количество Организация курса Популярность ЯП n TIOBE Programming Community Index for July 2012 ¨ Количество запросов на Google 23

Организация курса 24 Популярность ЯП n TIOBE Programming Community Index for September 2013 ¨ Организация курса 24 Популярность ЯП n TIOBE Programming Community Index for September 2013 ¨ Количество запросов на Google

Организация курса 25 Популярность ЯП n TIOBE Programming Community Index for September 2013 ¨ Организация курса 25 Популярность ЯП n TIOBE Programming Community Index for September 2013 ¨ Количество запросов на Google

Организация курса Популярность ЯП Red. Monk’s language ranking for February 2012 Popularity Rank on Организация курса Популярность ЯП Red. Monk’s language ranking for February 2012 Popularity Rank on Stack Overflow (# of Tags) n Popularity Rank on Git. Hub (# of Projects) 26

Быстрое введение в язык Си История n Развитие языков программирования 27 Быстрое введение в язык Си История n Развитие языков программирования 27

28 Быстрое введение в язык Си История n n Восходит к языку B (К. 28 Быстрое введение в язык Си История n n Восходит к языку B (К. Томпсон), который восходит к языку BCPL (Д. Мартин, 1967) Разработан между 1969 и 1973 годами вместе с ОС Unix Основной вклад в разработку принадлежит Деннису Ритчи (Dennis Ritchie) Изначально предназначался для системного программирования, т. е. создания Операционных систем ¨ Компиляторов ¨ Утилит (служебных программ) ¨ Деннис Ритчи

Быстрое введение в язык Си История n Разработка велась на микро. ЭВМ DEC PDP-11 Быстрое введение в язык Си История n Разработка велась на микро. ЭВМ DEC PDP-11 Оперативная память – 24 Кб ¨ Из них используется ОС – 12 Кб ¨ n Задачи Разработка нового языка программирования ¨ Разработка на нем операционной системы ¨ 29

Быстрое введение в язык Си История Д. Ритчи (слева) и К. Томпсон (справа) перед Быстрое введение в язык Си История Д. Ритчи (слева) и К. Томпсон (справа) перед PDP-11 с двумя текстовыми терминалами (1972) Фото с домашней страницы Д. Ритчи: http: //www. cs. bell-labs. dom/who/dmr/ 30

Быстрое введение в язык Си История n Первый стандарт (описание языка) опубликован Д. Ритчи Быстрое введение в язык Си История n Первый стандарт (описание языка) опубликован Д. Ритчи и Б. Керниганом в 1978 (K&R-C) n В слегка модифицированном виде язык был стандартизован ANSI в 1989 г. (ANSI-C) n Международный стандарт языка утвержден ISO в 1999 г. (С 99) ¨ См. P: CoursesZhilinCBooksC 99 -standard-draft. pdf 31

32 Быстрое введение в язык Си Простейшая программа главная (основная) программа всегда имеет имя 32 Быстрое введение в язык Си Простейшая программа главная (основная) программа всегда имеет имя main() { «тело» программы (основная часть) начало программы } конец программы ? Что делает эта программа?

33 Быстрое введение в язык Си Вывод текста на экран include = включить #include 33 Быстрое введение в язык Си Вывод текста на экран include = включить #include main() { printf("Привет!"); } вызов стандартной функции printf = print format (форматный вывод) файл stdio. h: описание стандартных функций ввода и вывода этот текст будет на экране

34 Быстрое введение в язык Си Ждем нажатия любой клавиши #include <stdio. h> комментарий 34 Быстрое введение в язык Си Ждем нажатия любой клавиши #include комментарий до конца строки main() { printf("Привет!"); // вывод на экран getchar(); /* ждать нажатия клавиши */ } ждать ввода символа комментарий между /* и */

35 Быстрое введение в язык Си Переход на новую строку #include <stdio. h> последовательность 35 Быстрое введение в язык Си Переход на новую строку #include последовательность n (код 10) переход на новую строку main() { n printf("Привет, n Вася!"); getchar(); } на экране: Привет, Вася!

Быстрое введение в язык Си Упражнения 1. Вывести на экран текст «лесенкой» Вася пошел Быстрое введение в язык Си Упражнения 1. Вывести на экран текст «лесенкой» Вася пошел гулять 2. Вывести на экран рисунок из букв Ж ЖЖЖЖЖЖЖ HH HH ZZZZZ 36

Организация курса Домашнее задание 1. В книге Дейтел Х. М. , Дейтел П. Дж. Организация курса Домашнее задание 1. В книге Дейтел Х. М. , Дейтел П. Дж. Как программировать на C прочитать Главы 1 -3. 2. Самостоятельно вспомнить/усвоить основные понятия алгоритмизации 37

Основы алгоритмизации n n n n Алгоритм: определение Алгоритм: свойства Алгоритм: исполнитель Алгоритм: формы Основы алгоритмизации n n n n Алгоритм: определение Алгоритм: свойства Алгоритм: исполнитель Алгоритм: формы записи Алгоритмические структуры Программы: виды ошибок Языки программирования

Основы алгоритмизации Алгоритм: определения n Алгоpитм — заранее заданное понятное и точное пpедписание возможному Основы алгоритмизации Алгоритм: определения n Алгоpитм — заранее заданное понятное и точное пpедписание возможному исполнителю совеpшить определенную последовательность действий для получения решения задачи за конечное число шагов n Алгоpитм — точное описание последовательности действий, направленных на получение из заданного начального состояния определенного результата n Алгоpитм — 1) план того, что должно быть сделано, выполнено 2) закодированная информация, вводимая в компьютер для управления его деятельностью 39

Основы алгоритмизации Алгоритм: исполнитель n Исполнитель алгоритма — это некоторая абстрактная или реальная (техническая, Основы алгоритмизации Алгоритм: исполнитель n Исполнитель алгоритма — это некоторая абстрактная или реальная (техническая, биологическая или биотехническая) система, способная выполнить действия, предписываемые алгоритмом n Исполнителя хаpактеpизуют: сpеда ¨ элементаpные действия ¨ cистема команд исполнителя (СКИ) ¨ отказы ¨ 40

Основы алгоритмизации Алгоритм: свойства n Понятность для исполнителя ¨ n Дискpетность (прерывность, раздельность) ¨ Основы алгоритмизации Алгоритм: свойства n Понятность для исполнителя ¨ n Дискpетность (прерывность, раздельность) ¨ n при одинаковых исходных данных алгоритм должен выдавать один и тот же результат Массовость ¨ n алгоритм должен приводить к результату за конечное число шагов Определенность (детерминированность) ¨ n алгоpитм должен состоять из отдельных шагов (этапов). Результативность (конечность) ¨ n исполнитель алгоритма должен понимать, как его выполнять алгоритм должен решать целый класс однотипных задач с различными конкретными значениями исходных данных Корректность ¨ алгоритм должен давать верное решение при любых допустимых исходных данных 41

Основы алгоритмизации Алгоритм: формы записи n Словесная ¨ n Графическая ¨ n изображения из Основы алгоритмизации Алгоритм: формы записи n Словесная ¨ n Графическая ¨ n изображения из графических символов Псевдокоды ¨ n запись на естественном языке полуформализованные описания алгоритмов на условном алгоритмическом языке, включающие в себя как элементы языка программирования, так и фразы естественного языка, общепринятые математические обозначения и др. Программная ¨ тексты на языках программирования 42

Основы алгоритмизации Алгоритм: словесная форма записи n n n Алгоритм записывается в виде пронумерованной Основы алгоритмизации Алгоритм: словесная форма записи n n n Алгоритм записывается в виде пронумерованной последовательности шагов на естественном языке Алгоритмы в словесной форме записи адресованы человеку Пример: Алгоритм сложения двух чисел (a и b) 1. Спросить, чему равно число a 2. Спросить, чему равно число b 3. Сложить a и b, результат присвоить c 4. Сообщить результат c 43

Основы алгоритмизации Алгоритм: графическая форма записи n При графическом представлении алгоритм изображается в виде Основы алгоритмизации Алгоритм: графическая форма записи n При графическом представлении алгоритм изображается в виде последовательности связанных между собой функциональных блоков, каждый из которых соответствует выполнению одного или нескольких действий n Алгоритмы в графической форме записи адресованы преимущественно человеку n Примеры: Схема сборки мебели ¨ Блок-схемы алгоритмов ¨ 44

Основы алгоритмизации Алгоритм: графическая форма записи n Блок-схемы алгоритмов ¨ См. http: //ru. wikipedia. Основы алгоритмизации Алгоритм: графическая форма записи n Блок-схемы алгоритмов ¨ См. http: //ru. wikipedia. org/wiki/Блок-схема 45

46 Основы алгоритмизации Блок-схемы: основные обозначения Терминатор Отображает вход или выход из внешней среды 46 Основы алгоритмизации Блок-схемы: основные обозначения Терминатор Отображает вход или выход из внешней среды (чаще всего начало и конец программы). Процесс Выполнение операций, обработка данных. Внутри указываются операции. Например: a = 10*b + c. Решение Отображает функцию переключательного типа с одним входом и двумя или более альтернативными выходами. Предопределенный процесс Отображает выполнение именованного процесса, определенного в другом месте программы (подпрограмма). Ввод-вывод Преобразование данных в форму, пригодную для обработки (ввод) или отображения результатов обработки (вывод). Границы цикла Символ из двух частей – начала и конца цикла. Операции, выполняемые внутри цикла, размещаются между ними. Условия цикла и приращения записываются внутри символа начала или конца цикла в зависимости от типа цикла. Соединитель Отображает выход в часть схемы и вход из другой части этой схемы. Используется для обрыва/продолжения линии. Комментарий Используется для более подробного описания шага, процесса или группы процессов.

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

Основы алгоритмизации Алгоритм: запись в псевдокодах n Пример. Алгоритм на школьном алгоритмическом языке алг Основы алгоритмизации Алгоритм: запись в псевдокодах n Пример. Алгоритм на школьном алгоритмическом языке алг Сумма квадратов (арг цел n, рез цел S) дано | n > 0 надо | S = 1*1 + 2*2 + 3*3 +. . . + n*n нач цел I ввод n; S: =0 нц для i от 1 до n S: =S+i*I кц вывод "S = ", S кон 48

Основы алгоритмизации Алгоритм: программная запись n Программная запись на специальном языке программирования ¨ осуществляется Основы алгоритмизации Алгоритм: программная запись n Программная запись на специальном языке программирования ¨ осуществляется строго в соответствии с правилами (синтаксисом) языка программирования ¨ Понятна человеку, но предназначена формальному исполнителю (компьютеру, другому устройству, программе и т. п. ) ¨ n Примеры: Программа на языке программирования Pascal ¨ Программа на языке описания графических сцен POV-Ray ¨ Описание веб-страницы на языке разметки гипертекста HTML и языке сценариев Java. Script ¨ 49

Основы алгоритмизации Алгоритм: программная запись n Пример. Программа на языке программирования Pascal 50 Основы алгоритмизации Алгоритм: программная запись n Пример. Программа на языке программирования Pascal 50

Основы алгоритмизации Языки программирования n Машинно-ориентированные языки низкого уровня ¨ каждая команда соответствует одной Основы алгоритмизации Языки программирования n Машинно-ориентированные языки низкого уровня ¨ каждая команда соответствует одной команде процессора ¨ специфичны для конкретной платформы ¨ n Языки высокого уровня (алгоритмические языки) приближены к естественным языкам ¨ понятнее и удобнее для человека ¨ не зависят от конкретного компьютера ¨ 51

52 Основы алгоритмизации Языки программирования n n Арифметическое выражение Запись на алгоритмическом языке y 52 Основы алгоритмизации Языки программирования n n Арифметическое выражение Запись на алгоритмическом языке y = 3*(4*x*x+3*x)/(10–x); n Запись на ассемблере fld fmul faddp fmul fld fsub fdivp fstp dword ptr dword ptr st(1), st dword ptr [@2] [ebp-4] [@2+4] [ebp-4] [@2+8] [ebp-4] [ebp-8]

53 Основы алгоритмизации Языки программирования n Перевод с алгоритмического языка в числовые коды выполняет 53 Основы алгоритмизации Языки программирования n Перевод с алгоритмического языка в числовые коды выполняет транслятор Решить уравнение Составить программу Программа в машинных кодах Программа на алгоязыке var a, b: real; begin a : = 2; b : = a*2+7; . . . end. Трансляция 101001 1101010 100001. . . 011101 Исполнить программу

Основы алгоритмизации Языки программирования n Часто для построения программы необходимо использовать несколько разных модулей Основы алгоритмизации Языки программирования n Часто для построения программы необходимо использовать несколько разных модулей (файлов) и/или стандартные модули m 1. c int code() m 2. c { code = 10; #include “m 4. h” } void m 2() { m. N. c float c=2; char df(int a) { x=d+f; put(c); #include “m 2. h” } … void main() { } float a=2, b; b = a*2+7; … } 54

55 Основы алгоритмизации Языки программирования n В этом случае транслятор строит программу в числовых 55 Основы алгоритмизации Языки программирования n В этом случае транслятор строит программу в числовых кодах (объектные файлы) отдельно для каждого модуля m 1. c int code() m 2. c m 1. obj 10100101 m 2. obj { 11010101 code = 10; #include “m 4. h” Транслятор 10100101 10101000 } void m 2() { 10010101 10000111 m. N. c float c=2; Транслятор char df(int a) {. . . m. N. obj 10111000 x=d+f; put(c); 101001111011 #include “m 2. h” } … 10100101. . . void main() { } 11010101 01101011 float a=2, b; 1010 Транслятор b = a*2+7; 10110111 …. . . } 10101011

56 Основы алгоритмизации Языки программирования n Окончательную сборку приложения (exe-файла) из объектных файлов производит 56 Основы алгоритмизации Языки программирования n Окончательную сборку приложения (exe-файла) из объектных файлов производит линковщик (от англ. link – связывать) m 1. c int code() m 2. c m 1. obj 10100101 m 2. obj { 11010101 code = 10; #include “m 4. h” Транслятор 10100101 10101000 } void m 2() { 10010101 10000111 m. N. c float c=2; Транслятор char df(int a) {. . . m. N. obj 10111000 x=d+f; put(c); 101001111011 #include “m 2. h” } … 10100101. . . Линковщик void main() { } 11010101 01101011 float a=2, b; 1010 Транслятор b = a*2+7; 10110111 …. . . } 10101011 m. exe 10100101 11010101 10101010 10110111. . . 10101011

57 Основы алгоритмизации Языки программирования n Программа, осуществляющая и трансляцию программ, и сборку приложения 57 Основы алгоритмизации Языки программирования n Программа, осуществляющая и трансляцию программ, и сборку приложения из объектных файлов, называется компилятором pr. c pr. obj pr. exe #include “m 2. h” void main() { float a=2, b; b = a*2+7; … } 10100101 11010101000 10000111. . . 01111011 Трансляция Линковка

58 Основы алгоритмизации Языки программирования n Программа, осуществляющая и трансляцию программ, и сборку приложения 58 Основы алгоритмизации Языки программирования n Программа, осуществляющая и трансляцию программ, и сборку приложения из объектных файлов, называется компилятором pr. c pr. obj pr. exe #include “m 2. h” void main() { float a=2, b; b = a*2+7; … } 10100101 11010101000 10000111. . . 01111011 Компиляция Линковка Трансляция

59 Вопросы и ответы Вопросы? n Организация курса ¨ ¨ ¨ n Быстрое введение 59 Вопросы и ответы Вопросы? n Организация курса ¨ ¨ ¨ n Быстрое введение в язык Си ¨ ¨ ¨ n Преподаватели Организация курса Содержание занятий Принципы оценивания Учебные материалы Почему Си? История Простейшая программа Переменные и типы Операции и функции Ввод/вывод Основы алгоритмизации ¨ ¨ ¨ ¨ Алгоритм: определение Алгоритм: свойства Алгоритм: исполнитель Алгоритм: формы записи Алгоритмические структуры Программы: виды ошибок Языки программирования Н. Копейкин Битва снеговиков с углевиками