Библиотека knigago >> Компьютеры: Разработка ПО >> Программирование: прочее >> Основы программирования. Часть I


СЛУЧАЙНЫЙ КОММЕНТАРИЙ

# 1412, книга: Медальон сюрреалиста
автор: Алина Егорова

"Медальон сюрреалиста" - захватывающий детективный роман, погружающий читателя в загадочный мир сюрреалистического искусства и темных тайн. Главный герой, Андрей Зотов, искусствовед, обнаруживает украденный медальон с сюрреалистическим изображением. Это открытие втягивает его в опасную игру, где искусство и реальность переплетаются самым неожиданным образом. Алина Егорова мастерски создает атмосферу таинственности, держа читателя в напряжении с самого начала до самого конца. Она...

СЛУЧАЙНАЯ КНИГА

Узнаёте? Алик Деткин. Анатолий Георгиевич Алексин
- Узнаёте? Алик Деткин

Жанр: Детские приключения

Год издания: 1970

Серия: Анатолий Алексин. Сборники

Андрей Александрович Тюгашев - Основы программирования. Часть I

Основы программирования. Часть I
Книга - Основы программирования. Часть I.  Андрей Александрович Тюгашев  - прочитать полностью в библиотеке КнигаГо
Название:
Основы программирования. Часть I
Андрей Александрович Тюгашев

Жанр:

Учебники и пособия: прочее, Учебники и самоучители по компьютеру, Программирование: прочее

Изадано в серии:

неизвестно

Издательство:

Университет ИТМО

Год издания:

ISBN:

неизвестно

Отзывы:

Комментировать

Рейтинг:

Поделись книгой с друзьями!

Помощь сайту: донат на оплату сервера

Краткое содержание книги "Основы программирования. Часть I"

Учебное пособие содержит теоретический материал и лабораторный практикум для изучения дисциплины «Основы программирования». Представлен панорамный взгляд на предметную область, с представлением не только традиционной императивной, но и функциональной, и логической парадигм программирования, исторической ретроспективы и связи с другими областями информатики. Приводится сравнение программирования на языках высокого и низкого уровней (ассемблер). Несмотря на обзорный характер, после прочтения и прохождения входящего в книгу лабораторного практикума студент будет способен писать программы средней сложности на языках С/С++. Книга содержит и специальные главы, посвященные жизненному циклу программных средств современной ИТ-индустрии, проблеме ошибок в программах и методах верификации программного обеспечения, стилю программирования. Учебное пособие адресовано студентам, обучающимся в ИТМО на кафедре КОТ по направлению 09.03.02 «Информационные системы и технологии»; преподавателям, ведущим теоретические и лабораторные занятия по курсу «Основы программирования». В то же время издание может представлять интерес для школьников, студентов средних специальных заведений и широкого круга читателей, заинтересованных в освоении основ программирования. Рекомендовано к печати Ученым советом факультета КТиУ 08.12.2015 г., протокол №10.

Читаем онлайн "Основы программирования. Часть I". [Страница - 35]

память
набор обрабатываемых чисел. В следующей строке — описание ячейки N,
содержащей размер массива, в нашем случае 10.
Правила FlatAssembler подразумевают, что начало исполняемой
программы снабжается меткой start (последней строчкой программы
должна в этом случае быть директива .end start). Итак, вначале в
регистр ESI заносится адрес начала обрабатываемого массива в памяти.
Регистр ESI — так называемая расширенная (32-разрядная) версия
регистра процессора SI, ее использование в данном случае обусловлено
использованием современного компьютера. В следующей строке заносим в
регистр CX, используемый как счетчик, количество чисел. Квадратные
скобки необходимы, чтобы указать на необходимость взять в качестве
аргумента число по адресу, а не сам адрес ячейки, — косвенную
адресацию. Затем мы обнуляем регистр DX — в нем будем накапливать
сумму нечетных чисел.
Со следующей строки начинается тело цикла, поэтому она имеет метку l1.
В цикле мы первым делом извлекаем из памяти по адресу, на который
указывает ESI, очередное число (косвенную адресацию дают квадратные
скобки) и заносим его в регистр AX. Проверка нечетности числа
осуществляется путем вполне уместного при программировании на
ассемблере использования низкоуровневых возможностей — команды
битового тестирования по маске test ax,1. Вспомним, что данные
хранятся в памяти ЭВМ в двоичном виде в позиционном коде. Младший
разряд числа отвечает при этом за степень 20 и равен нулю в случае, если
число делится без остатка на 2, и единице — в противном случае.
Соответственно, для проверки на нечетность нет необходимости
выполнять операцию деления на 2. Достаточно проверить содержимое
младшего бита (маска 1). Следующая команда условного перехода jz
обеспечивает переход к метке l2 в случае, если результат нулевой (число
четное), с помощью чего производится обход команд программы,
производящих суммирование.
Следующая операция, которая выполняется либо после суммирования
естественным путем, либо после перехода по команде jz l2, — переход к
следующему числу в памяти. Для этого мы увеличиваем на 2 значение
регистра ESI. Увеличение на 2 связано с тем, что мы храним
обрабатываемые числа в машинных словах, а минимальная единица

137

адресации процессора x86 — 1 байт. В случае если счетчик не дошел до
нуля, с помощью специальной команды цикла loop
выполняется
переход к повтору цикла с метки l1.
После выполнения программы сумма нечетных чисел будет накоплена в
регистре DX. Нам было бы интересно получить это значение на экране. К
сожалению, в ассемблере нет удобных средств, подобных writeln в
Паскале или cout > и >> d;

Здесь cin — наименование стандартного потока ввода, обычно связанного
с клавиатурой, cout — название стандартного потока вывода,
назначаемого обычно на экран дисплея; endl — обозначение символа
перевода строки. Для применения потокового ввода-вывода необходимо
подключить стандартную библиотеку с заголовочным файлом
iostream.h.
Еще одно весьма удобное изменение — разрешение объявлять переменные
в произвольном месте программы, а не только в начале тела функции или
вне функций для глобальных переменных. Популярной конструкцией при
программировании на С++ становится использование глубоко локальных
переменных, время жизни которых ограничивается, например,
исполнением конкретного оператора цикла, как в следующем примере:
for (int i=0;i --">

Оставить комментарий:


Ваш e-mail является приватным и не будет опубликован в комментарии.