407.39K
Категория: ПрограммированиеПрограммирование

Введение в программирование для АСУб и ЭВМб. Тема 1-1

1.

Тема 1-1.
Введение в программирование
для АСУб и ЭВМб

2.

Программирование
• Программирование – процесс создания
программы (для ЭВМ, компьютера)
– процесс
– программа

3.

Процесс
• Процесс (кибернетика) – деятельность,
сопровождающаяся изменением свойств
элементов системы
• Процесс (словарь) –
последовательная смена явлений,
состояний в развитии чего-нибудь.
• Процесс – последовательность этапов

4.

Программа
• Программа: ТВ, политическая, учебная
• Программа в переводе означает
«предписание» (греческий)
• Программа – данные,
предназначенные для управления
конкретными компонентами системы
обработки информации в целях
реализации определенного алгоритма
(ГОСТ 19781-90)

5.

Программа
• Программа: данные + алгоритмы
(Вирт)
• Программа – это запись алгоритма на
языке понятном компьютеру (языке
программирования).

6.

Алгоритм
• Алгоритм – это понятное и точное
указание исполнителю совершить
последовательность действий,
направленных на решение
поставленной задачи.
• Алгоритм – это последовательность
действий, приводящих к результату

7.

Программирование
Процесс
Исполнитель: ЭВМ, компьютер
Что: Алгоритм и Данные
Как: с помощью Языка

8.

Архитектура ЭВМ
Принстонская архитектура (модель фон Неймана) – принцип
хранения данных и инструкций в одной памяти

9.

Принципы фон Неймана
• Принцип двоичности. Для представления данных и
команд используется двоичная система счисления.
• Принцип программного управления. Программа
состоит из набора команд, которые выполняются
процессором друг за другом в определённой
последовательности.
• Принцип однородности памяти. Как программы
(команды), так и данные хранятся в одной и той же
памяти (и кодируются в одной и той же системе
счисления, чаще всего – двоичной). Над командами
можно выполнять такие же действия, как и над
данными.

10.

Принципы фон Неймана
• Принцип адресуемости памяти. Структурно основная
память состоит из пронумерованных ячеек,
процессору в произвольный момент времени
доступна любая ячейка.
• Принцип последовательного программного
управления. Все команды располагаются в памяти и
выполняются последовательно, одна после
завершения другой.
• Принцип условного перехода. Команды из
программы не всегда выполняются одна за другой.
Возможно присутствие в программе команд
условного перехода, которые изменяют
последовательность выполнения команд в
зависимости от значений данных.

11.

Архитектура ЭВМ
Гарвардская архитектура – физическое разделением памяти
команд (программ) и памяти данных
Гарвардская архитектура широко применяется во внутренней структуре
современных высокопроизводительных микропроцессоров, где используется
отдельная кэш-память для хранения команд и данных. В то же время во внешней
структуре большинства микропроцессорных систем реализуются принципы
Принстонской архитектуры.

12.

Структура ПК
Микропроцессор
Внутренняя
память
Информационная магистраль (шина)
Контроллеры
Внешние устройства

13.

Архитектура ЭВМ

14.

Оперативная память
С точки зрения разработчика
оперативная память – упорядоченная
последовательность ячеек — байт,
предназначенных для размещения данных,
которыми оперирует программа во время
своего выполнения.
– Упорядоченность означает, что каждый элемент
последовательности (каждая ячейка памяти)
имеет свой порядковый номер.
– Этот порядковый номер называют адресом
ячейки памяти — адресом байта.
– Непрерывный диапазон ячеек, доступный для
адресации в конкретной операционной системе,
называют адресным пространством

15.

Адресное пространство
• Общее количество доступных для адресации ячеек памяти
определяется разрядностью операционной системы, более
точно — разрядностью типа данных, используемого в
конкретной операционной системе для хранения номера ячейки

16.

Программирование
Процесс
Исполнитель: ЭВМ, компьютер
Что: Алгоритм (и Данные)
Как: с помощью Языка

17.

МАШИННЫЕ ЯЗЫКИ
Машинный язык – система команд (набор кодов
операций) конкретной вычислительной машины,
которая
интерпретируется
непосредственно
процессором или микропрограммами этой
вычислительной машины
Опкод – код, определяющий операцию, которая
должна быть выполнена.
BB 11 01 B9 0D 00 B4 0E 8A 07 43 CD 10 E2
F9 CD 20 48 65 6C 6C 6F 2C 20 57 6F 72 6C 64 21
Программа вывода «Привет, друг!»:

18.

x := sin(y*Pi) + 1;
11011001 11101011 11011100 00001101 11010000 10010111
01000000 00000000 11011001 11111110 11011001 11101000
11011110 11000001 11011101 00011101 10011000 10010111
01000000 00000000
D9 EB
DC 0D D0 97 40 00
D9 FE
D9 E8
DE C1
DD 1D 98 97 40 00

19.

АССЕМБЛЕРЫ
Используют
мнемонические
команды
взамен
машинных команд.
В
программировании
на
Ассемблере
стало
возможным использование меток, что облегчало в
значительной мере отладку программ.
Появилась возможность разработки целой серии
вычислительных машин с одинаковой или сходной
системой команд, что можно назвать первым подобием
переносимости кода.
Ассемблер нес в себе еще одну революционность для
программирования: появилось два представления
программ на нем: в кодах и в откомпилированном виде.

20.

Ассемблер
- первый язык программирования (1950 –е гг.).
Близок к машинному языку.
Появилось понятие переменной.
Команды обозначаются словами, вместо
конкретных адресов можно использовать имена.
LD (nn),A - (машинный код: 50) «загрузить в
ячейку памяти, адрес которой задан двухбайтным
числом nn, содержимое регистра A».
ADD A,B (ее машинный код - 128) - «прибавить
содержимое регистра B процессора к содержимому
регистра А и результат оставить в регистре А».

21.

Например, хотим сложить содержимое ячеек 30013 и
30014, а результат поместить в ячейку 30015:
Ассемблер
Адрес
Машинный
код
Комментарий
LD A,(30013)
30000
58
30001
61
Загрузить в регистр А число, содержащееся в
адресе 30013.
30002
117
LD B,A
30003
71
Загрузить в регистр В содержимое регистра А
LD A,(30014)
30004
58
30005
62
Загрузить в регистр А число, содержащееся в
адресе 30014.
30006
117
ADD A,B
30007
128
Прибавить к содержимому А содержимое
регистра В.
LD (30015),A
30008
50
Выгрузить содержимое регистра А в адрес 30015.
30009
63
30010
117
NOP
30011
0
Нет операции. Пауза.
RET
30012
201
Возврат туда, откуда эта программа вызывалась.

22.

begin
WriteLn ('Hello, world!');
end.
mov ax,cs
mov ds,ax
mov ah,9
mov dx, offset Hello
int 21h
xor ax,ax
int 21h
Hello:
db "Hello World!",13,10,"$"

23.

Языки программирования, ориентированные
на команды процессора и учитывающие его
особенности, называются языками низкого
уровня.
Языком программирования высокого уровня
называется фиксированная система
обозначений и правил для описания
алгоритмов и структур данных.
Их отличительные особенности:
- аппаратная независимость;
- близость к естественному языку.

24.

Уровни языков программирования
• «Железное» программирование
Поведение программируемого устройства задается путем
операций с физическими связями его компонентов.
• Машинные языки программирования
Программа представляет собой последовательность
элементарных инструкций для центрального процессора.
• Машинно-ориентированные языки (ассемблеры)
Язык содержит мнемонические команды, операторы для
управления ходом исполнения, макрокоманды.
• Языки программирования высокого уровня
Язык в определенном смысле приближен к естественному
человеческому языку, обладает сложной грамматикой,
средствами управления ходом исполнения и т.п.

25.

Языки программирования
• Функциональные (LISP)
• Процедурные (императивные) (C, Pascal,
Fortran)
• Визуальные (UML, BPEL)
• Декларативные (SQL)
• Описания интерфейсов (IDL, WSDL)
• Объектно-ориентированные (C++, C#, Java)
• Логические (ProLog)
• Сценарные (скриптовые) (Forth, Perl, PHP)

26.

Языки программирования
• Функциональные (LISP)
Алгоритм реализуется как последовательность вычисления
значений функций. Программа является stateless – состояние в
явном виде не хранится.
• Процедурные (императивные) (C, Pascal, Fortran)
Программа представляет собой совокупность конечных
автоматов, процесс ее исполнения состоит в изменении этих
состояний.
• Визуальные (UML, BPEL)
Языки предназначены для графического представления
процессов, структур, взаимосвязей.
• Декларативные (SQL)
Разработчик описывает ожидаемый результат исполнения
программы, не налагая ограничений на способ и процесс
получения этого результата средой программирования.

27.

Языки программирования
• Описания интерфейсов (IDL, WSDL)
Языки описывают интерфейсы и способы взаимодействия
компонентов сложных комплексов, предназначены для
«гладкой» интеграции разнородных элементов архитектуры.
• Объектно-ориентированные (C++, C#, Java)
Языки основаны на объектно-ориентированной парадигме
программирования: вычислительная задача рассматривается
как совокупность объектов (с их свойствами и состояниями) и
отношений между ними.
• Логические (ProLog)
Программа представляет собой совокупность логических
связей, процесс исполнения – синтез более сложных логических
отношений на основе заданных «простых».
• Сценарные (скриптовые) (Forth, Perl, PHP)
Языки оперируют понятиями и примитивами некоторой
заранее созданной системы, ориентированы на создание
сценариев ее взаимодействия с пользователем.

28.

Трансляция, компиляция и
интерпретация
Транслятор – это программа, принимающая
на вход программу на одном языке (исходный
код) и преобразующая ее в программу,
написанную на другом языке (объектный код).
Транслятор, который осуществляет перевод
всей исходной программы в эквивалентную ей
результирующую программу на языке
машинных команд, называется
компилятором.

29.

Пошаговый перевод программы,
написанной на языке программирования,
в машинные команды, которые сразу
исполняются, называется
интерпретацией.
Программа для непосредственного
исполнения программ называется
интерпретатором.

30.

Трансляция программы
•Программы-трансляторы представляют собой
пример инструментальных средств, т.е.
программного обеспечения, предназначенного
для разработки других программ
Трансляция
class Program
{
static void Main()
{
Console.WriteLine("Hello,
World!");
...
Программатранслятор
ЛЕТНЯЯ СТУДИЯ ПРОГРАММИРОВАНИЯ
10011
10010
10101
00010
01111
11110
10001
00011
11111
01010
00001
1

31.

32.

33.

34.

Запуск программы
При запуске программы загрузчик должен:
1. Считать данные из запускаемого файла.
2. Если необходимо — загрузить в память
недостающие динамические библиотеки.
3. Заменить в коде новой программы относительные
адреса и символические ссылки на точные, с учётом
текущего размещения в памяти, то есть выполнить
связывание адресов.
4. Создать в памяти образ нового процесса и
запланировать его к исполнению.

35.

Реализация:
консольное приложение
• Консольное приложение– это приложение,
которое для взаимодействия с пользователем не
использует графический интерфейс.
• Устройством, обеспечивающим взаимодействие
с пользователем, является консоль – клавиатура
и монитор.
• В операционной системе консольное
приложение работает в окне командной строки.
35

36.

Программирование
Процесс
Исполнитель: ЭВМ, компьютер
Что: Алгоритм (и Данные)
Как: с помощью Языка

37.

Принципы разработки программы
• Разработка программы на языке высокого уровня
никогда не должна начинаться собственно с
программирования.
– При таком подходе неизбежны ошибки в программах,
сложность отладки и внесения изменений в программу, что
часто и происходит, так как заказчик, только увидев
работающую программу, может оценить, что ему надо и чего
не хватает в программе.
• Поэтому любую, даже самую простую программу
разрабатывают на основе структурного подхода,
который предполагает использование наиболее
простых структур как при проектировании, так и при
программировании и отладке программ.

38.

Этапы разработки программы
1. Внешнее проектирование
Определение
общей
взаимодействия функций
структуры
2. Составление внешних спецификаций
Таблица спецификаций
3. Внутреннее проектирование
Разработка алгоритма решения задачи
4. Кодирование
5. Отладка
6. Тестирование
и
English     Русский Правила