Кафедра КИТ. Курс «Программирование». Семестр 1.
| Языки программирования.
Язык – заданный набор символов и правил, устанавливающих способы комбинации этих символов между собой, для записи осмысленных текстов.
Алфавит – количество М допустимых символов языка
Язык программирования – формальная знаковая система, предназначенная для записи ПК программ. Содержит:
Алфавит (лексема)
Синтаксис (набор правил, которые определяют допустимые конструкции языка)
Семантика (определяет смысл фразы)
Прагматика – действия, выполняемые исполнителем после разбора синтаксической конструкции
Классификация языков программирования.
Классификация по уровню абстракции (насколько детально описываются действия с помощью языка программирования):
Машинные коды
Язык программирования низкого уровня(ассемблер)
Язык программирования высокого уровня
CASE системы (computer aided software engeneering)
Классификация по парадигме (набор правил, рекомендаций, суждений по разработке программ)
Неструктурные(Basic)
Структурные(Fortran)
Процедурные(C, Pascal)
Объектно-ориентированные(C++, VB, C#)
Интерпретируемые(FScript,VBA)
Функциональные(#ЛНСП, Hastell, OCaml
Логические
Что определяет (диктует) язык программирования. Выбор языка программирования.
Возможности программиста
Время и усилия по разработке ПО
Способы организации данных и методы их обработки
Стиль программирования, способ организации кода
Система программирования.
Система программирования — это система для разработки новых программ на конкретном языке программирования. Современные системы программирования обычно предоставляют пользователям мощные и удобные средства разработки программ. В них входят:
компилятор или интерпретатор. Транслятор – программа переводит текст с одного языка на другой
средства создания и редактирования текстов программ;
обширные библиотеки стандартных программ и функций;
отладочные программы, т.е. программы, помогающие находить и устранять ошибки в программе;
"дружественная" к пользователю диалоговая среда;
встроенная справочная служба;
другие специфические особенности.
Популярные системы программирования — Turbo Basic, Quick Basic, Turbo Pascal, Turbo C.
| Этапы разработки программного продукта.
Постановка задачи
Описать поведение разрабатываемой системы
Описать поведение окружения
Оценка осуществимости
Сбор информации
Формирование условий
Определение целей
Определить формы выдачи результатов
Описание данных
Анализ и исследование задачи и модели
Разработка математической модели
Разработка структур данных
Разработка алгоритмов
Выбор метода проектирования алгоритма
Проектирование алгоритма
Кодирование (программирование)
Тестирование и отладка
Виды ошибок:
Синтаксические
Семантические (логические)
Время выполнения (run-time error / Exeption)
Анализ результатов решения задачи и возможный переход на предыдущие шаги
Внедрение и сопровождение программного продукта
Жизненный цикл программы. Каскадная и спиральная модели.
Модель, алгоритм -> кодирование -> тестирование
Модель, алгоритм -> кодирование -> тестирование -> модель, алгоритм -> кодирование -> тестирование
Сопровождение программного продукта. Реинжиниринг.
ЕДСП – Единая система программной документации
Цели и задачи
Заказчик и исполнитель
Сроки и этапы
Правила предъявления результата и т.п.
Технические требования
Функциональность
Экономичность
Надежность
Эффективность
ПМИ (программа и методика испытаний)
Руководство пользователя
Руководство программиста
Сопровождение.
Задачи:
Исправление ошибок
Профилирование
Исправление проблем с “pottle neck”
Улучшение документации
Расширение функциональности
Принятие решения о прекращении эксплуатации программы
| Общие принципы организации и работы ЭВМ с точки зрения программиста.
Команды, операнды, код, система команд.
команда — это указание компьютерной программе действовать как некий интерпретатор для решения задачи. В более общем случае, команда — это указание некоему интерфейсу командной строки
Операнд в языках программирования аргумент операции; данные, которые обрабатываются командой; грамматическая конструкция, обозначающая выражение, задающее значение аргумента операции; иногда операндом называют место, позицию в тексте, где должен стоять аргумент операции. Отсюда понятие местности, или арности, операции, то есть числа аргументов операции.
код-текст компьютерной программы на каком-либо языке программирования, который может быть прочтён человеком. В обобщённом смысле — любые входные данные для транслятора. Исходный код транслируется в исполняемый код целиком до запуска программы при помощи компилятора, или может исполняться сразу при помощи интерпретатора.
система команд-соглашение о предоставляемых архитектурой средствах программирования, а именно: определённых типах данных, инструкций, системы регистров, методов адресации, моделей памяти, способов обработки прерываний и исключений, методов ввода и вывода.
Базовыми командами являются, как правило, следующие:
арифметические, например «сложения» и «вычитания»;
битовые, например «логическое и», «логическое или» и «логическое не»;
присваивание данных, например «переместить», «загрузить», «выгрузить»;
ввода-вывода, для обмена данными с внешними устройствами;
управляющие инструкции, например «переход», «условный переход», «вызов подпрограммы», «возврат из подпрограммы».
^
Принципы фон Неймана
Использование двоичной системы счисления в вычислительных машинах. Преимущество перед десятичной системой счисления заключается в том, что устройства можно делать достаточно простыми, арифметические и логические операции в двоичной системе счисления также выполняются достаточно просто.
Программное управление ЭВМ. Работа ЭВМ контролируется программой, состоящей из набора команд. Команды выполняются последовательно друг за другом. Созданием машины с хранимой в памяти программой было положено начало тому, что мы сегодня называем программированием.
Память компьютера используется не только для хранения данных, но и программ. При этом и команды программы и данные кодируются в двоичной системе счисления, т.е. их способ записи одинаков. Поэтому в определенных ситуациях над командами можно выполнять те же действия, что и над данными.
Ячейки памяти ЭВМ имеют адреса, которые последовательно пронумерованы. В любой момент можно обратиться к любой ячейке памяти по ее адресу. Этот принцип открыл возможность использовать переменные в программировании.
Возможность условного перехода в процессе выполнения программы. Не смотря на то, что команды выполняются последовательно, в программах можно реализовать возможность перехода к любому участку кода.
Машина фон Неймана состоит из запоминающего устройства (памяти) - ЗУ, арифметико-логического устройства - АЛУ, устройства управления – УУ, а также устройств ввода и вывода.
Программы и данные вводятся в память из устройства ввода через арифметико-логическое устройство. Все команды программы записываются в соседние ячейки памяти, а данные для обработки могут содержаться в произвольных ячейках. У любой программы последняя команда должна быть командой завершения работы.
| ^
Информация - любые сведения, которые можно использовать при решении тех или иных задач и которые представлены в форме, доступной для восприятия.
Данные – это информация, представленная в виде, доступном для восприятия и обработки на ЭВМ. Способы хранения и организации данных на компьютере, как физические, так и логические являются особенными, которые отличают цифровую вычислительную технику от других механизмов и объектов
^
Создавать, передавать. Воспринимать, запоминать, искать, принимать, копировать, обрабатывать, разрушать, измерять, делить на части, упрощать и т.п.
В каком виде информация может находиться.
в виде световых, звуковых или радиоволн,
в форме электрического тока или напряжения,
в форме магнитных полей,
в виде знаков на бумаге.
Свойства информации.
достоверность,
полнота,
ценность,
актуальность,
ясность, понятность.
Обработка данных.
Под обработкой данных, информации в информатике понимают любое преобразование информации из одного вида в другой, производимое по строгим формальным правилам.
^
Памятью компьютера называется совокупность устройств для хранения программ, вводимой информации, промежуточных результатов и выходных данных.
Память делится на внутреннюю и внешнюю.
Внутренняя память предназначена для хранения относительно небольших объемов информации при ее обработке микропроцессором.
Внешняя память предназначена для длительного хранения больших объемов информации независимо от того включен или выключен компьютер.
Внутренняя делится на энергонезависимую и энергозависимую
Энергозависимой называется память, которая стирается при выключении компьютера.
Энергонезависимой называется память, которая не стирается при выключении компьютера.
К энергонезависимой внутренней памяти относится постоянное запоминающее устройство (ПЗУ).Эта память составлена из микросхем, как правило, небольшого объема. Обычно в ПЗУ записываются программы, обеспечивающие минимальный базовый набор функций управления устройствами компьютера.
К энергозависимой внутренней памяти относятся оперативное запоминающее устройство (ОЗУ), видеопамять и кэш-память. В оперативном запоминающем устройстве в двоичном виде запоминается обрабатываемая информация, программа ее обработки, промежуточные данные и результаты работы. ОЗУ обеспечивает режимы записи, считывания и хранения информации. Часть оперативной памяти отводится для хранения изображений, получаемых на экране монитора, и называется видеопамять. Высокоскоростная кэш-память служит для увеличения скорости выполнения операций компьютером и используется при обмене данными между микропроцессором и RAM. Кэш-память является промежуточным запоминающим устройством (буфером).
Внешняя память может быть с произвольным доступом и последовательным доступом. Устройства памяти с произвольным доступом позволяют получить доступ к произвольному блоку данных примерно за одно и то же время доступа
Основные типы устройств памяти с произвольным доступом:
1. Накопители на жёстких магнитных дисках (винчестеры, НЖМД)
2. Накопители на гибких магнитных дисках (флоппи-дисководы, НГМД)
3. Оптические диски (СD-ROM - Compact Disk Read Only Memory)
Устройства памяти с последовательным доступом позволяют осуществлять доступ к данным последовательно, т.е. для того, чтобы считать нужный блок памяти, необходимо считать все предшествующие блоки. Среди устройств памяти с последовательным доступом выделяют:
1. Накопители на магнитных лентах (НМЛ)
2. Перфокарты
Различные виды памяти имеют свои достоинства и недостатки. Так, внутренняя память имеет хорошее быстродействие, но ограниченный объем. Внешняя память, наоборот, имеет низкое быстродействие, но неограниченный объем.
ПЕРЕМЕННЫЕ
переменная — это идентификатор, определяющий данные. Обычно это бывает имя, скрывающее за собой область памяти с хранящимися там данными. Переменная может иметь тип, характеризующий множество значений, которые она может принимать.
| ^ Для удобства последующего преобразования дискретный сигнал подвергается кодированию (о кодировании см. в разделе Кодирование сигнала). Большинство кодов основано на системах счисления, причем использующих позиционный принцип образования числа, при котором значение каждой цифры зависит от ее положения в числе.
Примером позиционной формы записи чисел является та, которой мы пользуемся (так называемая арабская форма чисел). Так, в числах 123 и 321 значения цифры 3, например, определяются ее положением в числе: в первом случае она обозначает три единицы (т.е. просто три), а во втором – три сотни (т.е. триста).
Тогда полное число получается по формуле:

где l – количество разрядов числа, уменьшенное на 1,
i – порядок разряда,
m – основание системы счисления,
ai – множитель, принимающий любые целочисленные значения от 0 до m-1, и соответствующий цифре i-го порядка числа.
Например, для десятичного (m = 10) числа 345 его полное значение рассчитывается по формуле:
3*102 + 4*101 + 5*100 = 345.
Римские числа являются примером полупозиционной системы образования числа: так, в числах IX и XI знак I обозначает в обоих случаях единицу (признак непозиционной системы), но, будучи расположенным слева от знака X (обозначающего десять), вычитается из десяти, а при расположении справа – прибавляется к десяти. В первом случае полное значение числа равно 9, во втором – 11. В современной информатике используются в основном три системы счисления (все – позиционные): двоичная, шестнадцатеричная и десятичная. ^ используется для кодирования дискретного сигнала, потребителем которого является вычислительная техника. Такое положение дел сложилось исторически, поскольку двоичный сигнал проще представлять на аппаратном уровне. В этой системе счисления для представления числа применяются два знака – 0 и 1. ^ используется для кодирования дискретного сигнала, потребителем которого является хорошо подготовленный пользователь – специалист в области информатики. В такой форме представляется содержимое любого файла, затребованное через интегрированные оболочки операционной системы, например, средствами Norton Commander в случае MS DOS. Используемые знаки для представления числа – десятичные цифры от 0 до 9 и буквы латинского алфавита – A, B, C, D, E, F. ^ используется для кодирования дискретного сигнала, потребителем которого является так называемый конечный пользователь – неспециалист в области информатики (очевидно, что и любой человек может выступать в роли такого потребителя). Используемые знаки для представления числа – цифры от 0 до 9. Соответствие между первыми несколькими натуральными числами всех трех систем счисления представлено в таблице перевода:
Десятичная
система
| ^
| Шестнадцатеричная система
| 0
| 0
| 0
| 1
| 1
| 1
| 2
| 10
| 2
| 3
| 11
| 3
| 4
| 100
| 4
| 5
| 101
| 5
| 6
| 110
| 6
| 7
| 111
| 7
| 8
| 1000
| 8
| 9
| 1001
| 9
| 10
| 1010
| A
| 11
| 1011
| B
| 12
| 1100
| C
| 13
| 1101
| D
| 14
| 1110
| E
| 15
| 1111
| F
| 16
| 10000
| 10
|
Для различения систем счисления, в которых представлены числа, в обозначение двоичных и шестнадцатеричных чисел вводят дополнительные реквизиты:
для двоичных чисел – нижний индекс справа от числа в виде цифры 2 или букв В либо b (binary – двоичный), либо знак B или b справа от числа. Например, 1010002 = 101000b = 101000B = 101000B = 101000b;
для шестнадцатеричных чисел - нижний индекс справа от числа в виде числа 16 или букв H либо h (hexadecimal – шестнадцатеричный), либо знак H или h справа от числа. Например, 3AB16 = 3ABH = 3ABh = 3ABH = 3ABh.
Для перевода чисел из одной системы счисления в другую существуют определенные правила. Они различаются в зависимости от формата числа – целое или правильная дробь. Для вещественных чисел используется комбинация правил перевода для целого числа и правильной дроби.
^

Ограниченность разрядной сетки.
| ^
В программировании переменная — это идентификатор, определяющий данные. Обычно это бывает имя, скрывающее за собой область памяти с хранящимися там данными. Переменная может иметь тип, характеризующий множество значений, которые она может принимать.
^
Тип данных - важнейшая характеристика переменных. Приписывая объекту данных определенный тип, ограничивают его возможное поведение. С другой стороны, зная тип, получают возможность это поведение контролировать. Наконец, зная ограничения на возможное поведение, можно рационально выделять память и другие ресурсы. То есть тип данных определяет:
-Объем отводимой памяти.
-Способ кодирования информации.
-Диапазон допустимых значений.
-Возможные операции.
Имеется четыре категории типов: Скалярные типы (в том числе Перечисляемые и Числовые), Составные (в том числе Регулярные типы (массивы) и Комбинированные (записи, структуры, объекты)), Ссылочные типы (указатели).
Кроме того, можно говорить о Предопределенных типах, которые объявлены и реализованы в системе программирования и Пользовательских типах, которые определяет программист.
^
Типы данных бывают следующие:
-Простые.
---Перечислимый тип. Может хранить только те значения, которые прямо указаны в его описании.
---Числовые. Хранятся числа. Могут применяться обычные арифметические операции.
-----Целочисленные: со знаком, то есть могут принимать как положительные, так и отрицательные значения; и без знака, то есть могут принимать только неотрицательные значения.
-----Вещественные: с запятой (то есть хранятся знак и цифры целой и дробной частей) и с плавающей запятой (то есть число приводится к виду m*be, где m — мантисса, b — основание показательной функции, e — показатель степени (порядок) (в англоязычной литературе экспонента), причём в нормальной форме 0<=m -----Числа произвольной точности, обращение с которыми происходит посредством длинной арифметики.
---Символьный тип. Хранит один символ. Могут использоваться различные кодировки.
---Логический тип. Имеет два значения: истина и ложь, при троичной логике может иметь и третье значение — «не определено» (или «неизвестно»). Могут применяться логические операции. Используется в операторах ветвления и циклах. В некоторых языках является подтипом числового типа, при этом ложь=0, истина=1.
---Множество. В основном совпадает с обычным математическим понятием множества. Допустимы стандартные операции с множествами и проверка на принадлежность элемента множеству. В некоторых языках рассматривается как составной тип.
-Составные (сложные).
---Массив. Является индексированным набором элементов одного типа. Одномерный массив — вектор, двумерный массив — матрица.
-----Строковый тип. Хранит строку символов. Аналогом сложения в строковой алгебре является конкатенация (прибавление одной строки в конец другой строки). В языках, близких к бинарному представлению данных, чаще рассматривается как массив символов, в языках более высокой абстракции зачастую выделяется в качестве простого.
---Запись (структура). Набор различных элементов (полей записи), хранимый как единое целое. Возможен доступ к отдельным полям записи. Например, struct в C или record в Pascal.
---Файловый тип. Хранит только однотипные значения, доступ к которым осуществляется только последовательно (файл с произвольным доступом, включённый в некоторые системы программирования, фактически является неявным массивом).
---Класс.
-Другие типы данных. Если описанные выше типы данных представляли какие-либо объекты реального мира, то рассматриваемые здесь типы данных представляют объекты компьютерного мира, то есть являются исключительно компьютерными терминами.
---Указатель. Хранит адрес в памяти компьютера, указывающий на какую-либо информацию, как правило — указатель на переменную.
---Ссылка.
Характеристики переменной:
1. Имя
2. Тип
3. Область видимости
4. Время жизни
5. Права доступа
| Информационная система.
В широком смысле информационная система есть совокупность технического, программного и организационного обеспечения, а также персонала, предназначенная для того, чтобы своевременно обеспечивать надлежащих людей надлежащей информацией
ИС в узком смысле рассматривают как программно-аппаратную систему, предназначенную для автоматизации целенаправленной деятельности конечных пользователей, обеспечивающую, в соответствии с заложенной в нее логикой обработки, возможность получения, модификации и хранения информации
| |