Лекция 1 Введение в программирование О.С. Трушин Зав. лаб. ЯФ ФТИАН РАН, Доцент кафедры нанотехнологии в электронике План • • • • • • • • • • • Цели и задачи курса Рекомендуемая литература Краткая история вычислительной техники Развитие теории вычислений Развитие технологии Устройство компьютера История развития языков программирования Создание программы на C++ Компиляция в командной строке Среда программирования Visual Studio 2008 Пример создания простейшей программы Оргвопросы. Цели и задачи курса • Цель курса – научить практическому программированию на C++ • Лекции в виде компьютерных презентаций • На практике – решение задач с реализацией программы на ЭВМ • Завершение курса – зачет • Требуется общая тетрадь и флэшка Рекомендуемая литература • Х. Дейтел, П. Дейтел Как программировать на C++ • Т.А. Павловская, Ю.А. Щупак С/С++ Структурное программирование • Множество курсов в интернете: • ravesli.com Краткая история вычислительной техники I • Потребность считать возникла с появлением цивилизации • V век до н.э. (Египет) – счетные палочки и счетные доски • (Греция) Критская счетная машина • 1654 – логарифмическая линейка • 1820 – арифмометр Томаса • 1822 – разностная машина Чарльза Бэбиджа Краткая история вычислительной техники II • 1890 – табулятор Холлерита • 1941 – машина Тьюринга • 1943 – «Марк 1» первый компьютер фирмы IBM • 1964 – «System 360» фирмы IBM Развитие теории вычислений • XVII – двоичная система (Лейбниц) • 1854 – булева алгебра на основе двоичной системы • 1940 – архитектура фон Неймана • 1957 – язык высокого уровня Фортран Развитие технологии • • • • • • • • 1947 – изобретение транзистора 1958 – создание первой микросхемы 1960 – первый миникомпьютер DEC PDP-1 1963 – компьютерная мышь 1966 – ячейка памяти DRAM 1966 – основание фирмы INTEL 1969 – военный интернет в Пентагоне 1976 – основание фирмы Apple Базовые понятия • Цифровой компьютер – это машина, которая может решать задачи, используя данные ей команды • Программа – это последовательность команд, описывающих решение определенной задачи Схема компьютера архитектура фон Неймана Двоичный код • В основе работы современных ЭВМ – электронные схемы (триггеры) реализующих 2 устойчивых состояния «0» и «1» • Таким образом, цифровая техника использует двоичную арифметику • Язык команд компьютера – машинный код • 001011001110101 • На заре компьютерной эры люди писали программы в машинных кодах Язык ASSEMBLER • Программировать в машинных кодах слишком сложно • Был разработан язык мнемокодов • mov, push, pop, add • Assembler транслирует мнемокоды в машинные коды • Assembler позволяет использовать всю мощь «железа» но программы слишком длинные и трудно переносимые с компьютера на компьютер Языки высокого уровня • Пример ASSEMBLER mov x mov y add x,y mov z • FORTRAN z=x+y Одна команда на языке высокого уровня заменяет несколько команд ASSEMBLER • Решается проблема переносимости • Необходима процедура компиляции Подготовка и исполнение программы Программы, написанные на языках высокого уровня, также должны быть переведены в машинный код перед выполнением. Есть два пути решения этой задачи: Компилятор – это программа, которая читает код и создает автономную исполняемую программу, которую процессор понимает напрямую. Интерпретатор — это программа, которая напрямую выполняет код, без его предыдущей компиляции в машинный язык. Современные языки высокого уровня • FORTRAN – для научных и инженерных расчетов • C++ - универсальный системный язык • Pascal – учебный язык • Pyton, Basic • JAVA, PHP, Perl – для вебпрограммирования Программные продукты на C++ • Windows • Linux • Ms Office История развития C++ • Язык C был создан на основе BCPL и B Денисом Ритчи в 1970 г. в Bell Labs и реализован на PDP-1 • На C была написана операционная система UNIX • Язык C++ был разработан Бьерном Строустропом в начале 80-х в Bell Labs как расширение C • В С++ добавлена возможность Объектноориентированного программирования • С++ - очень широк и каждый программист использует только часть удобную для него • На базе C++ были созданы многие новые языки JAVA, Perl, PHP Компиляторы C++ • gcc – на компьтерах с Linux • Borland Builder C++ • Microsoft Visual Studio Создание программы на С++ Компиляция в командной строке Среда Visual Studio 2008 Создание нового проекта Создание нового проекта Создание нового проекта Создание нового проекта Создание нового проекта Добавление файлов с исходным кодом Добавление файлов с исходным кодом Добавление файлов с исходным кодом Исходный код 1 int main() { return 0; } Компиляция и сборка • Сохранить исходный код • Компилировать измененный файл(файлы) с исходным кодом • Собрать проект Запуск программы Сообщения об ошибках 1>------ Build started: Project: Proba001, Configuration: Debug Win32 -----1>Compiling... 1>main.cpp 1>d:\home\alex\visual studio 2008 projects\proba001\proba001\main.cpp(4) : error C2143: syntax error : missing ';' before '}' 1>Build log was saved at "file://d:\home\alex\Visual Studio 2008 Projects\Proba001\Proba001\Debug\BuildLog.htm" 1>Proba001 - 1 error(s), 0 warning(s) ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ========== Контекстная помощь (F1) Удачная компиляция 1>------ Build started: Project: Proba001, Configuration: Debug Win32 -----1>Compiling... 1>main.cpp 1>Build log was saved at "file://d:\home\alex\Visual Studio 2008 Projects\Proba001\Proba001\Debug\BuildLog.htm" 1>Proba001 - 0 error(s), 0 warning(s) ========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ========== Исходный код 2 #include <iostream> using namespace std; int main() { cout<<"Hello world!"<<endl; return 0; } Работа с отладчиком Работа с отладчиком • F5 - запуск отладчика • F9 - добавление или удаление точки останова в текущей строке • F10 - выполнение следующей строки кода, но без захода в вызываемые функции • F11 - кода с заходом в вызываемые функции Другие IDE Другие IDE