- •Програмування
- •1. Мови програмування та їх класифікація.
- •2. Типи даних. Стандартні типи даних (арифметичний та символьний).
- •3. Структуровані дані та їх типи. Масиви.Приклади обробки масивів.
- •4.Файли. Послідовні та з прямим доступом.
- •5. Процедури та функції як засоби структуризації програм. Виклики процедур та функцій.
- •6. Первинні оператори. Оператор присвоєння.
- •7. Оператор вводу-виводу (на прикладі конкретної мови програмування).
- •8.Функціональне програмування Свойства функциональных языков Строгая типизация
- •Модульность
- •Функции - это значения
- •Языки функционального программирования
- •9. Поняття про структурне програмування
- •10.Поняття про об’єктно-орієнтоване програмування.
Языки функционального программирования
-
Lisp (List processor). Считается первым функциональным языком программирования. Нетипизирован. Содержит массу императивных свойств, однако в общем поощряет именно функциональный стиль программирования. При вычислениях использует вызов по значению. Существует объектно-ориентированный диалект языка - CLOS.
-
Scheme. Диалект Lisp-а, предназначенный для научных исследований в области компьютерной науки. При разработке Scheme был сделан упор на элегантность и простоту языка. Благодаря этому язык получился намного меньше, чем Common Lisp.
-
ML (Meta Language). Семейство строгих языков с развитой полиморфной системой типов и параметризуемыми модулями. ML преподается во многих западных университетах (в некоторых даже как первый язык программирования).
-
Haskell. Один из самых распространенных нестрогих языков. Имеет очень развитую систему типизации. Несколько хуже (на мой взгляд) разработана система модулей. Последний стандарт языка - Haskell 98.
-
Gofer (GOod For Equational Reasoning). Упрощенный диалект Haskell. Предназначен для обучения функциональному программированию.
9. Поняття про структурне програмування
Структурное программирование сосредотачивает свое внимание на логике программы и включает три основных компонента: нисходящее проектирование, модульное программирование, структурное кодирование.
Основная идея структурного кодирования - структура модуля компонуется из базовых структур с последовательной детализацией алгоритма.
В модульном программировании основная идея - разбиение программы на последовательность модулей, каждый из которых выполняет одно или несколько действий. Требование к модулю - чтобы его выполнение всегда начиналось с первой команды и всегда заканчивалось последней (вход и выход из модуля невозможен). Это означает реализацию принципа Input-Process-Output. Модули логически независимы - результат работы модуля зависит только от исходных данных, но не зависит от работы других модулей.
Каждый модуль формируется на основе базовых структур.
В теории структурного программирования выделяют следующие базовые структуры:
-
Линейная (последовательная) структура
-
Разветвляющаяся (ветвящаяся) структура
-
Циклическая структура (два вида)
Базовые типы данных: числа, строки, логические величины. Для обращения к ячейкам памяти используются переменные, которые имеют имя (идентификатор), указывающее на значение. Кроме имени и значения переменная имеет тип и допустимый диапазон значений. Переменные с указанием их типа вводятся с помощью специальных команд описания (объявления, декларации). Каждый тип описывается своим ключевым словом. Переменные могут существовать на всем протяжении работы программы - тогда они называются статистическим, а могут создаваться и уничтожаться на разных этапах ее функционирования - их называют динамическими. Все остальные данные в программе, значение которых не меняется на протяжении ее работы, называют константами или постоянными. Константы также имеют тип.
Наличие подпрограмм позволяет вести проектирование и разработку программы "сверху вниз" - нисходящее проектирование. Сначала выделяется несколько подпрограмм, решающих самые глобальные задачи, потом каждый из этих модулей детализируется на более низком уровне, разбиваясь в свою очередь на некоторое число других подпрограмм. Такой подход удобен тем, что позволяет человеку постоянно мыслить на предметном уровне, не опускаясь до конкретных операторов и переменных. В результате строится иерархическая схема, отражающая состав и взаимоподчиненность отдельных функций - функциональная структура.
Восходящее программирование основано на противоположном процессе.