Принцип работы кода программы

ОСНОВНЫЕ ПРИНЦИПЫ (по фон Нейману, 1945 г. ) • • • блочная структура вычислительной машины; двоичное кодирование данных; адресность памяти; иерархическая организация памяти; принцип хранимой программы; принцип программного управления

СТРУКТУРНАЯ СХЕМА ВЫЧИСЛИТЕЛЬНОГО УСТРОЙСТВА АЛУ УУ ОЗУ Цепи сигналов управления Цепи передачи Данных и адресов УВВ АЛУ — арифметико-логическое устройство. Преобразует информацию, выполняя сложение, вычитание и основные логические операции УУ — устройство управления. Руководит работой других устройств, направляя им адреса, микрокоманды и данные и получая данные от них.

Получает команды программы и исходные данные из ОЗУ — оперативное запоминающее устройство. Хранит данные, адреса и команды, обладает высокой скоростью записи и чтения чисел. УВВ — устройства ввода-вывода. Получают информацию извне, выводят ее получателю, обеспечивают длительное хранение информации. 3

ДВОИЧНОЕ КОДИРОВАНИЕ ДАННЫХ • Любая информация, предназначенная для хранения и обработки в ВТ, представляется в двоичном коде, превращаясь в данные; • Любые методы и алгоритмы, используемые в ВТ для обработки информации, должны быть представлены в двоичном коде;

Как на самом деле работает двоичный код?

АДРЕСНОСТЬ ПАМЯТИ • ОЗУ состоит из отдельных битов. Для записи или считывания группа соседних битов объединяется в ячейку, состоящую из 8 бит, или байта, которая имеет свой адрес (номер). Нумерацию ячеек принято начинать с нуля. Запись и считывание происходит не битами, а байтами. • Если для хранения данных требуется несколько байт – в памяти объединяется и резервируется это количество байт, и в этом случае адресом такой структуры служит номер байта с наименьшим адресом. • Данные считываются из ячеек и записываются в них в произвольном порядке, поэтому организованную таким образом память принято называть памятью с произвольным доступом (англ. RAM = random access memory).

ИЕРАРХИЧЕСКАЯ ОРГАНИЗАЦИЯ ПАМЯТИ Как правило, чем больший объем имеет память, тем медленнее она работает. Поэтому используют иерархическую систему из нескольких типов памяти.

ПРИНЦИП ХРАНИМОЙ ПРОГРАММЫ • В фон-неймановской архитектуре было предложено представлять команды в виде двоичного кода. • Код программы может сохраняться во внешней памяти (например, на дисках) и затем загружаться в оперативную память для повторных вычислений.

ПРИНЦИП ПРОГРАММНОГО УПРАВЛЕНИЯ • Любая обработка данных происходит по программе. • Программа содержит команды, следующие одна за другой в определенном порядке. • Регистр АЛУ, называемый счетчик адреса команд, хранит адрес команды, которая будет выполняться следующей. • Используя значение из счетчика, процессор считывает из ОЗУ очередную команду программы, расшифровывает ее и выполняет: на время выполнения она сохраняется в специальном регистре команд. • значение счетчика адреса команд увеличивается так, чтобы он указывал на следующую команду • выбранная команда выполняется (при сложения двух чисел оба слагаемых считываются в АЛУ, складываются и результат сохраняется в регистре или ячейке памяти); • Затем процесс повторяется для следующей команды и т. д.

Читайте также:
Какая программа нужна для чертежей дома на компьютере

Как работает язык программирования(Компилятор)? Основы программирования.

НЕКОТОРЫЕ ТОНКОСТИ • Адрес первой команды программы задается операционной системой или пользователем в пультовом режиме; • В современных ВС при включении в счетчик аппаратно заносится некоторое значение, указывающее на начало программы, хранящейся в ПЗУ. Эта программа тестирует устройства ВС и загружает в ОЗУ начальный загрузчик операционной системы; • Выполнение текущей команды может сопровождаться изменением счетчика команд не только на +1; • Команда может состоять из нескольких частей: Код операции Адрес 1 -ого операнда Адрес 2 -ого операнда Адрес результата

МАГИСТРАЛЬНО-МОДУЛЬНЫЙ ПРИНЦИП Шина (или магистраль) – это группа линий связи для обмена данными между несколькими устройствами компьютера Контроллер – это электронная схема для управления внешним устройством и для простейшей предварительной обработки данных.

ОБМЕН ДАННЫМИ С ВНЕШНИМИ УСТРОЙСТВАМИ • программно-управляемый ввод/вывод — все действия по вводу/выводу предусмотрены в теле программы; • обмен с устройствами по аппаратным или программным прерываниям; • прямой доступ к памяти (DMA = Direct Memory Access) для простых операций с данными.

СТРУКТУРНАЯ СХЕМА ПК АЛУ УУ Прерывания ОЗУ МП Системная плата контроллеры УВВ 12

Пример структурной схемы ПК 4 -ого поколения 13

Домашнее задание • К. Ю. Поляков, А. П. Шестаков, Е. А. Еремин: стр. 137 -148 читать, отвечать на вопросы • Угринович: стр. 18 – 19 • Главы из уч. Рудаков, Федотов: BOOKALL 3. DOC стр. 3 -7

Источник: present5.com

Манчестерский код. Часть 1. Кодирование данных.

Из названия статьи и обложки вы уже знаете, о чем сегодня пойдет речь, так что начинаем без предисловий сразу с главного. Итак, будем осуществлять генерацию манчестерского кода при помощи контроллера STM32. Разумеется, вначале разберемся, что из себя представляет данный тип кодирования в целом. Сразу могу анонсировать следующую статью, которая будет посвящена уже декодированию того сигнала, который мы сгенерируем сегодня, так что следите за обновлениями, добавляйте в закладки и подписывайтесь на всяческие наши группы )

Манчестерский код.

Манчестерское кодирование (код Манчестер-II) представляет из себя способ кодирования исходного двоичного кода двоичным же цифровым сигналом. Или в переводе — на входе единицы и нули, на выходе — единицы и нули, но порядок их следования, естественно, различается.

Читайте также:
Какие программы взламывают одноклассники

Существует два основных типа кодирования:

  • кодирование по стандарту IEEE 802.3. В данном случае логический «0» на входе кодируется перепадом напряжения с высокого уровня ни низкий, а логическая «1» — с низкого на высокий. Это мы наглядно рассмотрим чуть ниже, так что все станет окончательно понятно.
  • кодирование по Г. Е. Томасу. Здесь все наоборот: бит «0» — перепад с низкого уровня на высокий, бит «1» — с высокого на низкий.

Общие принципы разработки ПО и их основоположники. Коротко о главном

Lorem ipsum dolor

Основные принципы программирования — это свод негласных правил и рекомендаци й , который помогает программисту написать красивый и эффективный код. Основоположников у этих принципов нет, все вырабатывалось опытом и «болью» десятков разных программистов. Постоянный труд, пот и ко д инг дали понимание того , как правильно программировать, чтобы получилось хорошо.

Именно этими общими принципами разработки мы и поделимся сегодня.

Нужно понимать, что все принципы — это не волшебная палочка, которая способна ваш «спагетти-код» превратить в понятное и рабочее состояние. Это лишь подсказки, которые могут облегчить ваш труд.

Основные принципы программирования

  • что нужно будет разрабатывать,
  • какая команда в этом будет задействована,
  • какое финансирование у проекта,
  • сколько времени есть на разработку,
  • и др.

Не повторяй себя! — DRY (Don ‘ t Repeat You r self)

  1. Вам нужно внести исправление в этот повторяющийся кусок скрипта. В таком случае вам придется проконтролировать все места, где используется этот самый скрипт, чтобы ничего не пропустить. А это дополнительные затраты времени и энергии.
  2. Из первого пункта получается, что если вы пропустите хоть одно место, где нужно внести исправление в один и тот же код, то есть вероятность, что вся программа не будет работать. И если такое случи тся , то повторять процедуру проверки нужно будет заново.

Делать проще! — KISS (Keep It Simple Stupid)

Изначально нужно писать максимально просто, насколько это возможно. Не нужно придумывать каких-то сложных подходов или конструкций для решения простых задач. Это существенно облегчает дальнейшую поддержку и отладку вашей программы. Плюс может так случиться, что вас заменит другой программист (или вы кого-то замените!). Чтобы ему (или вам в чужом коде!) было легче разобраться, код должен быть максимально простым и понятным.

Бритва Оккама — OR (Occam ‘ s Razor)

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

Этот принцип пришел из английской философии и назван в честь монаха Уильяма из Оккама. В философии этот принцип звучит так: «Не нужно приумножать сущее, если в этом нет острой нужды». Программисты адаптировали этот принцип к своей сфере и активно его применяют при эффективной и понятной разработке.

Читайте также:
Программа строение тела человека

Вы в этом не нуждаетесь! — YAGNI (You Aren ‘ t Gonna Need It)

Данный принцип учит вести свою разработку последовательно и разрабатывать только то, что нужно здесь и сейчас. И только потом по мере необходимости наращивать функциональность вашей программы, приступать к дальнейшей разработке.

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

Вначале масштабное проектирование — BDUF (Big Design Up Front)

  • что за чем идет;
  • что после чего будет программироваться;
  • кто будет отвечать за части разрабатываемой программы;
  • сколько времени нужно на разработку всей программы и/или ее частей;
  • и др.

Не нужно делать преждевременную оптимизацию — APO (Avoid Premature Optimization)

Оптимизация должна быть своевременной. Это , безусловно , важный процесс, который позволит повысить производительность вашей будущей программы. Но ее нужно проводить после завершения всего процесса разработки, когда у вас «на руках» уже имеется работающая программа.

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

Принцип наи меньшего удивления — POLA (Princip l e Of Least Astonishment)

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

Условно: если метод называется «Добавить сахар», а при этом добавляется соль, то это как минимум неправильный подход к названию метода.

Нужно стремиться к тому , чтобы ваш код читался , как стихотворение.

Закон Дем ет ры — LOD (Law of Demeter)

Данный принцип определяет гибкость и понятность вашего приложения. Основная цель этого принципа — нужно разделять области ответственности среди всех используемых классов. То есть любой класс должен стремиться к собственной самостоятельности, но при этом он должен легко взаимодействовать с другими классами, когда это нужно. Приветствуется иерархия классов.

Можно привести жизненный пример, объясняющий, что подразумевает этот принцип. Допустим , у вас есть кошка. Для того , чтобы подозвать ее к себе, вам просто нужно сказать : « К ыс-кыс» или назвать ее по имени, то есть нет необходимости обращаться к каждой ее лапе отдельно. Одна команда — и кошка подошла.

Заключение

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru