Vvmebel.com

Новости с мира ПК
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

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

Основы программирования, термины и понятия!

Приветствую всех сегодня рассмотрим основные понятия, термины в программировании, так как без понимания их не возможно будет выучить ни один из языков программирования:

  • ОЗУ (Оперативное запоминающее устройство) – RAM(RandomAccessMemory, память с произвольным доступом) – энергозависимая память в которой хранятся данные и команды
    необходимые процессору для выполнения им операций.
  • CPU (Centralprocessingunit – ЦПУ, центральное обрабатывающее устройство) – исполнитель машинных инструкций (кода программ).
  • ALU (Arithmeticandlogicunit – АЛУ, Арифметико-логическое устройство) – блок процессора, который служит для выполнения арифметических и логических преобразований над данными.
  • Система счисления – символический метод записи чисел.
  • Позиционная система счисления (позиционная нумерация) – система счисления, в которой значение каждого числового знака (цифры) в записи числа зависит от его позиции (разряда).
  • Двоичная система счисления — это позиционная система счисления с основанием 2. В этой системе счисления числа записываются с помощью двух символов (0 и 1).
  • Шестнадцатеричная система счисления — позиционная система счисления по целочисленному основанию 16. Обычно в качестве шестнадцатеричных цифр используются десятичные цифры от 0 до 9 и латинские буквы от A до F, то есть (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F).
  • Дополнительный код (two’s complement, или twos-complement) — способ представления знаковых (положительных и отрицательных) целых чисел.
  • Бит (Bit — binary digit) – единица измерения информации — один двоичный разряд в двоичной системе счисления. Впервые слово bit, было использовано Клодом Шенноном для логарифмической единицы информации в 1948 г. В вычислительной технике, слово «бит» часто применяется в значении «двоичный разряд».
  • Тетрада (от греч. tetrás, родительный падеж tetrádos — четвёрка), совокупность 4 бит.
  • Байт (byte) — единица хранения и обработки цифровой информации. В настольных вычислительных системах байт считается равным восьми битам, в этом случае он может принимать одно из 256 (2 8 ) различных значений.
  • Разрядность процесора— способность одновременно обрабатывать какое-то количество бит. Часто, разрядностью компьютера называют разрядность его машинного слова.
  • Машинное слово — машинно-зависимая и платформенно зависимая величина, измеряемая в битах или байтах (тритах или трайтах – машина Сетунь-70), равная разрядности регистров процессора и/или разрядности шины данных. Для 32-битных процессоров x86: исторически машинным словом считается 16 бит, реально -32 бита. Это правило распространяется на двойные слова (32 бита – 64 бита), учетверенные слова (64 бита – 128 бит) и параграф (128 бит – 256 бит).
  • Килобайт (KB): 1 KB = 1024B= 2 10 B, где B — байт
  • Мегабайт (MB): 1 MB = 1024 KB=1024 2 B= 2 20 B= 1048576 B
  • Гигабайт (GB): 1 GB = 1024 MB=1024 3 B= 2 30 B= 1 073 741 824 B
  • Терабайт (TB): 1 TB = 1024 GB=1024 4 B= 2 40 B = 1 099 511 627 776 B
  • Вещественное число или действительное число (от лат. realis — действительный) — в информатике — тип данных, содержащий числа, записанные с десятичной точкой и/или с десятичным порядком.
  • Плавающая запятая -форма представления действительных чисел, в которой число хранится в форме мантиссы и показателя степени. При этом число с плавающей запятой имеет фиксированную относительную точность и изменяющуюся абсолютную. Наиболее часто используемое представление утверждено в стандарте IEEE 754. Реализация математических операций с числами с плавающей запятой в вычислительных системах может быть как аппаратная, так и программная.
  • Число одинарной точности (англ. Single precision) — компьютерный формат представления чисел, занимающий в памяти одну ячейку (машинное слово; в случае 32-битного компьютера-32 бита или 4 байта). Как правило, обозначает формат числа с плавающей точкой стандарта IEEE 754.Числа одинарной точности с плавающей точкой обеспечивают относительную точность 7-8 десятичных цифр и масштабы в диапазоне от 10 38 до примерно 10 38 Числа одинарной/двойной/расширенной точности (32, 64 и 80 бит) поддерживаются на аппаратном уровне сопроцессором (FPU).
  • Число двойной точности (англ. Double precision) — компьютерный формат представления чисел, занимающий в памяти две последовательных ячейки (компьютерных слова; в случае 32- битного компьютера — 64 бита или 8 байт). Как правило, обозначает формат числа с плавающей запятой стандарта IEEE 754. Числа двойной точности с плавающей точкой обеспечивают относительную точность около 16 десятичных цифр и масштабы в диапазоне от 10 308 до примерно 10 308 . В компьютерах, которые имеют 64-разрядные с плавающей точкой арифметические единицы, большинство численных вычислений осуществляется в двойной точности с плавающей точкой, поскольку использование чисел одинарной точности обеспечивает почти такую же производительность.
  • Математический сопроцессор — сопроцессор для расширения командного множества центрального процессора и обеспечивающий его функциональностью модуля операций с плавающей запятой, для процессоров, не имеющих интегрированного модуля.
  • Модуль операций с плавающей запятой (или с плавающей точкой; англ. floating point unit (FPU)) часть процессора для выполнения математических операций над вещественными числами.
  • Переменная (Variable) – это область памяти, которая хранит в себе некоторое значение, которое можно изменить.
  • Инициализация переменной – это первое присвоение ей значения. Все последующие присвоения новых значений этой переменной, не считаются инициализацией. Правило: При создании переменной обязательно указать ее тип, а при дальнейшем ее использовании, тип указывать не нужно.
  • В языке C# нет базовых типов — все типы реализуются как классы библиотеки NET Framework, но в нем есть набор встроенных типов, которые рассматриваются как псевдонимы (алиасы–aliases, короткие и упрощенные формы записи) типов из пространства имен System.
  • Псевдоним — альтернативный тип, который можно использовать вместо системных типов. Например: decimal — это псевдоним типа Decimal, а тип int — псевдоним типа Int32. В случае использования псевдонимов, как типов для переменных можно не использовать подключение пространства имен System (т.е. не писать using System;)
  • C# является строго типизированным языком. Каждая переменная должна иметь четко определенный тип. При создании переменной, используйте название-псевдоним, когда это возможно, а не полное имя типа.
  • Идентификатор — последовательность символов, которые используется для именования членов, таких как переменные, методы, параметры, а также множество других программных конструкций, которые будут рассмотрены позже. Иными словами: идентификатор переменной – это имя этой переменной.

Спецификация языка C # рекомендует придерживаться определенных правил (casing conventions) при создании идентификаторов (выбора имен для ваших переменных, методов ит.д).

К таким правилам можно отнести:

  • Pascal casing – каждое слово в идентификаторе начинается с большой буквы;
  • Camel casing – каждое слово, исключая первое, в идентификаторе начинается с большой буквы;
  • Uppercase – идентификатор состоит из букв написанных в верхнем регистре (все буквы большие)
  • Технически, имена переменных могут начинаться со знака «_» — нижнее подчеркивание и с любого алфавитного символа. (Имена не могут начинаться с цифр и других символов.)
  • Для именования локальных переменных в C#, рекомендуется использовать соглашение Camel Casing. Чтобы выделить слова в идентификаторе, первые буквы каждого слова (кроме первого)сделайте заглавными. Например: myAge, myName.
  • Язык C# чувствительный к регистру (case sensitivity) Например: MyName и myName – это разные имена.
  • Не используйте символы подчеркивания, дефисы и любые другие неалфавитно-цифровые символы для разделения слов в идентификаторе.
  • Не используйте венгерскую нотацию. Суть венгерской нотации сводится к тому, что имена идентификаторов предваряются заранее оговорёнными префиксами, состоящими из одного или нескольких символов. Например: string sClientName; int iSize; Имена переменных должны быть понятны и передавать смысл каждого элемента. В редких случаях, если у идентификатора нет точного семантического значения, используйте общие названия. Например: value, item. Если вы используете псевдонимы для переменных, и ваше приложение будет выполняться с применением других .NET поддерживаемых языков, желательно ограничиться лишь CLS — совместимыми типами, к которым можно отнести все типы за исключением беззнаковых целочисленных типов и sbyte.
  • Символы Юникода — это 16-разрядные символы, которые используются для представления большинства известных письменных языков мира.

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

Программирование — основные понятия!

Введение

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

Она поможет также новичкам разработки Web -приложений усвоить некоторые общие принципы, которые необходимо понимать, прежде чем переходить к изучению программирования на JavaScript. Может показаться скучным начинать с этого, но поверьте, работа станет намного более надежной, динамичной и креативной (читайте: значительно более эффективной), если постараться, прежде всего, усвоить эти элементарные принципы. Важно изучить базовые правила программирования, прежде чем начинать работать с конкретными языками (JavaScript в случае данного курса).

Лекция имеет следующую структуру:

  • Порядок, у меня будет порядок!
    • Переменные
      • Типы переменных
      • Числа с плавающей точкой и целые числа
      • Логические значения
      • Строки
      • Массивы
      • Объекты

      Порядок, у меня будет порядок!

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

      Например, следующие два фрагмента кода выполняют одну и ту же задачу на JavaScript и PHP :

      Посмотрите пример на JavaScript преобразования температуры из шкалы Фаренгейта в шкалу Цельсия.

      Языки программирования интерпретируются, чтобы превратиться в действия или результаты. Некоторые языки, такие как JavaScript, интерпретируются браузером Web , и, чтобы заставить их «выполнить работу», достаточно поместить код в документ HTML и открыть его в браузере. Другие языки программирования, чтобы сделать их исполнимыми, необходимо перевести (компилировать) с помощью дополнительного шага. Глубоко внутри себя все компьютеры понимают только нули и единицы, но над этим существует множество уровней языков, каждый из которых выполняет различные задачи.

      Переменные

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

      Можно сказать, что вычисления начинают выполняться, когда вводится неизвестное, например, x внизу:

      Перенося известные значения в правую часть, можно определить x :

      При использовании нескольких переменных выражение становится более гибким:

      Можно изменять значения x и y , и формула может по-прежнему оставаться справедливой:

      То же самое происходит в языках программирования — в программировании переменные являются контейнерами для значений, которые могут изменяться. Переменные могут содержать любые виды значений, а также результаты вычислений. Переменные имеют имя и значение, разделенные знаком равенства (=).

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

      Чтобы упростить изложение, давайте будем использовать в этой лекции в качестве примера язык программирования JavaScript (логично, так как этот раздел руководства по стандартам Web посвящен программированию на JavaScript). Следующий пример определяет две переменные , вычисляет результат сложения двух переменных и определяет этот результат как значение третьей переменной .

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

      На обычном языке эта последовательность будет означать следующее:

      • Здесь находится что-то, что не является кодом HTML; вызвать транслятор, который понимает язык типа JavaScript в текстовом формате .
      • Определить новую переменную (это ключевое слово var ) с именем x и присвоить ей значение 5. Конец инструкции.
      • Определить новую переменную с именем y и присвоить ей значение 6. Конец инструкции.
      • Определить новую переменную с именем result и присвоить ей в качестве значения результат сложения x и y . Конец инструкции. (Так как в присваивании значения переменной имеется вычисление, то интерпретатор затем проверяет значение x , проверяет значение y , складывает два значения и задает значение результата окончательному значению — 11)
      • Достаточно этого странного языка — возвращаемся к HTML и приказываем транслятору скрыться.

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

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

      Типы переменных

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

      • Float (число с плавающей точкой): числа, такие как 1.21323, 4, 100004 или 0.123
      • Integer (целое число): целые числа, такие как 1, 12, 33, 140, но не 1.233
      • String (строка): строка текста, такая как «boat», «elephant» или «damn, you are tall!»
      • Boolean (булево значение): true или false , но ничего другого
      • Array ( массив ): совокупность значений, такая как 1,2,3,4,’I am bored now’
      • Objects : представление какого-то объекта. Объекты являются конструкциями, которые пытаются моделировать экземпляры объектов в реальном мире с помощью свойств и методов. Например, можно смоделировать кота (cat) как объект и определить, что он имеет четыре ноги, один хвост, и что он рыжий. Можно также определить, что он может мурлыкать, определяя метод purr() , и что он может выпрашивать чизбургер с помощью метода getCheeseBurger() . Можно также повторно использовать объект кота cat и определить другого кота со всеми свойствами исходного, но только серого цвета.

      JavaScript является «слабо типизированным» языком, то есть в нем не требуется явно объявлять, какой тип данных содержат переменные . Необходимо использовать только ключевое слов var для указания, что объявляется переменная , а браузер будет определять, какой тип данных используется из контекста и использования кавычек.

      Числа с плавающей точкой и целые числа

      Нет ничего магического или необычного при работе с этими типами данных . Вы определяете переменные и задаете для них значения любого числового типа.

      Переменные этих типов данных можно модифицировать с помощью любых математических операторов.

      Булевы значения

      Булевы значения являются просто определениями «да или нет». Они задаются с помощью ключевых слов true или false .

      Строки

      Строки являются строками текста, которые могут содержать любые символы. В JavaScript строки определяют, помещая текст между одиночными или двойными кавычками.

      С помощью оператора + можно выполнить конкатенацию строк (технический термин, означающий «соединение вместе»), но строки нельзя вычитать одну из другой. Для изменения строк необходимо использовать функции, которые предоставляет язык. С другой стороны простая конкатенация выполняется очень легко:

      Посмотрите пример конкатенации строк.

      Оператор += является сокращенной записью для «message = message +» . Результатом этого сценария будет строка «Hi I am Christian Heilmann. I am 33 years old and my hair is Flickr famous».

      Существует небольшая ловушка, о которой надо помнить при использовании конкатенации, чтобы не перепутать со сложением значений. Если требуется сложить два значения, необходимо убедиться, что оба являются числами, а не строками. Пример сравнения конкатенации и сложения показывает различие между ними. «5»+»3″ будет 53, а не 8! Простейшим способом преобразования строки в число, как показано в примере, будет использование знака «+» перед строкой.

      Большинство языков программирования позволяют использовать одиночные или двойные кавычки для ограничения строки, но не разрешают смешивать их. Чтобы интерпретатор JavaScript не путался с определением конца строки, необходимо комментировать кавычки внутри строки с помощью обратной косой черты:

      Массивы

      Массивы являются очень мощной конструкцией. Массив является совокупностью значений, каждое из которых может быть переменной или реальным значением . Например:

      Доступ к каждому значению можно получить с помощью счетчика массива , который является порядковым номером в массиве — представьте, что просматриваете главы в книге. Синтаксис выражения будет arrayname[index] . Поэтому, например, pets [1] выдаст строку «Polly». «Но подождите!» — слышу я вопрос — «разве не pets [2] будет указывать на Polly, при условии , что это второе значение в массиве ?» — Нет. Счетчик не будет равен 2, так как компьютеры начинают считать с 0, а не с 1! Это очень распространенная причина путаницы и ошибок.

      Массивы автоматически содержат специальную информацию: length (длина). Если проверить значение pets .length , то будет получено 3, так как в этом массиве содержится три элемента.

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

      Объекты

      Если имеется совокупность предметов, которые требуют более детального описания, чем просто изменяющееся число, то массива может оказаться недостаточно, и тогда потребуется создать объект. Объекты являются конструкциями в программировании, которые представляют или моделируют реальные вещи, такие как людей, автомобили или инструменты.

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

      Доступ к этим свойствам можно получить с помощью записи с точкой ( person.age выдаст 33) или с помощью записи с квадратными скобками ( person[‘name’] выдаст » Chris «). Позже в этом курсе объекты JavaScript будут рассмотрены более подробно.

      Это основные сведения о возможных типах значений переменных . Другой значительной частью программирования являются структура и логика программы. Здесь вступают в игру еще две идеи программирования: условия и циклы .

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

      Программирование — процесс создания компьютерных программ.

      В узком смысле под программированием понимается написание инструкций (программ) на конкретном языке программирования (часто по уже имеющемуся алгоритму — плану, методу решения поставленной задачи). Соответственно, люди, которые этим занимаются, называются программистами, а те, кто разрабатывают алгоритмы — алгоритмистами.

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

      Программирование для ЭВМ основывается на использовании языков программирования, на которых записывается программа. Чтобы программа могла быть понята и исполнена ЭВМ, требуется специальный инструмент — транслятор. Транслятор — программа или техническое средство, выполняющее трансляцию программы. Трансляция программы — преобразование программы, представленной на одном из языков программирования, в программу на другом языке и, в определённом смысле, равносильную первой.

      В зависимости от назначения и / или способа написания программ различают:

      • · Прикладное программирование [applicationprogramming] — разработка и отладка программ для конечных пользователей, например бухгалтерских, обработки текстов и т.п.
      • · Системное программирование [systemprogramming] — разработка средств общего программного обеспечения, в том числе операционных систем, вспомогательных программ, пакетов программ общесистемного назначения, например: автоматизированных систем управления, систем управления базами данных и т.д.
      • · Декларативное (логическое, продукционное) программирование [declarativeprogramming, logicalprogramming] — метод программирования, предназначенный для решения задач искусственного интеллекта. В указанном контексте программа описывает логическую структуру решения задачи, указывая преимущественно, что нужно сделать, не вдаваясь в детали, как это делается. Используются языки программирования типа Пролог.
      • · Объектно-ориентированное программирование, объектное программирование, ООП [OOP — Object-OrientedProgramming] — метод программирования, основанный на использовании концепции объекта, абстрагирующего конкретные его реализации в предметной области. При этом данные тесно связываются с выполняемыми над объектами процедурами. Например, круг на экране монитора может рассматриваться как объект, данные о котором характеризуют положение (координаты) центра, величину радиуса, толщину и цвет линии. Процедуры, связанные с этим объектом, — перемещение, изменение размера, стирание и т.д. Объектно-ориентированное программирование разрабатывалось и усовершенствовалось в 1960-1970-х гг. В настоящее время используется в ряде языков программирования высокого уровня (Си++, Java, Смолток, ObjectLisp и др). В начале 90-х гг. была выявлена потребность в выработке единых спецификаций, которые должны позволить программным продуктам различных фирм взаимодействовать друг с другом в общей информационной среде. Решение указанной задачи взяла на себя фирма OMG (США). Выработанная ею идеология «Бизнес-объекта» к 1997 г. получила достаточно широкое распространение при выработке промышленных программных приложений. Основу этой идеологии составляет «Общая архитектура брокера объектных запросов» — COBRA (CommonObjectRequestBrokerArchitecture), центральной частью которой является спецификация на программный продукт (ORB — ObjectRequestBroker), представляющий собой набор доменов или динамических библиотек, обеспечивающих взаимодействие различных программ в распределенной компьютерной среде. Кроме того, фирма OMG разработала спецификации обмена данными между брокерами различных фирм-производителей — GIOP (GeneralInter ORB Protocol), а с той же целью для Internet — HOP (InternetInter ORB Protocol). Поддержкой и развитием бизнес-объектной технологии занимается организованный в рамках OMG специальный комитет — BODTF (BusinessObjectDomainTaskForce). В 1998 г. этим комитетом была выпущена спецификация (BOCA — BusinessObjectComponentArchitecture), регламентирующая построение программных систем из компонент-объектов, созданных на основе технологии CORBA/IIOP. Подробнее см. [407, 423, 434].
      • · Параллельное программирование [concurrentprogramming] — разработка программ, обеспечивающих одновременное (параллельное) выполнение операций, связанных с обработкой данных.
      • · Процедурное (процедурно-ориентированное) программирование [procedure-orientedprogramming] — метод программирования, в соответствии с которым программы пишутся как перечни последовательно выполняемых команд. При этом используются процедурно-ориентированные языки программирования.
      • · Структурное программирование, модульное программирование [structuredprogramming, modularprogramming] — метод написания программ небольшими независимыми частями — модулями, каждый из которых связан с какой-либо процедурой или функцией. При этом результирующая программа организуется в виде совокупности взаимосвязанных по определенным правилам модулей. Это упрощает разработку сложных программных продуктов и их тестирование.
      • · Функциональное программирование [functionalprogramming] — метод программирования, основанный на разбиении алгоритма решения задачи на отдельные функциональные модули, а также описании их связей и характера взаимодействия. Для функционального программирования наиболее широко используются языки НОРЕ и ML. Элементы функционального программирования реализуются также другими языками, например Си.
      • · Эвристическое программирование [hueristicprogramming] — метод программирования, основанный на моделировании мыслительной деятельности человека. Используется для решения задач, не имеющих строго формализованного алгоритма или связанных с неполнотой исходных данных.

      Алгоритм [algorithm] — 1. последовательность действий (операций) и правил их выполнения или команд, предназначенных для решения определенной задачи или группы задач. 2. предписание, определяющее ход вычислительного процесса, связанного с преобразованием данных от некоторого их исходного состояния к требуемому результату. Формальные описания алгоритмов аналогичны представлениям основных частей программ, которые их реализуют, поэтому многое, что относят к описанию конкретных программ, применимо к алгоритму, и наоборот.

      Некоторые виды алгоритмов:

      Адаптивный алгоритм [adaptivealgorithm] — алгоритм, обладающий свойством настраиваться на условия применения.

      Линейный алгоритм [serialalgorithm] — алгоритм, не содержащий ветвей и циклов, все элементы которого выполняются последовательно.

      Логический алгоритм [logicalalgorithm] — алгоритм решения логической задачи.

      Алгоритм маршрутизации [routingalgorithm] — алгоритм решения задачи определения оптимального пути, по которому будут передаваться данные в коммуникационной сети.

      Параллельный алгоритм [parallelalgorithm] — алгоритм, в котором часть или все операции независимы и могут выполняться одновременно (параллельно).

      Последовательный алгоритм [sequentialalgorithm] — 1. алгоритм, все действия которого выполняются последовательно. 2. алгоритм обслуживания, реализующий принцип очереди — «первый на входе — первый на выходе» [FIFO — FirstInput — FirstOutput].

      Циклический алгоритм [round-robinalgorithm] — алгоритм обслуживания в системах с разделением времени, при котором задача, использовавшая выделенный ей ресурс времени центрального процессора, прерывается и помещается в конец очереди.

      Программа [program, routine] — 1.последовательность операций, в том числе нескольких параллельных, выполняемых ЭВМ для достижения поставленной цели или задачи. 2.описание на языке программирования или в машинном коде действий, которые должна выполнить ЭВМ в соответствии с алгоритмом решения конкретной задачи или группы задач (синоним — машинная программа). 3.упорядоченная последовательность команд, подлежащих обработке.

      Некоторые понятия, связанные с термином «программа»

      Машинная программа [computer (machine) program] — программа, написанная на машинном языке (в машинном коде).

      Структура программы [programstructure] — общая схема построения программы, рассматривающая ее составные компоненты (программные блоки) и взаимосвязи между ними.

      Спецификация программы, программная спецификация [programspecification] — точная и полная формулировка определенной задачи или группы задач, содержащая сведения, необходимые для построения ее алгоритма (программы) или решения. Содержит описание результата, который должен быть достигнут с помощью конкретной программы, а также того, что для достижения этого результата программа должна делать без упоминания, как достигнут указанный результат.

      Верификация программы [programverification] — 1. установление любым корректным методом факта соответствия программы заданным целям ее создания или приобретения — установление правильности программы. 2. формализованный контроль или проверка работоспособности программы.

      Отладка программы [debugging] — обнаружение, локализация и устранение ошибок в компьютерной программе.

      Отладчик [debugger] — программа, предназначенная для анализа поведения другой программы, обеспечивающая ее трассировку (отслеживание и распечатку выполняемых программой команд, изменений переменных или данных о других событиях, связанных с выполнением программы), останов в указанных точках или, при выполнении указанных условий, просмотр и изменение ячеек памяти, регистров процессора и команд программы.

      Трассировка [trace] — метод проверки правильности функционирования программ при их выполнении путем отображения изменений всех значений переменных. Этим достигается сокращение поиска ошибочных команд, из-за которых переменные принимают неверные значения. Трассировка выполняется при помощи ввода в проверяемую программу специальных команд или с использованием специальных сервисных программ.

      Тестирование программы [programtesting] — проверка программы в рабочих условиях с некоторым специально созданным (тестовым) массивом данных в целях определения ее работоспособности в соответствии с заданными критериями оценки.

      Испытания программы [programverificationandvalidation] — всесторонняя (по формализованным признакам — «Verification» и общей субъективной оценке — «Validation») проверка и тестирование программы при сдаче ее в эксплуатацию или аттестации.

      Подпрограмма [subroutine] — небольшая часть программы, связанная с реализацией какой-либо повторяющейся функции, процедуры или операции и вызываемая для выполнения из разных мест программы.

      В зависимости от того, являются ли подпрограммы частью разработки использующей их программы или заимствуются из других программ, они подразделяются на внутренние подпрограммы [internalsubroutines] и внешние подпрограммы [externalsubroutines]. В качестве последних могут использоваться и так называемые стандартные подпрограммы или программы [standardsubroutines, standardprograms] — программы, помещенные в библиотеку программ.

      Программное обеспечение, ПО [software] — совокупность программных средств, управляющих работой ЭВМ и / или автоматизированной системы, а также документация, необходимая для эксплуатации этих средств. Различают общее и прикладное (специальное) программное обеспечение.

      Программная документация [programdocumentation] — комплект документов, содержащих полное описание программы и необходимый состав сведений для ее распространения (в том числе продажи) и использования.

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

      по дисциплине «Организация и функционирование компьютерных систем»

      СИСТЕМЫ ПРОГРАММИРОВАНИЯ: ОСНОВНЫЕ ПОНЯТИЯ

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

      Заметим, что любая система программирования может работать только в соответствующей ОС, под которую она и создана, однако при этом она может позволять разрабатывать программное обеспечение и под другие ОС.

        Например, одна из популярных систем программирования на языке С/С++ от фирмы Watcom для OS/2 позволяет получать программы и для самой OS/2, и для DOS, и для Windows.

      Система программирования включает следующие программные компоненты:

      • редактор текста;
      • транслятор с соответствующего языка;
      • компоновщик (редактор связей);
      • отладчик;
      • библиотеки подпрограмм.

      Редактор текста — это программа для ввода и модификации текста.

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

      Трансляторы делятся на два класса: компиляторы и интерпретаторы. Компиляторы переводят весь исходный модуль на машинный язык. Интерпретатор последовательно переводит на машинный язык и выполнят операторы исходного модуля

        (У интерпретаторов два основных недостатка. Первый — низкая скорость работы интерпретируемых программ.)
        Преимущество интерпретатора перед компилятором состоит в том, что программа пользователя имеет одно представление — в виде текста. При компиляции одна и та же программа имеет несколько представлений — в виде текста и в виде выполняемого файла.

      Компоновщик, или редактор связей — системная обрабатывающая программа, редактирующая и объединяющая объектные (ранее оттраслированные) модули в единые загрузочные, готовые к выполнению программные модули. Загрузочный модуль может быть помещен ОС в основную память и выполнен.

      Отладчик позволяет управлять процессом исполнения программы, является инструментом для поиска и исправления ошибок в программе. Базовый набор функций отладчика включает:

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

      Загрузчик — системная обрабатывающая программа. Загрузчик помещает объектные и загрузочные модули в оперативную память, объединяет их в единую программу, корректирует перемещаемые адресные константы с учетом фактического адреса загрузки и передает управление в точку входа созданной программы.

      Список использованных источников

      1. Гордеев А.В., Молчанов А.Ю. Системное программное обеспечение. — СПб.: Питер, 2001. — с. 17-21
      2. Пустоваров В.И. Ассемблер: программирование и анализ корректности машинных программ: — К.: Издательская группа BHV, 2000. — с. 5-25

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

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

      Классификация языков программирования

      Языки низкого уровня

      Языки высокого уровня

      Машинно-ориентированные языки

      (машинные коды, Ассемблер)

      Алгоритмические языки

      вместо команды ассемблера ADD языки высокого уровня позволяют написать нормальное математическое выражение со знаком «+», например, a=b+c.

      Каждый язык программирования предназначен для решения определенного класса задач:

      • Фортран – старейший язык программирования, предназначен для решения математических задач .
      • Кобол – для решения экономических задач
      • Бейсик,Pascal – для обучения
      • Java (джава) – язык сетевого программирования.

      Для системного программирования наиболее подходят языки C, C++ и Ассемблер. C и – язык разработанный для написания операционной системы UNIX (обычно ядро операционных систем писали на Assembler ).

      2. Системы программирования

      Системы программирования – это комплексы программ и прочих средств, предназначенных для разработки и их эксплуатации на конкретном языке программирования для конкретного вида ЭВМ.

      Система программирования включает:

      Текстовый редактор

      программа-отладчик

      Транслятор – программа переводчик с конкретного алгоритмического языка на машинного ориентированный.

      компоновщик (редактор связей)

      Программа, обеспечивающая запуск программы

      Текст программы, написанный на конкретном алгоритмическом языке.

      отладка исходного текста программы (поиск и устранение ошибок)

      Программа на машинно-ориентированном языке

      объединяются оттранслированные модули в единые загрузочные, готовые к выполнению

      + библиотека подпрограмм, + Help

      Выделяют два вида трансляторов: интерпретаторы и компиляторы .

      Интерпретатор переводит на язык машинных кодов поочередно каждый оператор исходной программы, проверяет правильность записи оператора и немедленно выполняет его.

      В отличие от интерпретатора компилятор осуществляет перевод на машинный язык всей исходной программы.

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

      Большинство современных компиляторов работают в режиме трансляции.

      В некоторых языках, вместо машинного кода генерируется интерпретируемый двоичный код » виртуальной машины «, также называемый байт-кодом ( byte-code ). Такой подход применяется в Forth, Lisp, Java , Perl, Python, а также в языках платформы Microsoft .NET.

      Например: Программы на Java выполняются в два этапа. Сначала исходный текст компилятором переводится на промежуточный аппаратно-независимый язык. В таком виде полуфабрикат программы (байт-код) хранится на интернет-сервере, откуда по запросу клиента пересылается ему по сети. У клиента байт-код исполняется специальным интерпретатором, этот интерпретатор называется виртуальной Java-машиной, он встроен во все современные браузеры.

      Среда визуальной разработки — среда разработки программного обеспечения, в которой наиболее распространённые блоки программного кода представлены в виде графических объектов. Применяются для создания прикладных программ и любительского программирование.

      3. Синтаксис и семантика

      Каждый язык программирование обладает своими лексическими, синтаксическими и семантическими правилами, которые необходимо соблюдать при составлении компьютерной программы.

      Синтаксис – описывает структуру программ как наборов символов (обычно говорят — безотносительно к содержанию).

      Пример синтаксической ошибки : употребление оператора цикла For без To или Next, или отсутствие знака равенства в приведенной на рисунке программе.

      Синтаксические ошибки распознаются встроенным синтаксическим анализатором.

      Синтаксису языка противопоставляется его семантика. Синтаксис языка описывает «чистый» язык, в то же время семантика приписывает значения (действия) различным синтаксическим конструкциям.

      Семантика – определяет смысловое значение предложений алгоритмического языка.

      Пример семантической ошибки :

      1) For i As Integer = 1 To 10 Step -2

      2) Если надо вычислить , то запись x = a / b * c содержит семантическую ошибку, т.к. приоритет операций деления и умножения одинаков, то вначале а делиться на b , а затем полученный результат умножает на с .

      Поиск этих ошибок происходит с помощью логического анализа работы программы и ее тестирования.

      4. Классы языков программирования

      Программирование

      Императивное

      Декларативное

      функциональное

      логическое

      Императивные языки программирования – Бейсик, Паскаль, Си и прочие (включая объектно-ориентированные).

      Императивное программирование наиболее популярное. Характеризуются последовательным, пошаговым изменением состояния вычислителя. При этом управление изменениями полностью определено и полностью контролируемо.

      Одна из характерных черт императивного программирования – наличие переменных с операцией «разрушающего присвоения». То есть, была переменная А, было у нее значение Х. Алгоритм предписывает на очередном шаге присвоить переменной А значение Y. То значение, которое было у А, будет «навсегда забыто».

      Если задача описывается последовательным исполнением операций («открыть кран, набрать воды»), то такие задачи идеальные кандидаты на императивную реализацию.

      Декларативные языки программирования:

      Функциональные языки программирования – LISP , ISWIM ( If you See What I Mean ), ML ( Meta Language ), Miranda

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

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

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

      Логические языки программирования – Prolog.

      Если в функциональном программировании программы — это выражения, и их исполнение заключается в вычислении их значения, то в логическом программировании программа представляет из себя некоторую теорию (описанную на достаточно ограниченном языке), и утверждение, которое нужно доказать. В доказательстве этого утверждения и будет заключаться исполнение программы.

      Логическое программирование и язык Пролог появились в результате исследования группы французских ученых под руководством Колмерье в области анализа естественных языков. В последствии было обнаружено, что логическое программирование столь же эффективно в реализации других задач искусственного интеллекта, для чего оно в настоящий момент, главным образом, и используется. Но логическое программирование оказывается удобным и для реализации других сложных задач; например, диспетчерская система лондонского аэропорта Хитроу в настоящий момент переписывается на Прологе. Оказывается, логическое программирование является достаточно выразительным средством для описания сложных систем.

      Читать еще:  Политика безопасности шаблон
Ссылка на основную публикацию
Adblock
detector