Лекция № 1 Про курс n Что такое компьютер? n Организация компьютера n Машинные языки, языки ассемблера и языки высокого уровня n История С n Структурное программирование n
Про курс Курс «Информатика и программирование» , являющийся в настоящее время общеобразовательным, для специальности 2204 представляет основу для целого ряда «программистских» дисциплин, и от успешного его освоения во многом зависит дальнейший профессиональный рост. Основная задача преподавания дисциплины “Информатика и программирование ” в первом семестре - выровнять уровень подготовки по программированию и научить “свободно владеть” языком программирования как “средством выражения” алгоритмов применительно к традиционному кругу задач арифметико-логическим, сортировки и поиска, приближенным вычислений, обработки текста.
В качестве базового языка программирования в данном курсе выбран Си, поскольку он сочетает в себе абстрактные подходы в организации данных и программ с достаточно высокой степенью машинной ориентированности. Следует отметить, что изучение самого языка является не целью, а скорее средством иллюстрации соответствующих разделов программирования.
Цели обучения: • Выравнивание уровня подготовки по программированию. • Получение базовых знаний по архитектуре компьютера. • Получение базового уровня по программированию на языке Си с использованием простых типов данных: базовых типов данных и массивов. • Приобретение навыков использования базового набора фрагментов алгоритмов в процессе разработки программ, навыков анализа и “чтения” программ. • Изучение основ технологии программирования и методов решения вычислительных задач и задач обработки символьных данных. • Знакомство с основными принципами организации хранения и поиска данных, алгоритмами сортировки и поиска, понятием трудоемкости алгоритма.
Что такое компьютер? Компьютер – это прибор, способный производить вычисления и принимать логические решения в миллионы или даже миллиарды раз быстрее человека (очень быстро). Компьютер обрабатывает данные под управлением наборов команд, называемых компьютерными программами. Эти программы направляют действия компьютера посредством упорядоченных наборов действий, описанных людьми.
Разнообразные устройства (такие как клавиатура, экран, диски, память и процессорные блоки), входящие в состав компьютерной системы, называются аппаратными средствами. Компьютерные программы, исполняемые компьютером, называются программным обеспечением. Стоимость аппаратных средств в последние годы существенно снизилась и достигла уровня, когда персональные компьютеры превратились в предмет массового потребления. К сожалению, стоимость разработки программного обеспечения неуклонно росла, так как программисты создавали все более мощные и сложные прикладные программы, не имея средств улучшить технологию их разработки.
Организация компьютера Независимо от различий в способах физической реализации каждый компьютер фактически можно разделить на шесть логических блоков или частей: • Входной блок. Это «воспринимающая» часть компьютера. Она получает информацию (данные и компьютерные программы) от различных устройств ввода и размещает ее в других устройствах для последующей обработки. • Блок памяти. Это быстродоступная и относительно малоемкая часть компьютера, выполняющая роль «склада» . Она хранит информацию, которая может стать доступной для обработки, как только это потребуется. Блок памяти также хранит уже обработанную информацию, пока она не окажется размещенной в других устройствах выходным блоком. Эту память принято называть памятью, первичной памятью, либо оперативной
• Арифметико-логическое устройство (АЛУ). Это «обрабатывающая» часть компьютера. Она отвечает за выполнение вычислений, таких как сложение, вычитание, умножение и деление. АЛУ содержит решающие механизмы, которые позволяют компьютеру, например, сравнивать два элемента из блока памяти, чтобы определить, равны они или нет. • Центральное процессорное устройство (ЦПУ). Это «административная» часть компьютера. Она координирует работу компьютера и осуществляет надзор за работой всех других частей. ЦПУ указывает входному блоку, когда информация должна быть считана в блок памяти, указывает АЛУ, когда информация из памяти должна быть использована в вычислениях, и указывает выходному блоку, когда послать информацию из блока памяти на определенное выходное устройство.
• Блок вспомогательных запоминающих устройств. Эта часть является «складом» высокой емкости для долгосрочного хранения информации. Программы или данные, не используемые активно другими блоками, обычно размещаются во вспомогательных запоминающих устройствах до тех пор, пока они снова не потребуются. Доступ к этой информации гораздо более медленный, чем к информации в оперативной памяти. В то же время стоимость единицы памяти во вспомогательных запоминающих устройствах много меньше, чем в оперативной памяти. • Выходной блок. Эта часть компьютера забирает информацию, которая была обработана компьютером, и размещает ее в различных выходных устройствах.
Машинные языки, языки ассемблера и языки высокого уровня Программисты пишут свои программы на разных языках программирования, некоторые из них непосредственно понятны компьютеру, другие требуют промежуточных шагов трансляции. На сегодняшний день существует сотни языков программирования. Их можно разделить на три основных типа: Машинные языки Языки ассемблера Языки высокого уровня
Машинный язык Любой компьютер может непосредственно понимать лишь свой собственный машинный язык. Машинный язык – это «природный язык» определенного компьютера. Машинный язык определяется при проектировании аппаратных средств этого компьютера. В общем случае они содержат строки чисел (в конечном счете сокращенные до единиц и нулей), которые являются командами компьютеру на выполнение большинства элементарных операций в тот или иной момент времени. Основные недостатки: Машинно-зависимы. Тяжелы для человеческого восприятия.
Языки ассемблера По мере повышения популярности компьютеров стало очевидно, что программирование на машинных языках просто слишком медленно и утомительно для большинства программистов. Было принято решение вместо строк чисел использовать похожие на английский язык аббревиатуры для представления элементарных компьютерных операций. Эти аббревиатуры сформировали основу языков ассемблера. Для преобразования программ на языке ассемблера в машинный язык были разработаны программы трансляции, называемые ассемблерами.
Языки высокого уровня Использования компьютеров резко возросло с появлением языков ассемблера, но эти языки все еще требовали много команд для полного описания даже простых задач. Для ускорения процесса программирования были разработаны языки высокого уровня. Программы, написанные на языках высокого уровня выглядят, почти так же, как повседневный английский, и используют общепринятую математическую нотацию.
Трансляторы, компиляторы, интерпретаторы Программы трансляции, которые преобразуют тексты программ написанных на языках высокого уровня в машинные коды, называются компиляторами. Процесс компиляции программы с языка высокого уровня в машинный язык может занимать значительное время. Для непосредственного выполнения программ на языке высокого уровня без необходимости их компиляции в машинный язык были разработаны программы интерпретаторы. Скомпилированные программы выполнятся быстрей. Интерпретаторы популярны в таких условиях, когда необходима частая перекомпиляция программ для добавления в них новых возможностей и исправления ошибок.
История С Язык С был создан на основе двух языков – BCPL и B. Язык BCPL был создан в 1967 году Мартином Ричардом как язык для написания компиляторов и программного обеспечения операционных систем. Кен Томпсон использовал свой язык B (по сути, дубликат BCPL) для создания ранних версий операционной системы UNIX в Bell Laboratories в 1970 году. Язык C был развит из B Денисом Ритчи в Bell Laboratories в 1972 году. Первоначально C приобрел широкую известность как язык разработки операционной системы UNIX. В конце 70 -х годов C развился в то, что теперь относят к «классическому» C. При тщательной разработке на C можно написать мобильные программы, переносимые на большинство компьютеров.
Структурное программирование Исследовательские работы 60 -х годов привели к развитию структурного программирования. СП – дисциплинированный подход к написанию программ, отличающийся ясностью простотой тестирования и отладки и легкостью модификации.