Рейн Т.С.
ПРОГРАММИРОВАНИЕ
Программирование – это то, чем
занимаются программисты
(фольклор)
Программирование как и «любовь» -
одно слово, за которым скрывается
бесконечное множество понятий
(Вейнберг)
Основные понятия
Информатика - это наука, изучающая
законы и методы накопления, передачи и
обработки информации с помощью
компьютера
Программирование – это раздел
информатики, изучающий описание
процессов обработки данных
Основные понятия
Йодан:
Программа – «... не поддающееся строгому
определению произведение искусства,
порожденное не без колдовства и черной
магии»
Программа – это последовательность команд,
которая в сочетании с соответствующими
данными и управляющей информацией
обеспечивает реализацию некоторого
корректно определенного алгоритма.
Основные понятия
Брукс:
Программа – завершенный продукт, пригодный
для запуска своим автором на системе, на
которой он был разработан
Программный продукт – это программа,
которую любой человек может запустить,
тестировать, исправить, развивать. Такая
программа должна быть написана в обобщенном
стиле, тщательно протестирована и
сопровождена подробной документацией
Основные понятия
Алгоритм - это точное и конечное описание
того или иного общего метода, основанного на
применении исполнимых элементарных тактов
обработки
Свойства алгоритма
Конечность
Определенность
Наличие входных данных
Наличие выходных данных
Эффективность
Языки и системы
программирования
Примеры
/С/
#include <stdio.h>
int main()
{ printf(“Hello, student”);
return(0);
}
/Pascal/
Program First;
begin
writeln (“Hello,
student”);
end;
/Java/
Public class Student
{public static void main(string[] args)
{ System.out.println(“Hello, student”);
}}
Программа должна удовлетворять
требованиям:
Быть однозначно понятной для человека
Удовлетворять точно определенным правилам
построения (формальному синтаксису языка)
Понятна для исполнителя (абстрактного или
конкретного)
Лексемой называется минимальная
осмысленная для исполнителя
последовательность символов
Например:
‘ABC’ – лексема
‘ABC – не является лексемой
х=х1
лексемане лексема (только ее часть)
Определения
Минимальная последовательность лексем,
способная вызвать действия исполнителя,
называется конструкцией языка
Среди конструкций языка выделяют
операторы,
например:
y=sin(x) - оператор
Определения
Реализация языка – комплект программ, с
помощью которого обеспечиваются:
Поддержка операций с исходной программой
(ввод, редактирование, сохранение текста, анализ
синтаксических ошибок)
Подготовка синтаксически правильной
программы к исполнению на конкретном
исполнителе
Определения
Файловую систему
Редактор для ввода текстов
Транслятор для преобразования текстов
программ к виду, в котором она может
исполняться, или указания ошибок, если
преобразование не удается
Библиотеки периода трансляции
Библиотеки периода исполнения
Отладчик
Пользовательские библиотеки
Средства поддержки разработки программ
Система программирования
включает:
Каждый язык программирования определяет
свою модель вычислений, которая зависит от
Способов представления данных
Способов вызова процедур и т.д.
Методологии
программирования
Методология программирования
- совокупность методов, применяемых
при разработке программ и
объединенным единым философским
подходом
Основные ядра методологий:
Методология императивного программирования
Методология объектно-ориентированного
программирования
Методология логического программирования
Методология функционального
программирования
Методология программирования в ограничениях
Методология императивного
программирования:
Подход, характеризующийся принципом
последовательного изменения
состояния вычислителя пошаговым
образом.
Управление изменениями полностью
определено и полностью контролируемо
Вычислительная модель
Для ПК
Состояние – значение всех ячеек памяти,
состояние процессора и всех сопряженных
устройств
Единственная структура данных –
последовательность ячеек (пар «адрес-> значение»)
с линейно упорядоченными адресами
Математическая модель – машина Тьюринга-
Поста (абстрактное вычислительное устройство для
описания алгоритмов)
Синтаксис и семантика
Оператор- основное синтаксическое понятие
Атомарный оператор – оператор, у которых
никакая его часть не является самостоятельным
оператором
Структурные операторы – операторы,
объединяющие другие операторы в новый, более
крупный оператор
Средство структурирования - подпрограммы
Языки программирования
Fortran (1954)
Algol (1960)
Pascal (1970)
C (1972)
Sql, Pl/sql
Java
Prolog
Lisp
VBA
Xml, Html
Области применения языков
программирования
В настоящее время языки программирования
применяются в самых различных областях
человеческой деятельности, таких как:
научные вычисления (языки C++, FORTRAN, Java);
системное программирование (языки C++, Java);
обработка информации (языки C++, COBOL, Java);
искусственный интеллект (LISP, Prolog);
издательская деятельность (Postscript, TeX);
удаленная обработка информации (Perl, PHP, Java, C+
+);
описание документов (HTML, XML).
Парадигмы
программирования
Синтаксис языка описывает систему правил написания различных языковых
конструкций, а семантика языка программирования определяет смысл этих
конструкций. Синтаксис языка программирования может быть описан с
помощью НБФ-нотаций. Семантика языка взаимосвязана с используемой
вычислительной моделью.
Процедурные языки , которые представляют собой последовательность
выполняемых операторов. К процедурным языкам относятся FORTRAN, C,
Ada, Pascal и некоторые другие. Процедурные языки иногда также
называются императивными языками. Код программы на процедурном
языке может быть записан следующим образом:
оperator1; operator2; operator3;
Аппликативные языки , в основу которых положен функциональный
подход. Язык рассматривается с точки зрения нахождения функции,
необходимой для перевода памяти ПК из одного состояния в другое.
Программа представляет собой набор функций, применяемых к начальным
данным, позволяющий получить требуемый результат. К аппликативным
языкам относится язык LISP. Код программы на аппликативном языке
может быть записан следующим образом:
function1(function2( function3(beginning_date)));
Языки системы правил , называемые также языками
логического программирования, основываются на
определении набора правил, при выполнении которых
возможно выполнение определенных действий. Правила
могут задаваться в виде утверждений и в виде таблиц
решений. К языкам логического программирования
относится язык Prolog. Код программы на языке системы
правил может быть записан следующим образом: if
condition1 then operator1; if condition2 then operator2; if
condition3 then operator3;
Объектно-ориентированные языки , основанные на
построении объектов как набора данных и операций над
ними. Объектно-ориентированные языки объединяют и
расширяют возможности, присущие процедурным и
аппликативным языкам. К объектно-ориентированным
языкам относятся C++, Object Pascal, Java.
Парадигмы
программирования
Стандартизация языков
программирования
Американский национальный
институт стандартов ANSI
(American National Standards
Institute) - стандарт ISO
Модели трансляции
Программа, написанная на языке высокого
уровня, перед исполнением должна быть
преобразована в программу на "машинном
языке". Такой процесс называется
трансляцией, или компиляцией. По типу
выходных данных различают два основных
вида трансляторов:
компилирующие окончательный выполнимый код;
компилирующие интерпретируемый код, для
выполнения которого требуется дополнительное
программное обеспечение.