- •Методические указания к выполнению самостоятельной работы студентов по дисциплине: «информатика»
- •1. Требования к выполнению самостоятельной работы
- •Цель самостоятельной работы студентов – развитие познавательных способностей, самостоятельного мышления и творческой активности студентов.
- •Объем времени: 3 часа
- •2. Тема 1 - Основные конструкции программирования
- •2.1 История и обзор языков программирования
- •2.2 Основные конструкции программирования
- •2.3 Основы программирования на Visual Basic 6.0
- •2.4 Задачи и упражнения для самостоятельного выполнения
- •2.5 Примеры решения задач
- •2.6 Темы рефератов
- •3. Тема 2 - Парадигмы программирования
- •3.1 Процедурное программирование
- •3.2 Модульное и структурное программирование
- •3. 3 Объектно-ориентированное программирование
- •3.4. Операторы ветвления и цикла языка Visual Basic 6.0
- •3.5 Задачи и упражнения для самостоятельного выполнения
- •3.6 Примеры решения задач
- •3.7 Темы рефератов
- •4. Контрольные вопросы:
- •5. Литература:
- •На тему: «Знакомство с языками программирования»
2.6 Темы рефератов
1. История языков программирования.
2. Основные конструкции программирования.
3. Язык программирования Visual Basic.
4. Язык программирования Pascal.
5. Язык программирования C.
6. Типы данных языка Visual Basic.
7. Арифметические и логические выражения языка Visual Basic.
8. Стандартные функции языка Visual Basic.
3. Тема 2 - Парадигмы программирования
3.1 Процедурное программирование
Процедурное (императивное) программирование является отражением архитектуры традиционных ЭВМ, которая была предложена фон Нейманом в 1940-х годах.
Это исторически первым появившийся подход, при котором программист должен решить, какие процедуры должна выполнять программа, а затем выбрать наиболее подходящие алгоритмы для их реализации. Под процедурой понимается особенным образом оформленный фрагмент программы, имеющий собственное имя. Упоминание процедуры в тексте программы приводит к ее активизации и называется ее вызовом. Для обмена информацией и основной программой могут использоваться один или несколько параметров вызова.
Программа на процедурном языке программирования состоит из последовательности операторов (инструкций), задающих процедуру решения задачи. Основным является оператор присваивания, служащий для изменения содержимого областей памяти. Концепция памяти как хранилища значений, содержимое которого может обновляться операторами программы, является фундаментальной в императивном программировании.
Выполнение программы сводится к последовательному выполнению операторов с целью преобразования исходного состояния памяти, то есть значений исходных данных, в заключительное, то есть в результаты. Таким образом, с точки зрения программиста имеются программа и память, причем первая последовательно обновляет содержимое последней.
Процедурный язык программирования предоставляет возможность программисту определять каждый шаг в процессе решения задачи. Особенность таких языков программирования состоит в том, что задачи разбиваются на шаги и решаются шаг за шагом. Используя процедурный язык, программист определяет языковые конструкции для выполнения последовательности алгоритмических шагов. Процедуры могут вызываться из разных частей программы многократно.
При этом в процедуру могут передаваться переменные и параметры-значения, сама процедура может возвращать результат работы в головную программу. Важным свойством процедур является использование ими локальных, доступных только данной процедуре, переменных, что позволяет исключить побочные эффекты при работе процедуры. Процедурное программирование может быть использовано в большинстве современных языков программирования, таких как Pascal, Basic, C и так далее.
3.2 Модульное и структурное программирование
В 60 –х годах программисты, решавшие сложные задачи, столкнулись с проблемой разрастания размера программ до такой степени, что дальнейший процесс разработки становился практически неуправляемым. Разработчики программ не могли с уверенностью сказать, что созданный программный продукт всегда выполняет то, что требуется, и что он не выполняет ничего такого, что не требуется. Поэтому возникла необходимость в новой методологии разработки программных проектов. В этой связи была разработана технология модульного программирования.
В основе модульного программирования лежит идея Дейкстры о том, что трудность понимания программы возрастает показательно с ростом ее размеров.
Предположим, например, что сложность программы удваивается через каждые 10 строк. Тогда, приняв за 1 сложность программы в 10 строк, мы получим таблицу сложности программы.
Допустим вместо одной программы в 60 строк можно написать две программы по 30 строк, то сложность изменяется с 32 до 2*4=8, плюс сложность стыковки двух программ в одну.
Разбиение программного комплекса на модули выполняется в соответствии со следующими принципами:
Модуль – это независимый блок, код которого физически и логически отделен от кода других модулей.
Размер модуля не больше 100 операторов.
Модуль имеет одну входную и одну выходную точку.
Модули связаны иерархически.
Каждый модуль должен начинаться с комментария (его назначение – входные и выходные переменные).
Нисходящее и восходящее программирование
При разработке модульных программ применяются два метода проектирования – нисходящее и восходящее. При нисходящем проектировании разработка программного комплекса идет сверху вниз (рис.5).
Рисунок 5- Структура нисходящего программирования
На первом этапе разработки кодируется, тестируется и отлаживается головной модуль, который отвечает за логику работы всего программного комплекса. Остальные модули заменяются заглушками, имитирующими работу этих модулей. Применение заглушек необходимо для того, чтобы на самом раннем этапе проектирования можно было проверить работоспособность головного модуля. На последних этапах проектирования все заглушки постепенно заменяются рабочими модулями.
При восходящем проектировании разработка идет снизу вверх (рис.6). На первом этапе разрабатываются модули самого низкого уровня. На следующем этапе к ним подключаются модули более высокого уровня и проверяется их работоспособность. На завершающем этапе проектирования разрабатывается головной модуль, отвечающий за логику работы всего программного комплекса. Методы нисходящего и восходящего программирования имеют свои преимущества и недостатки.
Рисунок 6- Структура восходящего программирования
Недостатки нисходящего проектирования:
Необходимость заглушек.
До самого последнего этапа проектирования неясен размер программного комплекса и его эксплутационные характеристики, за которые, как правило, отвечают модули самого низкого уровня.
Преимущество нисходящего проектирования – на самом начальном этапе проектирования отлаживается головной модуль.
Преимущество восходящего программирования – не нужно писать заглушки.
Недостаток восходящего программирования – головной модуль разрабатывается на завершающем этапе проектирования, что порой приводит к необходимости дорабатывать модули более низких уровней.
На практике применяются оба метода. Метод нисходящего проектирования чаще всего применяется при разработке нового программного комплекса, а метод восходящего проектирования – при модификации уже существующего комплекса.
Структурное программирование - методология разработки программного обеспечения, в основе которой лежит представление программы в виде иерархической структуры блоков. Предложена в 70-х годах XX века Э. Дейкстрой, разработана и дополнена Н. Виртом. В соответствии с данной методологией любая программа представляет собой структуру, построенную из трёх типов базовых конструкций:
Линейная - однократное выполнение операторов в том порядке, в котором они записаны в тексте программы;
Разветвляющая - выбор одного из альтернативных путей работы алгоритма в зависимости от выполнения некоторого заданного условия;
Циклическая - многократное исполнение операторов до тех пор, пока выполняется некоторое заданное условие.
Структурное программирование облегчает написание больших программ, упрощает их отладку, помогает разделению работы между исполнителями и облегчает дальнейшее изменение программы с целью модернизации.
Чтобы написать структурированную программу надо разбить задачу на отдельные осмысленные части, и начать писать ее с головной программы.
Все что не ясно, надо исключать из головной программы и относить к блокам программ, а в головном модуле выяснять только, когда к какому блоку следует обратиться.
Следует отметить, что преимущества структурированного программирования убедительно сказываются только на больших программах.
