
11 Основы программирования.pptx
- Количество слайдов: 29
Основы программирования 1
Машинный код Команды, поступающие в процессор по шинам, представляют собой последовательности нулей и единиц, то есть числа. Поэтому программа, с которой работает процессор, представляет собой последовательность чисел, называемую машинным кодом. Каждая модель процессора имеет свой собственный набор команд. Говорят, что процессор A совместим с процессором B, если процессор A полностью «понимает» машинный код процессора B.
Программа «Hello, world!» для процессора архитектуры x 86 выглядит следующим образом (в шестнадцатеричном представлении ): BB 11 01 B 9 0 D 00 B 4 0 E 8 A 07 43 CD 10 E 2 F 9 CD 20 48 65 6 C 6 C 6 F 2 C 20 57 6 F 72 6 C 64 21 3
Алгоритм Точно определенное описание способа решения задачи в виде конечной (по времени) последовательности действий. Для представления алгоритма в виде, понятном компьютеру, служат языки программирования. Алгоритм записывается на одном из таких языков, полученный текст программы с помощью трансляторов (спец. служебные приложения) переводится в машинный код, либо исполняется.
Язык программирования формализованный язык. Синтаксис языка программирования определяет «слова» , понятные транслятору, и правила записи команд (операторов). Синтаксис – это описание языка программирования, определяющее вид, форму и структуру конструкций языка. Пример. «Это кошка страус зеленая» . Слова и символы допустимы для русского языка, но вместе составляют недопустимую конструкцию (синтаксическая ошибка)
Семантика языка программирования определяет смысл каждой синтаксической структуры. Семантика языка – это интерпретация абстрактного синтаксиса в терминах модели. Пример. «Зеленая кошка – это страус» . Синтаксис правильный, но фраза лишена смысла (семантическая ошибка). Процесс поиска ошибок в программе (синтаксических или семантических) называется тестированием, процесс устранения ошибок – отладкой. 6
Постановка задачи Загружаемый модуль программы Разработка алгоритма Исходный текст программы Трансляция (лексический, семантический анализ, создание объектного кода) 7
Компиляторы и трансляторы Компилятор автоматически переводит текст программы в машинный код, который затем можно использовать отдельно от текста исходной программы. Компиляторы полностью обрабатывают весь текст программы. Они просматривают его в поисках ошибок, а затем транслируют в машинный код. При этом выполняется оптимизация. В результате законченная программа получается компактной и эффективной и может быть перенесена на другие компьютеры с процессором, поддерживающим этот код.
Интерпретатор сразу выполняет команды языка, указанные в тексте программы. Интерпретатор берет очередной оператор, анализирует его структуру и исполняет, затем происходит переход к следующему оператору и т. д. ØПрограммы с большим объемом повторяющихся вычислений могут работать медленно ØДля работы на другом компьютере требуется наличие интерпретатора 9
В реальных системах программирования используются и компиляция, и интерпретация. Отладка может выполняться в процессе интерпретации, а результирующий код не обязательно будет машинным – он может быть промежуточным машинно-независимым кодом абстрактного процессора, который в различных компьютерных архитектурах станет выполняться с помощью интерпретатора или компилироваться в соответствующий машинный код. 10
Уровни языков программирования Если язык программирования ориентирован на конкретный тип процессора и учитывает его особенности, то он называется языком программирования низкого уровня. Пример: язык ассемблера. Представляет каждую команду машинного кода не в виде чисел, а с помощью символьных условных обозначений, называемых мнемониками. Преобразование одной машинной инструкции в одну команду ассемблера называется транслитерацией.
Язык ассемблера применяется там, где требуется компактность, быстродействие и возможность прямого доступа к аппаратным ресурсам. Применяется для написания небольших системных приложений, драйверов, модулей стыковки с нестандартным оборудованием. 12
Языки программирования высокого уровня не учитывают конкретных компьютерных архитектур. Создаваемые программы легко переносятся на другие платформы, для которых создан транслятор этого языка. 13
Парадигмы языков программирования q q Императивные (процедурные) языки описывают решение задачи как последовательность процедур Функциональные языки описывают требуемый результат в виде набора вложенных друг в друга функций (Haskell) Логические языки описывают требуемый результат в виде суммы логических операций (Prolog) Объектно-ориентированные языки способны определять абстрактные типы данных и реализовывать основные парадигмы ООП: инкапсуляцию, наследование и полиморфизм (C++, Java, Object Pascal и др. )
Поколения языков программирования Первый этап – машинные коды (50 -е гг. ) Фрагмент программы в машинном коде Фрагмент программы на языке ассемблера
Второй этапа – языки высокого уровня (60 -е гг. ) Каждая команда в языке высокого уровня скрывает десятки и сотни команд на языке ассемблера. ALGOL, Fortran, APL 16
Третий этап – структурное программирование Вырабатывался наиболее общий алгоритм работы программы, а затем производилась декомпозиция этого алгоритма до уровня подпрограмм. ALGOL-68, C, Pascal 17
Четвертый этап – модульное программирование Программа делится на модули, которые при компиляции образуют отдельные объектные файлы. Объектные файлы собираются в единое целое и получается исполняемая программа. Модули можно использовать многократно как в виде исходного кода, так и скомпилированных объектных файлов. 18
Пятый этап – объектно-ориентированный подход Объекты окружающего мира находят свое абстрактное отражение в сложных типах данных, называемых классами. C++, Java, Object Pascal, языки семейства Microsoft. NET 19
Шестой этап – компонентный подход Построение программного обеспечения из независимых друг от друга «кирпичиков» , которые объединяются между собой благодаря специальным стандартизированным интерфейсам. Компоненты могут быть написаны на разных языках программирования и скомпилированы в разных средах разработки. 20
ОБЗОР ЯЗЫКОВ ПРОГРАММИРОВАНИЯ ВЫСОКОГО УРОВНЯ 21
Процедурное программирование Программа представляет собой последовательность команд, определяющих алгоритм решения задачи. Основная идея процедурного программирования - использование памяти для хранения данных. Основная команда - присвоение, с помощью которой определяется и меняется память компьютера. Программа производит преобразование содержимого памяти, изменяя его от исходного состояния к результирующему
Языки процедурного программирования Фортран создан в начале 50 -х годов для программирования научно-технических задач; Кобол – создан в конце 60 -х годов 20 -го века для решения задач обработки больших объемов данных, хранящихся на различных носителях данных; Алгол (1960 год) – это многоцелевой расширенный язык программирования. В нем впервые введены понятия «блочная структура программы» и «динамическое распределение памяти» . Не получил развития из-за отсутствия хороших компиляторов.
BASIC – язык программирования для начинающих. Характеризуется простотой освоения и наличием универсальных средств для решения научных, технических и экономических задач. Паскаль (1968 -1971 гг). В основу языка положен подход от общей задачи к частным (более простым и меньшим по объему). Си - планировался как язык для реализации операционной системы Unix вместо языка Ассемблера. Похож на Паскаль и имеет дополнительные средства для прямой работы с памятью. 24
Языки объектно-ориентированного программирования С++ (Си++) – объектно –ориентированное расширение языка Си, созданное Страуструпом в 1980 г. Java (джава, ява) – создан компанией Sun в нач. 90 -х гг. на основе С++. Призван упростить разработку приложений на основе С++ путем исключения из него всех низкоуровневых возможностей. Главная особенность – компиляция не в машинный код, а в платформенно-независимый байт-код. Этот байт -код выполняется с помощью интерпретатора – виртуальной java-машины, версии которой созданы для любой платформы.
С# (Си шарп) – создана в конце 90 -х гг. в Microsoft. В нем воплотились лучшие идеи С и С++, а также достоинства Java. 26
Языки программирования баз данных База данных – это файл (или группа файлов), представляющий собой упорядоченный набор записей, имеющих единообразную структуру и организованных по единому шаблону. Для работы с базами данных был создан структурированный язык запросов SQL (Structured Query Language). Для управления большими базами данных разработаны СУБД (системы управления базами данных). В каждой СУБД помимо поддержки языка SQL имеется также свой уникальный язык.
Языки программирования для Интернета Языки программирования для компьютерных сетей являются интерпретируемыми. Perl - язык, приспособленный для обработки произвольных текстовых файлов, извлечения из них необходимой информации и выдачи сообщений. Команды Perl могут получить данные из формы HTML или другого источника и выполнить с ними какое-нибудь действие.
PHP (1995 -1997 гг) обладает средствами доступа к БД и используется создателями динамических сайтов во всем мире VRML (1994 г) создан для организации виртуальных трехмерных интерфейсов в Интернете XML. С 1996 г идет работа над созданием универсального языка структуры документов. Может стать заменой языка HTML. 29