МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования «НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ ТОМСКИЙ ПОЛИТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ» ____________________________________________________________ УТВЕРЖДАЮ Директор ИДО ___________С. И. Качин “____”__________2012 г. ПРОГРАММИРОВАНИЕ И АЛГОРИТМИЗАЦИЯ Методические указания и индивидуальные задания для студентов ИДО, обучающихся по направлению 220700 «Автоматизация технологических процессов и производств» Составитель Н. М. Семёнов Семестр 3 4 5 4 6 8 – Лабораторные занятия, часов 8 – Практические занятия, часов 4 4 Кредиты Лекции, часов 2 Консультации по выполнению курсовой работы, часов Индивидуальные задания 1 Самостоятельная работа, часов Формы контроля 68 80 экзамен диф. зачёт Издательство Томского политехнического университета 2012 1 УДК 681.3.06 Программирование и алгоритмизация: метод. указ. и индивид. задания для студентов ИДО, обучающихся по напр. 220700 «Автоматизация технологических процессов и производств» / сост. Н.М. Семёнов; Томский политехнический университет. – Томск: Изд-во Томского политехнического университета, 2012. – 34 с. Методические указания и индивидуальные задания рассмотрены и рекомендованы к изданию методическим семинаром кафедры интегрированных компьютерных систем управления «___» ___________ 2012 г., протокол № ___. Зав. кафедрой ИКСУ доктор технических наук, профессор _____________А.М. Малышенко Аннотация Методические указания и индивидуальные задания по дисциплине «Программирование и алгоритмизация» предназначены для студентов ИДО, обучающихся по направлению 220700 «Автоматизация технологических процессов и производств». Данная дисциплина изучается в двух семестрах. Дисциплина «Программирование и алгоритмизация» относится к циклу профессиональных дисциплин для студентов, обучающихся по данному направлению. Предусмотрено изучение особенностей современного этапа развития программирования, технологии программирования и алгоритмизации, стандартов на разработку прикладных программных средств. Принципы объектно-ориентированного и визуального программирования рассматриваются на примере системы Delphi. Приведено содержание основных тем дисциплины. Даны перечень лабораторных работ и темы практических занятий. Приведены варианты индивидуального домашнего задания и курсовой работы. Даны методические указания по их выполнению. 2 1. МЕСТО ДИСЦИПЛИНЫ В СТРУКТУРЕ ОСНОВНОЙ ОБРАЗОВАТЕЛЬНОЙ ПРОГРАММЫ Дисциплина «Программирование и алгоритмизация» (ПиА) призвана продолжить формирование у студентов основы базовых знаний по программированию, необходимые им для изучения последующих учебных дисциплин и дальнейшей профессиональной деятельности. После изучения данной дисциплины студент должен знать использованную в ней терминологию объектно-ориентированного программирования; иметь представление о стандартах на разработку прикладных программных средств; организации данных; этапах построения алгоритмов; организации программных средств; применяемых технологиях программирования. Познавательная деятельность студентов по дисциплине заключается: в самостоятельном изучении материала теоретических занятий по рекомендованной литературе и учебно-методическим пособиям; в подготовке к практическим и лабораторным занятиям; в выполнении индивидуального домашнего задания; в выполнении курсовой работы. Дисциплина относится к циклу Б.3 – Профессиональный цикл. Пререквизиты – «Информатика», «Информационные технологии», кореквизиты – «Моделирование систем и процессов», пострекизиты – «Микропроцессорная техника», «Компьютерная технология инженерного труда». 2. СОДЕРЖАНИЕ ТЕОРЕТИЧЕСКОГО РАЗДЕЛА ДИСЦИПЛИНЫ Тема 1. Введение Предмет, цели и задачи курса и связь его с другими учебными дисциплинами. Парадигмы программирования, оказавшие существенное влияние на стиль соответствующих программ. Идея структурирования и процедурно – ориентированный язык Фортран. Модульный подход к разработке программ: язык Алгол-60 и позднее появившиеся Паскаль, Си, Ада. Руководящая идея объектно-ориентированного программирования – стремление связать данные с обрабатывающими эти данные процедурами в единое целое – объект. Деление программного обеспечения на системное, прикладное и системы программирования. Роль прикладного программирования. Особенности современного этапа развития программирования (про3 граммы как продукт, увеличение сложности программ и их жизненного цикла). Проблемы программирования. Визуальное программирование, объектно-ориентированное программирование и система Delphi. Рекомендуемая литература: [1, с. 5-24, 44-56], [12, с. 64-68], [10, C. 39]. Методические указания Необходимо усвоить предмет и цели курса, его место среди других дисциплин. Полезно вспомнить классификацию программного обеспечения (системное, прикладное…). Важно проследить цепочку в развитии программирования от середины ХХ века до современного состояния (от идеи структурирования через модульность к объектам). При этом следует связать каждый этап развития с проблемой, стоявшей в соответствующий период перед теорией и практикой программирования. Вопросы и задания для самоконтроля 1. При изучении каких дисциплин потребуются знания и умения, полученные при изучении дисциплины «Программирование и алгоритмизация»? 2. Сформулируйте идею структурированного программирования, положенную в основу языка Фортран. 3. В чём заключается принципиальное отличие объединения кода и данных в модули (Паскаль, Си) от объединения их же в объекты (Симула-67, Delphi)? 4. Какие требования к программе существенно повышаются при создании её как программного продукта? 5. Какие этапы составляют жизненный цикл программы? Тема 2. Основы Delphi Интегрированная среда разработчика (IDE). Основные элементы IDE: главное окно, окно инспектора объекта, окно дизайнера форм, окно редактора кода, менеджер проекта. Основное окно: линейка инструментов, ее настройка и изменение размеров; палитра компонентов и ее страницы, меню Delphi. Окно дизайнера форм. Понятие формы. Окно инспектора объекта и его страницы. Окно редактора кода. Менеджер проекта и его использование. Технология создания нового проекта и файлы проекта. Объектные и исполнимые файлы. Иерархия файлов. Формы и компоненты. Формы как основа визуального программирования в Delphi. Разработка проекта, основанная на компонентах: создание компонентов, изменение свойств формы, вложенные свойства, 4 размещение компонентов на форме. Визуальные и невизуальные компоненты. Программы и модули Delphi. Синтаксис модуля. Модули, поддерживающие формы. Классы и объекты, классы и наследование. Поля и методы класса. Принципы визуального программирования. Проектирование формы. Время разработки и время выполнения. Размещение компонентов на форме. Выбор группы компонентов. Операции над группой компонентов. Визуальные и объектные аспекты форм. Классы и формы. Присоединение программы обработки события. Свойства компонентов. События. Архитектура приложения. Диалоговые окна. Формы как модальные диалоговые окна. Формы как немодальные диалоговые окна. Особенности языка программирования Object Pascal. Булевы типы, тип String. Рекомендуемая литература: [2, с.12-56], [12, с. 5-20]. Методические указания Эта тема раскрывает устройство и возможности программного средства Delphi. Следует иметь в виду, что система программирования Delphi как программный продукт появилась в середине 90-х годов прошлого столетия. Она использовала язык программирования Object Pascal (объектный Паскаль), очень похожий на популярный в образовательной среде язык Turbo Pascal (Borland Pascal). Но в середине первого десятилетия нашего века язык программирования также стали называть Delphi. Поэтому под этим словом подразумевается как среда визуального программирования (программное средство), так и сам язык программирования. Достаточное внимание надо трём основным составляющим интегрированной среды разработки: дизайнеру форм; инспектору объекта; редактору кода. Эти три составляющие являются ядром всех выпусков Delphi, начиная от Delphi 1 до Delphi 10. Следует иметь в виду, что методические материалы, сопровождающие этот курс, рассчитаны на Delphi 6 и Delphi 7. Хотя, как показывает опыт, студенты дневного отделения не испытывают существенных трудностей и при работе с более современными выпусками программного средства. 5 Вопросы и задания для самоконтроля 1. Что такое «палитра компонентов»? 2. Какие функции возложены на редактор кода? 3. Почему некоторые компоненты, располагаемые на форме в процессе создания проекта, называются «невизуальными»? 4. Каково назначение оператора Application.CreateForm (TForm1, Form1), расположенного в основном модуле проекта? 5. Назовите основные элементы интегрированной среды разработчика. Тема 3. Введение в объектно-ориентированное программирование Классы и объекты. Определение объектно-ориентированного программирования (ООП). Объекты. Классы. Наследование. Объектные поля. Объявление переменных, представляющих экземпляр класса. Обращение к элементам объекта. Рекомендуемая литература: [3, с. 102-118], [12, с. 32-38]. Методические указания Как и всякое теоретическое построение в любой области знания, ставшая не так давно широко применяться парадигма объектноориентированного программирования имеет свою теоретическую базу и соответствующую терминологию. Поэтому для освоения этого теоретического материала требуется систематическая регулярная работа в течение достаточно продолжительного времени. Ключевыми являются понятия класса, как некоего порождающего образования, и объекта, являющегося представителем этого класса. Например, в качестве класса можно представить марку автомобиля Lada Priora, которая имеет соответствующую конструкторскую и технологическую документацию, конвейерные линии и станки для производства. А экземпляром класса (представителем класса) будет конкретный автомобиль, имеющий номер государственной регистрации. С программистской точки зрения класс можно представить как некоторый тип (Type), опираясь на который могут объявляться соответствующие переменные. Вопросы и задания для самоконтроля 1. Дайте определение объектно-ориентированного программирования. 2. Напишите фрагмент программы на Delphi, задающий класс с двумя полями и одним методом. 6 3. Дайте определение объекта. 4. В чем заключается механизм наследования классов? Что такое «базовый класс»? 5. В разделе var объявите переменную – представителя класса, созданного в пункте (вопросе) 2. 6. Запишите общий синтаксис объявления класса. Тема 4. Методы. Конструкторы и деструкторы Разновидность методов. Методы-функции и методы-процедуры. Конструкторы. Деструкторы. Классовые процедуры и функции. Реализация методов. Вызов методов. Видимость элементов класса. Рекомендуемая литература: [4, с. 84-98], [12, с. 39-50]. Методические указания В Delphi существует шесть разновидностей методов – своеобразных подпрограмм (процедур и функций). Они объявляются в разделе Type при описании класса, а непосредственно активная часть методов кодируется в разделе реализации (implementation) модуля проекта. Особое внимание следует уделить двум методам: конструкторам и деструкторам. Первые выделяют во время работы созданной программы (проекта) динамическую память под объекты, а вторые освобождают занимаемую динамическую память после того, как объект становится ненужным. Следует знать и различать синтаксис объявления, реализации и вызова (использования) каждой разновидности методов. Вопросы и задания для самоконтроля 1. Что понимается под термином «метод объекта»? 2. Назовите шесть разновидностей методов. 3. Напишите синтаксис объявления метода-процедуры. 4. Напишите синтаксис объявления конструктора. 5. Синтаксис вызова деструктора. 6. Запишите общий синтаксис реализации метода-функции. Тема 5. Графика в Delphi. Обработка исключений Оконно-ориентированная графика. Начало графических координат формы. Область клиента. Визуальный компонент Delphi как независимая область рисования. Объект Canvas как посредник между пользователем (программистом) и генератором графики внутри Windows. Наиболее важные свойства класса TCanvas: Pen (перо), Brush (кисть), Font (шрифт), Handle (дескриптор). 7 Наиболее часто используются методы класса TCanvas: Rectangle, Ellipse, MoveTo и LineTo, Polygon и PolyLine, TextOut. Исключения как инструмент для передачи информации об ошибках времени выполнения программы. Отличие обработки исключений от традиционной обработки ошибок. Конструкция try - finally обработки исключений и защита ресурсов. Оператор try – except. Оператор on – do как средство обеспечения специфического отклика на определённые исключения. Рекомендуемая литература: [6, с. 393-420], [12, с. 56-63], [5, с. 459-489]. Методические указания При изучении графических возможностей Delphi надо обратить внимание на наличие удобного средства – объекта Canvas – для облегчения работы с генератором графики внутри Windows. Этот генератор Graphic Device Interface (GDI) представляет собой набор подпрограмм для вывода графики и связанных с ними структур данных, которые дают возможность приложениям отображать информацию визуально. Прямое взаимодействие с GDI утомительно и чревато ошибками. Концепция Canvas и её реализация в виде стандартного класса TCanvas значительно упрощают использование графики. Свойства и методы класса TCanvas непосредственно являются инструментами для создания графики в Delphi. Исключения в виде конструкций try - finally и try except позволяют значительно повысить эффективность отладки создаваемых приложений. Достигается это за счёт механизма разнесения по разным местам программы кода, обнаруживающего ошибку времени выполнения, и кода, реагирующего на такую ошибку. Обработка исключений предоставляет автоматический канал связи между этими двумя частями кода. Код, обнаруживший ошибку, возбуждает исключение, тем самым сигнализируя о состоянии ошибки. Код, который реагирует на такой сигнал, называется обработчиком исключений. Вопросы и задания для самоконтроля 1. Каково назначение объекта Canvas? 2. Укажите назначение свойств Pen и Brush. 3. Какой метод позволяет рисовать окружность? 8 4. Напишите фрагмент программы, позволяющий нарисовать треугольник линией красного цвета. 5. Дайте определение понятию «исключение» (exceptions). 6. Запишите общий синтаксис блока try - finally. 7. Напишите фрагмент кода, позволяющий выявлять с помощью оператора try - except операцию деления на ноль. Тема 6. Современные технологии программирования и алгоритмизация Стандарты на разработку прикладных программных средств. Документирование, сопровождение и эксплуатация программных средств. Организация данных: статические и динамические данные, список, очередь, стек, множество; последовательный, индекснопоследовательный файлы, файл с прямым доступом. Абстракция данных. Этапы построения алгоритма. Методы частных целей, подъема, эвристика, метод ветвей и границ, рекурсия и итерация, сортировка и поиск, численные и символьные вычисления. Организация программных средств: информационные системы, системы автоматизированного исследования и проектирования, системы управления техническими средствами, диалоговые системы. Технологии программирования: экстремальное программирование, структурное программирование, стандартные логические структуры, метод пошаговой детализации, тестирование и отладка программ. Рекомендуемая литература: [7, с. 235-312], [12, с. 64-72], [8, с. 425-677]. Методические указания Создаваемые программы чаще всего предназначены для продажи. Это существенно повышает требования к надёжности программного изделия, т.е. к уменьшению числа оставшихся невыявленными ошибок в программе и таких неучтённых ситуаций, при возникновении которых программа может выдавать неопределённый результат или вообще прекращать своё нормальное функционирование. Особое значение приобретает и эффективность программы. Недостаточная эффективность при многократном последующем использовании этой программы может привести к весьма существенным непроизводительным затратам машинного времени на её выполнение. Технологии программирования, появившиеся в последней четверти прошлого века и позднее, как раз направлены на выполнение этих тре- 9 бований. Этому же способствую стандарты на разработку программных средств, их сопровождение и эксплуатацию. Сами языки программирование также предусматриваю выполнение ряда требований, направленных на повышение надёжности создаваемых программ. Адекватная решаемой задаче организация данных, эффективные методы решения, средства тестирования и отладки – всё это, в конечном счёте, направлено на получение конкурентоспособных программ, надёжных, эффективных и удобных в эксплуатации. Вопросы и задания для самоконтроля 1. Проанализируйте приведённый листинг фрагмента программы на языке Паскаль: R:=0; for i:= 1 to N do for j:= 1 to N do if A[i] > B[j] then R:=1; if R=0 then write (‘Yes’) else write (‘No’); В чём заключается неэффективность применённого алгоритма? Напишите текст, соответствующий эффективному алгоритму. 2. Приведите пример задачи, для решения которой применяется метод ветвей и границ. 3. Какие стандартные логические структуры используются для создания хорошо структурированных программ? 4. В чём суть метода пошаговой детализации, применяемого при разработке программ? 5. Назовите достоинства и недостатки применения блок-схем для отображения алгоритма программы. 3. СОДЕРЖАНИЕ ПРАКТИЧЕСКОГО РАЗДЕЛА ДИСЦИПЛИНЫ 3.1. Тематика практических занятий 4-й семестр Тема 1. Технология создания проектов в Delphi. Создание алгоритма и программы нахождения максимального и минимального чисел массива (2 часа). Иерархия файлов проекта Delphi. Разработка блок-схемы алгоритма программы. Визуальное проектирование формы. Реализация алгоритма в методе-процедуре и методе-функции модуля формы. 10 Рекомендуемая литература 1. Тюкачёв Н. и др. Программирование в Delphi для начинающих. – СПб.: БХВ-Петербург, 2007. – 672 с. 2. Семёнов Н.М. (составитель). Программирование и основы алгоритмизации. Учебное пособие. – Томск: Изд-во ТПУ, 2009. – 90 с. Тема 2. Создание алгоритма и программы обмена местами максимального и минимального чисел матрицы (2 часа). Разработка блок-схемы алгоритма программы. Визуальное проектирование формы. Реализация алгоритма в методе-процедуре модуля формы. Рекомендуемая литература 1. Бобровский С. Delphi 7: Учебный курс. – СПб.: Питер, 2008. – 736 с. 2. Семёнов Н.М. (составитель). Программирование и основы алгоритмизации. Учебное пособие. – Томск: Изд-во ТПУ, 2009. – 90 с. 5-й семестр Тема 1. Вычисление суммы элементов матрицы, расположенных по периметру, с помощью компонента StringGrid (4 часа). Изучение интерфейса и возможностей компонента StringGrid. Разработка блок-схемы алгоритма программы. Визуальное проектирование формы. Реализация алгоритма в методе-процедуре модуля формы. Рекомендуемая литература 1. Сухарев М. Delphi. Полное руководство. Включая версию 2010. – СПб.: Наука и техника, 2010. – 1035 с. 2. Семёнов Н.М. (составитель). Программирование и основы алгоритмизации. Учебное пособие. – Томск: Изд-во ТПУ, 2009. – 90 с. 3.2. Перечень лабораторных работ 1. Элементы среды разработки Delphi. (2 часа). 2. Программы и модули Delphi (2 часа). 3. Принципы визуального программирования (2 часа). 4. Проектирование калькулятора в среде Delphi (2 часа). Методические указания к выполнению лабораторных работ приведены в [11]. 11 4. ИНДИВИДУАЛЬНЫЕ ДОМАШНИЕ ЗАДАНИЯ 4.1. Общие методические указания Индивидуальное домашнее задание (ИДЗ) предусматривает решение поставленной задачи в виде программы на Delphi. Вариант индивидуального задания (тема реферата) определяется как число, составленное из двух последних цифр зачетной книжки студента. В связи с тем, что имеется 30 вариантов заданий, используется следующий алгоритм выбора варианта: Последние цифры номера зачётной книжки 11 32 65 Подлежащий выполнению вариант 11 вариант 32 – 30∙1= 2 вариант 65 – 30∙2= 5 вариант и т. д. В отчёте должно быть: 1. Титульный лист. 2. Постановка задачи. 3. Краткое пояснение идеи решения и реализации проекта. 4. Блок-схема программы, выполненная в соответствии с требованиями ГОСТ 19.701-90 ЕСПД. Схемы алгоритмов, программ, данных и систем. Условные обозначения и правила выполнения. 5. Листинг программы (примерно пятую часть текста должны занимать комментарии). 6. Скриншоты экрана монитора, отражающие спроектированную форму, введённые данные и полученные результаты. 7. Выкладки, подтверждающие правильность полученных результатов. Оформлять отчёт рекомендуется по стандарту организации СТО ТПУ 2.5.01-2006 «Работы выпускные квалификационные, проекты и работы курсовые. Структура и правила оформления». Преподавателю должны быть представлены файлы проекта с расширениями exe, pas, dfm, dpr, подтверждающие работоспособность проекта. 4.2. Варианты индивидуальных заданий и методические указания 1. Объявить в Delphi класс, позволяющий объекту хранить информацию о количестве скважин куста на нефтяном промысле. Предусмотреть в созданном классе наличие метода, который по введённому суточному дебиту каждой скважины вычисляет дебит, приходящийся в сред12 нем на одну скважину. Применить класс в проекте, реально вычисляющем дебит. Для ввода данных в проекте обязательно использовать компонент StringGrid. Перед окончанием работы проекта освободить динамическую память, выделенную под объект. 2. Объявить в Delphi класс, позволяющий объекту хранить информацию о количестве скважин куста на нефтяном промысле. Предусмотреть в созданном классе наличие метода, который по введённому суточному дебиту каждой скважины вычисляет разность дебитов самой продуктивной и самой малопроизводительной скважин. Применить класс в проекте, реально вычисляющем разность дебитов. Для ввода данных в проекте обязательно использовать компонент StringGrid. Перед окончанием работы проекта освободить динамическую память, выделенную под объект. 3. Объявить в Delphi класс, позволяющий объекту хранить информацию о количестве скважин куста на нефтяном промысле. Предусмотреть в созданном классе наличие метода, который по введённому суточному дебиту каждой скважины определяет номер самой продуктивной скважины. Применить класс в проекте, реально определяющем такой номер. Для ввода данных в проекте обязательно использовать компонент StringGrid. Перед окончанием работы проекта освободить динамическую память, выделенную под объект. 4. Объявить в Delphi класс, позволяющий объекту хранить информацию о количестве скважин куста на нефтяном промысле. Предусмотреть в созданном классе наличие метода, который по введённому суточному дебиту каждой скважины определяет номер самой малопродуктивной скважины. Применить класс в проекте, реально определяющем такой номер. Для ввода данных в проекте обязательно использовать компонент StringGrid. Перед окончанием работы проекта освободить динамическую память, выделенную под объект. 5. Объявить в Delphi класс, позволяющий объекту хранить информацию о количестве скважин куста на нефтяном промысле. Предусмотреть в созданном классе наличие метода, который по введённому суточному дебиту каждой скважины определяет номер такой скважины, чья продуктивность ближе всего к дебиту, приходящемуся в среднем на одну скважину куста. Применить класс в проекте, реально определяющем такой номер. Для ввода данных в проекте обязательно использовать компонент StringGrid. Перед окончанием работы проекта освободить динамическую память, выделенную под объект. 6. Объявить в Delphi класс, позволяющий объекту хранить информацию о количестве скважин куста на нефтяном промысле. Предусмот13 реть в созданном классе наличие метода, который по введённому суточному дебиту каждой скважины определяет номера скважин с минимальной и максимальной производительностью. Применить класс в проекте, реально определяющем такие номера. Для ввода данных в проекте обязательно использовать компонент StringGrid. Перед окончанием работы проекта освободить динамическую память, выделенную под объект. 7. Объявить в Delphi класс, позволяющий объекту хранить информацию о количестве скважин куста на нефтяном промысле. Предусмотреть в созданном классе наличие метода, который по введённому суточному дебиту каждой скважины определяет номера двух скважин с минимальной производительностью. Применить класс в проекте, реально определяющем такие номера. Для ввода данных в проекте обязательно использовать компонент StringGrid. Перед окончанием работы проекта освободить динамическую память, выделенную под объект. 8. Объявить в Delphi класс, позволяющий объекту хранить информацию о количестве скважин куста на нефтяном промысле. Предусмотреть в созданном классе наличие метода, который по введённому суточному дебиту каждой скважины определяет номера двух скважин с максимальной производительностью. Применить класс в проекте, реально определяющем такие номера. Для ввода данных в проекте обязательно использовать компонент StringGrid. Перед окончанием работы проекта освободить динамическую память, выделенную под объект. 9. Объявить в Delphi класс, позволяющий объекту хранить информацию о количестве скважин куста на нефтяном промысле. Предусмотреть в созданном классе наличие метода, который по введённому суточному дебиту каждой скважины определяет процент скважин, производительность которых превышает среднее значение производительности скважины куста. Применить класс в проекте, реально определяющем такой процент. Для ввода данных в проекте обязательно использовать компонент StringGrid. Перед окончанием работы проекта освободить динамическую память, выделенную под объект. 10. Объявить в Delphi класс, позволяющий объекту хранить информацию о количестве скважин куста на нефтяном промысле. Предусмотреть в созданном классе наличие метода, который по введённому суточному дебиту каждой скважины определяет процент скважин, производительность которых меньше среднего значения производительности скважины куста. Применить класс в проекте, реально определяющем такой процент. Для ввода данных в проекте обязательно использо- 14 вать компонент StringGrid. Перед окончанием работы проекта освободить динамическую память, выделенную под объект. 11. Объявить в Delphi класс, позволяющий объекту хранить информацию о количестве обсадных труб вертикальной скважины. Предусмотреть в созданном классе наличие метода, который по введённой длине каждой трубы определяет глубину всей скважины. Применить класс в проекте, реально определяющем глубину. Для ввода данных в проекте обязательно использовать компонент StringGrid. Перед окончанием работы проекта освободить динамическую память, выделенную под объект. 12. Объявить в Delphi класс, позволяющий объекту хранить информацию о количестве обсадных труб скважины. Предусмотреть в созданном классе наличие метода, который по введённой длине каждой трубы определяет среднюю длину труб скважины. Применить класс в проекте, реально определяющем среднюю длину. Для ввода данных в проекте обязательно использовать компонент StringGrid. Перед окончанием работы проекта освободить динамическую память, выделенную под объект. 13. Объявить в Delphi класс, позволяющий объекту хранить информацию о количестве обсадных труб скважины. Предусмотреть в созданном классе наличие метода, который по введённой длине каждой трубы определяет номер самой короткой трубы. Применить класс в проекте, реально определяющем такой номер. Для ввода данных в проекте обязательно использовать компонент StringGrid. Перед окончанием работы проекта освободить динамическую память, выделенную под объект. 14. Объявить в Delphi класс, позволяющий объекту хранить информацию о количестве обсадных труб скважины. Предусмотреть в созданном классе наличие метода, который по введённой длине каждой трубы определяет номер самой длинной трубы. Применить класс в проекте, реально определяющем такой номер. Для ввода данных в проекте обязательно использовать компонент StringGrid. Перед окончанием работы проекта освободить динамическую память, выделенную под объект. 15. Объявить в Delphi класс, позволяющий объекту хранить информацию о количестве обсадных труб скважины. Предусмотреть в созданном классе наличие метода, который по введённой длине каждой трубы определяет номер трубы, длина которой меньше всего отличается от средней длины обсадных труб скважины. Применить класс в проекте, реально определяющем такой номер. Для ввода данных в проекте обяза15 тельно использовать компонент StringGrid. Перед окончанием работы проекта освободить динамическую память, выделенную под объект. 16. Объявить в Delphi класс, позволяющий объекту хранить информацию о количестве обсадных труб скважины. Предусмотреть в созданном классе наличие метода, который по введённой длине каждой трубы определяет номера двух самых коротких. Применить класс в проекте, реально определяющем такие номера. Для ввода данных в проекте обязательно использовать компонент StringGrid. Перед окончанием работы проекта освободить динамическую память, выделенную под объект. 17. Объявить в Delphi класс, позволяющий объекту хранить информацию о количестве обсадных труб скважины. Предусмотреть в созданном классе наличие метода, который по введённой длине каждой трубы определяет номера двух самых длинных. Применить класс в проекте, реально определяющем такие номера. Для ввода данных в проекте обязательно использовать компонент StringGrid. Перед окончанием работы проекта освободить динамическую память, выделенную под объект. 18. Объявить в Delphi класс, позволяющий объекту хранить информацию о количестве обсадных труб скважины. Предусмотреть в созданном классе наличие метода, который по введённым длине и внутреннему диаметру каждой трубы определяет номер трубы с наибольшим объёмом. Применить класс в проекте, реально определяющем такой номер. Для ввода данных в проекте обязательно использовать компонент StringGrid. Перед окончанием работы проекта освободить динамическую память, выделенную под объект. 19. Объявить в Delphi класс, позволяющий объекту хранить информацию о количестве обсадных труб скважины. Предусмотреть в созданном классе наличие метода, который по введённым длине и внутреннему диаметру каждой трубы определяет номер трубы с наименьшим объёмом. Применить класс в проекте, реально определяющем такой номер. Для ввода данных в проекте обязательно использовать компонент StringGrid. Перед окончанием работы проекта освободить динамическую память, выделенную под объект. 20. Объявить в Delphi класс, позволяющий объекту хранить информацию о количестве обсадных труб скважины. Предусмотреть в созданном классе наличие метода, который по введённым длине и внутреннему диаметру каждой трубы вычисляет сумму объёмов труб. Применить класс в проекте, реально определяющем такой номер. Для ввода 16 данных в проекте обязательно использовать компонент StringGrid. Перед окончанием работы проекта освободить динамическую память, выделенную под объект. 21. Объявить в Delphi класс, позволяющий объекту хранить информацию о количестве обсадных труб скважины. Предусмотреть в созданном классе наличие метода, который по введённым длине и внутреннему диаметру каждой трубы вычисляет среднее арифметическое объёмов обсадных труб. Применить класс в проекте, реально вычисляющем такую величину. Для ввода данных в проекте обязательно использовать компонент StringGrid. Перед окончанием работы проекта освободить динамическую память, выделенную под объект. 22. Объявить в Delphi класс, позволяющий объекту хранить информацию о количестве обсадных труб скважины. Предусмотреть в созданном классе наличие метода, который по введённым длине и внутреннему диаметру каждой трубы определяет номер трубы с объёмом, меньше всего отличающимся от среднего арифметического объёмов всех труб. Применить класс в проекте, реально вычисляющем такой номер. Для ввода данных в проекте обязательно использовать компонент StringGrid. Перед окончанием работы проекта освободить динамическую память, выделенную под объект. 23. Объявить в Delphi класс, позволяющий объекту хранить информацию о количестве обсадных труб скважины. Предусмотреть в созданном классе наличие метода, который по введённым длине и внутреннему диаметру каждой трубы определяет номер трубы с объёмом, больше всего отличающимся от среднего арифметического объёмов всех труб. Применить класс в проекте, реально определяющем такой номер. Для ввода данных в проекте обязательно использовать компонент StringGrid. Перед окончанием работы проекта освободить динамическую память, выделенную под объект. 24. Объявить в Delphi класс, позволяющий объекту хранить информацию о количестве напорных сальников вертлюга, использованных при бурении скважины. Предусмотреть в созданном классе наличие метода, который по введённому времени работы каждого сальника определяет номер сальника, проработавшего дольше всех. Применить класс в проекте, реально определяющем такой номер. Для ввода данных в проекте обязательно использовать компонент StringGrid. Перед окончанием работы проекта освободить динамическую память, выделенную под объект. 25. Объявить в Delphi класс, позволяющий объекту хранить информацию о количестве напорных сальников вертлюга, использованных 17 при бурении скважины. Предусмотреть в созданном классе наличие метода, который по введённому времени работы каждого сальника определяет номер сальника, проработавшего меньше всех. Применить класс в проекте, реально определяющем такой номер. Для ввода данных в проекте обязательно использовать компонент StringGrid. Перед окончанием работы проекта освободить динамическую память, выделенную под объект. 26. Объявить в Delphi класс, позволяющий объекту хранить информацию о количестве напорных сальников вертлюга, использованных при бурении скважины. Предусмотреть в созданном классе наличие метода, который по введённому времени работы каждого сальника вычисляет среднее время работы. Применить класс в проекте, реально вычисляющем среднее время работы напорного сальника. Для ввода данных в проекте обязательно использовать компонент StringGrid. Перед окончанием работы проекта освободить динамическую память, выделенную под объект. 27. Объявить в Delphi класс, позволяющий объекту хранить информацию о количестве напорных сальников вертлюга, использованных при бурении скважины. Предусмотреть в созданном классе наличие метода, который по введённому времени работы каждого сальника определяет номер сальника со временем работы, меньше всего отличающимся от среднего времени работы всей группы сальников. Применить класс в проекте, реально определяющем такой номер. Для ввода данных в проекте обязательно использовать компонент StringGrid. Перед окончанием работы проекта освободить динамическую память, выделенную под объект. 28. Объявить в Delphi класс, позволяющий объекту хранить информацию о количестве долот, использованных при бурении скважины. Предусмотреть в созданном классе наличие метода, который по введённому количеству метров, пробуренных каждым долотом, определяет номер долота с наибольшей проходкой. Применить класс в проекте, реально определяющем такой номер. Для ввода данных в проекте обязательно использовать компонент StringGrid. Перед окончанием работы проекта освободить динамическую память, выделенную под объект. 29. Объявить в Delphi класс, позволяющий объекту хранить информацию о количестве долот, использованных при бурении скважины. Предусмотреть в созданном классе наличие метода, который по введённому количеству метров, пробуренных каждым долотом, определяет номер долота с наименьшей проходкой. Применить класс в проекте, ре18 ально определяющем такой номер. Для ввода данных в проекте обязательно использовать компонент StringGrid. Перед окончанием работы проекта освободить динамическую память, выделенную под объект. 30. Объявить в Delphi класс, позволяющий объекту хранить информацию о количестве долот, использованных при бурении скважины. Предусмотреть в созданном классе наличие метода, который по введённому количеству метров, пробуренных каждым долотом, определяет длину скважины. Применить класс в проекте, реально вычисляющем такую длину. Для ввода данных в проекте обязательно использовать компонент StringGrid. Перед окончанием работы проекта освободить динамическую память, выделенную под объект. 5. КУРСОВАЯ РАБОТА Курсовая работа состоит в выполнении двух заданий в соответствии с вариантом. Как правило, первая задача носит ярко выраженный вычислительный характер. Суть работы состоит в разработке алгоритма решения первой задачи и написания соответствующей программы на языке программирования Delphi. Вторая задача формулируется так: в системе Delphi создать заказной (авторский) компонент. Причём этот компонент должен помогать решать задачу, выполненную студентом в 4-ом семестре в рамках индивидуального домашнего задания. Например, если задача состояла в нахождении суммы двух чисел (рис. 1), то следует создать компонент-панель (TPanel), результат применения которого показан на рис. 2. Рис. 1. Проект для решения задачи из индивидуального домашнего задания. 19 Рис. 2. Результат применения созданного студентом компонентапанели. Созданный компонент обязательно должен быть расположен в Палитре компонентов Delphi, например, на закладке Samples (рис. 3). Рис. 3. Значок созданного компонента на закладке Samples. Номер варианта определяется как число, составленное из двух последних цифр номера зачетной книжки. Для курсовой работы, как и для индивидуального домашнего задания, имеется 30 вариантов. Поэтому вариант выбирается аналогично в соответствии с двумя последними цифрами номера зачётной книжки: Последние цифры номера зачётной книжки 11 32 65 Подлежащий выполнению вариант 11 вариант 32 – 30∙1= 2 вариант 65 – 30∙2= 5 вариант и т. д. Для первой задачи из варианта должны быть представлены: 1. Краткое пояснение метода решения задачи, т.е. применяемого алгоритма. 2. Блок-схема алгоритма, выполненная в соответствии с ЕСПД. 3. Пояснения к блок-схеме, приведенные отдельно от блок-схемы и оформленные в виде обычных предложений. 4. Листинг программы. 5. Скриншоты экрана монитора, отражающие спроектированную форму, введённые данные и полученные результаты. 20 6. Выкладки, подтверждающие правильность полученных результатов. Для второго задания из варианта надо представить описание технологии создания компонента с необходимым обоснованием принятых решений, листинги модулей, скриншоты, аналогичные приведённым на рис. 1, 2, 3. Для обеих задач студент должен предоставить преподавателю файлы, позволяющие проверить работоспособность предлагаемых решений и при необходимости внести коррективы. Как правило, это файлы с расширениями pas, dpr, dfm. При выполнении курсовой работы можно пользоваться [9, 11], а также Internet-ресурсами [14, 15, 16, 17]. Вариант 1 1. Числа Фибоначчи (fn) определяются формулами f0=f1=1; fn=fn-1+fn-2 при n=2,3, . . . Вычислить «S» – сумму простых чисел ряда Фибоначчи, которые не превосходят 1000. 2. Создать компонент для решения задачи из ИДЗ (вариант 1). Вариант 2 1. Числа Фибоначчи (fn) определяются формулами f0=f1=1; fn=fn-1+fn-2 при n=2,3, . . . Вычислить «S» – сумму чисел ряда Фибоначчи, которые не превосходят 1000 и не являются простыми. 2. Создать компонент для решения задачи из ИДЗ (вариант 2). Вариант 3 1. Числа Фибоначчи (fn) определяются формулами f0=f1=1; fn=fn-1+fn-2 при n=2,3, . . . Вычислить «S» – сумму пяти последних чисел ряда Фибоначчи при n=40. 2. Создать компонент для решения задачи из ИДЗ (вариант 3). Вариант 4 1. Дана последовательность целых чисел. Путем удаления некоторых элементов (не переставляя элементы), получить неубывающую последовательность максимальной длины. 2. Создать компонент для решения задачи из ИДЗ (вариант 4). Вариант 5 21 1. Множество «K» строится следующим образом: 1) Два натуральных числа a, b включены в множество «K». 2) Для любых «x», «y», входящих в «K», число x+y+xy включается в «K». 3) Других элементов в «K» нет. Определить, является ли Z элементом множества «K», если заданы числа a, b. 2. Создать компонент для решения задачи из ИДЗ (вариант 5). Вариант 6 1. Даны целое n > 0 и последовательность из n вещественных чисел, среди которых есть хотя бы одно отрицательное число. Найти величину наибольшего среди отрицательных чисел этой последовательности. 2. Создать компонент для решения задачи из ИДЗ (вариант 6). Вариант 7 1. Написать программу, которая вычисляет периметр и площадь правильного n-угольника, вписанного в окружность заданного радиуса. 2. Создать компонент для решения задачи из ИДЗ (вариант 7). Вариант 8 1. Логической переменной t присвоить значение true или false в зависимости от того, является ли натуральное число k степенью 3 или нет. 2. Создать компонент для решения задачи из ИДЗ (вариант 8). Вариант 9 1. Из заданных «n» предметов выбрать такие, чтобы их суммарный вес был менее 30 кг, а стоимость – наибольшей. Вывести на дисплей суммарную стоимость выбранных предметов и их индексы из массива В. Точнее – заданы два массива положительных чисел A[1:n] и B[1:n]. Выбрать такие числа i1, i2, . . . ik, чтобы сумма A[i1]+A[i2] + . . . + A[ik] 30, а сумма B[i1]+B[i2]+ . . . +B[ik]= max. 2. Создать компонент для решения задачи из ИДЗ (вариант 9). Вариант 10 1. Для заданного «a» вычислить принадлежащий интервалу (, 2) корень уравнения ln(ctgx-1)=a. 2. Создать компонент для решения задачи из ИДЗ (вариант 10). Вариант 11 1. Ввести целое число 2 и натуральное k. Вычислить 2k с выполнением следующих условий: операцией возведения в степень пользоваться нельзя; k может оказаться настолько большим, что недопустимо вы22 полнять k умножений. То есть надо предусмотреть возможность переполнения разрядной сетки компьютера, но всё равно вывести на дисплей все цифры полученной степени числа 2. 2. Создать компонент для решения задачи из ИДЗ (вариант 11). Вариант 12 1. Вычислить дробную часть среднего геометрического трёх заданных положительных чисел. 2. Создать компонент для решения задачи из ИДЗ (вариант 12). Вариант 13 1. Методом выбора определите максимальную и минимальную суммы элементов матрицы m n при условии, что при вычислении очередной суммы в каждой строке и каждом столбце может быть выбран только один элемент. 2. Создать компонент для решения задачи из ИДЗ (вариант 13). Вариант 14 1. Дана непустая последовательность положительных чисел, за которой следует ноль (это признак конца последовательности). Вычислить среднее геометрическое этих чисел. 2. Создать компонент для решения задачи из ИДЗ (вариант 14). Вариант 15 1. Для произвольных вещественных чисел a, b и c определить, имеет ли уравнение ax2+bx+c=0 хотя бы одно вещественное решение. 2. Создать компонент для решения задачи из ИДЗ (вариант 15). Вариант 16 1. Дано натуральное k. Определить k-ю цифру в последовательности 110100100010000100000 . . . , в которой выписаны подряд степени 10. 2. Создать компонент для решения задачи из ИДЗ (вариант 16). Вариант 17 1. Для заданных чисел p, a и b (a b) определить, имеет ли уравнение arctg (2x - p)= 2 корень на отрезке [a, b]. 2. Создать компонент для решения задачи из ИДЗ (вариант 17). Вариант 18 23 1. Дано целое k от 1 до 180. Определить, какая цифра находится в k-ой позиции последовательности 10111213 . . . 9899, в которой выписаны подряд все двузначные числа. Последовательность нельзя задавать при помощи строкового типа. 2. Создать компонент для решения задачи из ИДЗ (вариант 18). Вариант 19 1. Дано натуральное k. Определить k-ю цифру в последовательности 123456789101112131415 . . . , в которой выписаны подряд все натуральные числа. 2. Создать компонент для решения задачи из ИДЗ (вариант 19). Вариант 20 1. Дано натуральное k. Определить k-ю цифру в последовательности 149162536 . . . , в которой выписаны подряд квадраты всех натуральных чисел. 2. Создать компонент для решения задачи из ИДЗ (вариант 20). Вариант 21 1. Дано натуральное k. Определить k-ю цифру в последовательности 1123581321 . . . , в которой выписаны подряд все числа Фибоначчи. 2. Создать компонент для решения задачи из ИДЗ (вариант 21). Вариант 22 1. В заданный непустой текст входят только цифры и буквы. Определить, является ли текст десятичной записью числа, кратного 9. 2. Создать компонент для решения задачи из ИДЗ (вариант 22). Вариант 23 1. В заданный непустой текст входят только цифры и буквы. Определить, удовлетворяет ли он следующему свойству: текст начинается с некоторой ненулевой цифры, за которой следуют только буквы, и их количество равно числовому значению этой цифры. 2. Создать компонент для решения задачи из ИДЗ (вариант 23). Вариант 24 1. В заданный непустой текст входят только цифры и буквы. Определить, удовлетворяет ли он следующему свойству: текст начинается с k 24 букв (1 k 9 ), за которыми следует только одна литера-цифра с числовым значением k. 2. Создать компонент для решения задачи из ИДЗ (вариант 24). Вариант 25 1. В заданный непустой текст входят только цифры и буквы. Определить, удовлетворяет ли он следующему свойству: текст состоит только из цифр, причём их числовые значения образуют арифметическую прогрессию (например: 2468, 741, 3). 2. Создать компонент для решения задачи из ИДЗ (вариант 25). Вариант 26 1. В заданный непустой текст входят только цифры и буквы. Определить, удовлетворяет ли он следующему свойству: текст содержит (помимо букв) только одну цифру, причём её числовое значение равно длине текста. 2. Создать компонент для решения задачи из ИДЗ (вариант 26). Вариант 27 1. В заданный непустой текст входят только цифры и буквы. Определить, удовлетворяет ли он следующему свойству: сумма числовых значений цифр, входящих в текст, равна длине текста. 2. Создать компонент для решения задачи из ИДЗ (вариант 27). Вариант 28 1. Два простых числа называются «близнецами», если они отличаются друг от друга на 2 (таковы, например, числа 41 и 43). Найти все пары «близнецов» из отрезка [n, 2n], где n – заданное целое число, большее 2. 2. Создать компонент для решения задачи из ИДЗ (вариант 28). Вариант 29 1. Вывести все цифры десятичной записи числа 1!+2!+3!+…+100!. (Рекомендация: представить «длинное» натуральное число в виде массива из цифр и реализовать нужные операции над ними). 2. Создать компонент для решения задачи из ИДЗ (вариант 29). Вариант 30 1. Два натуральных числа называются «дружественными», если каждое из них равно сумме всех делителей другого, за исключением его самого (таковы, например, числа 220 и 284) Найти все пары «дружественных» чисел, не превосходящих заданного натурального числа. 25 2. Создать компонент для решения задачи из ИДЗ (вариант 30). 6. ПРОМЕЖУТОЧНЫЙ КОНТРОЛЬ При изучении дисциплины «Программирование и алгоритмизация» студенты сдают экзамен в 4-ом семестре (теоретический, лабораторный и практический разделы) дифференцированный зачёт в 5-ом семестре (курсовая работа). 6.1. Вопросы для подготовки к экзамену 1. Основные элементы IDE Delphi. 2. Типы свойств компонентов Delphi. 3. Разновидности методов в Delphi. 4. Преимущества визуального программирования по сравнению с традиционным. 5. Ограничения доступа к разделам public, protected и private при объявлении класса. 6. Понятие «программный продукт». 7. Характерные черты современного этапа развития программирования. 8. «Жизненный цикл» программы. 9. Структуризация в практике программирования. 10. Структурное программирование. 11. Стандартные функциональные блоки (структуры) для получения структурированных программ. 12. Характеристика этапа «Разработка программы». 13. Оформление программы. 14. Тестирование и отладка программы. 15. Метод пошаговой детализации. 16. Объектно-ориентированное программирование. 17. Понятие класса и объекта. 18. Синтаксис и пример класса. 19. Объявление переменных типа класс. 20. Назначение конструктора в Object Pascal. 21. Понятие метода в Object Pascal. 22. Синтаксис объявления конструктора. 23. Деструктор. Назначение, синтаксис объявления. 24. Классовые процедуры и функции. Синтаксис объявления. 25. Реализация методов. Неявный оператор with self do. 26. Правило согласованности работы конструктора и деструктора. 27. Вызов методов. 28. Синтаксис вызова конструктора. 26 29. Синтаксис для вызова метода класса. 30. Полностью квалифицированное имя метода. Использование with. 31. Синтаксис для вызова деструктора. 32. Методы для доступа к полям. Преимущества их использования. 33. Объект Canvas. 34. Наиболее употребительные свойства класса TCanvas. 35. Наиболее употребительные методы Canvas. 36. Понятие исключения. 37. Технология использования исключения. 38. Конструкция try - finally: синтаксис, назначение и использование. 39. Конструкция try - except: синтаксис, назначение и использование. 40. Вложенные обработчики исключений. Пример экзаменационного билета для студентов классической формы заочного обучения: 1. Разновидности методов в Delphi. 2. Объект Canvas. 3. Дана матрица целых чисел А[N,N]. Определить номер строки, в которой сумма элементов минимальна. (Написать текст программы). Пример экзаменационного билета для студентов, выбравших дистанционные обучающие технологии (ДОТ). Билет включает 20 заданий: 1. Основная идея процедурного программирования (выбрать вариант ответа) 1. решение задачи оформить в виде подпрограммы 2. подобрать для решения задачи подходящую подпрограмму 3. определить, какие именно подпрограммы будут использоваться в программе 4. разработать для подпрограммы наилучший алгоритм 2. Основная идея объектно-ориентированного программирования (выбрать вариант ответа) 1. облегчить создание приложений путём использования компонентов 2. уменьшение времени разработки приложений 3. сократить объём повторного написания кода за счёт механизма наследования 27 4. связать данные с обрабатывающими их процедурами в единое целое – объект 3. Составная часть интегрированной среды разработчика Delphi, в которую входит панель (линейка) инструментов (выбрать вариант ответа) 1. главное окно 2. инспектор объекта 3. дизайнер форм 4. менеджер проекта 5. редактор кода 4. Раздел объявления класса, к которому имеют доступ только классы-потомки 1. security 2. public 3. protected 4. private 5. all 5. Заполнить пропуск. Объявление __________ имеет три возможных раздела, которые определяют доступность полей и методов: private, protected, public. 1. переменных 2. модулей 3. заголовков 4. интерфейсов 5. классов 6. Заполнить пропуск. _____________ аналогичны самостоятельным функциям, за исключением того, что они присоединены к классу и вызываются только через объект. 1. Классовые функции 2. Классовые процедуры 3. Методы-процедуры 4. Конструкторы 5. Деструкторы 6. Методы-функции 28 7. Наиболее эффективное средство облегчения понимания программы 1. комментирование 2. варьирование 3. архивирование 4. транскрипция 5. инсталляция 8. Заполнить пропуск. Идеи структурного программирования требуют как можно реже применять в программе оператор ___________. 1. цикла 2. if 3. case 4. перехода 5. присваивания 9. Виды программного обеспечения (выбрать несколько вариантов ответа) 1. оперативное 2. прикладное 3. структурное 4. системное 5. визуальное 10.Составные части основного окна IDE Delphi (выбрать несколько вариантов ответа) 1. Инспектор объектов 2. Панель инструментов 3. Менеджер проекта 4. Палитра компонентов 5. Редактор кода 11.Способы вызова классовой функции (выбрать несколько вариантов ответа) 1. через объект 2. через процедуру 3. через класс 4. через поле 5. через свойство 29 12.Стандартные логические структуры, применяемые для составления хорошо структурированных программ (выбрать несколько вариантов ответа) 1. Следование 2. Переход 3. Ветвление 4. Присваивание 5. Повторение (цикл) 13.Порядок выполнение операций при создании проекта в Delphi (указать последовательность) 1. Компиляция 2. Установление свойств 3. Размещение компонентов на форме 4. Выполнение 5. Отладка 14.Последовательность действий при намерении создать приложение для черчения фигуры (указать последовательность) 1. Активизировать событие OnPaint 2. Создать новый проект 3. Набрать код 4. Перейти на страницу Events (События) 15.Последовательность появления терминов и разделов в структуре реализации деструктора (указать последовательность) 1. ИмяДеструктора 2. Destructor 3. Параметры 4. Локальные объявления 5. Inherited 16.Последовательность появления терминов и разделов в структуре реализации классовой процедуры (указать последовательность) 1. Procedure 2. Исполняемые операторы 3. Параметры 4. class 5. Имя процедуры 30 17.Установите соответствие между парадигмами программирования и языками программирования 1. Процедурное программирование 2. Логическое программирование 3. Модульное программирование 4. Объектно-ориентированное программирование 1. Delphi 2. Fortran 3. Pascal 4. Prolog 18.Установите соответствие между наименованием символа и его графическим представлением 1. Граница цикла (конец) 2. Процесс 3. Данные 4. Дисплей 1 2 3 4 . . . . 19.Вычислить количество тестовых проверок, если программа тестируется как единое целое (дать краткий ответ) 20. Вычислить количество тестовых проверок, если каждый модуль тестируется автономно (дать краткий ответ) 31 Аттестационная оценка курсовой работы учитывает функциональную полноту и качество решения поставленных задач, качество оформления отчёта, степень соблюдения стандартов, рекомендаций настоящих методических указаний и непосредственно саму защиту работы (ответы на вопросы преподавателя, уровень понимания и владения представленными программами…). 7. УЧЕБНО-МЕТОДИЧЕСКОЕ ОБЕСПЕЧЕНИЕ ДИСЦИПЛИНЫ Основная литература 1. Давыдов В.Г. Программирование и основы алгоритмизации. Уч. пособие. – М.: Высш. шк., 2003. – 447 с. 2. Сухарев М. Delphi. Полное руководство. Включая версию 2010. – СПб.: Наука и техника, 2010. – 1035 с. 3. Фаронов В.В. Delphi. Программирование на языке высокого уровня: Уч. для вузов. – СПб.: Питер, 2009. – 640 с. 4. Истомин Е.П., Неклюдов С.Ю. Программирование на языках высокого уровня. Уч. – СПб: Изд-во Михайлова В.А., 2003. – 719 с. Дополнительная литература 5. Бобровский С.И. Delphi 7: Учебный курс. – СПб.: Питер, 2008. – 736 с. 6. Культин Н.Б. Delphi в задачах и примерах. – СПб.: БХВ-Петербург, 2007. – 288 с. 7. Архангельский А.Я. Программирование в Delphi: учебник по классическим версиям Delphi. – М.: Бином, 2008. – 804 с. 8. Фленов М.Е. Библия Delphi. – СПб.: БХВ-Петербург, 2009. – 799 с. 9. Голованов М.Е., Веселов Е.О. Создание компонентов в среде Delphi. – БХВ-Петербург, 2004. – 320 с. 10. Фаронов В.В. Паскаль и Windows. - М.:МВТУ-ФЕСТО Дидактик, 1995. – 639 с. 11. Программирование и алгоритмизация. Методические указания к лабораторным работам для студентов ИДО, обучающихся по направлению 220700 «Автоматизация технологических процессов и произ32 водств» ИДО / Сост. Н.М. Семёнов. – Томск: Изд-во ТПУ, 2012. – 86 с. Учебно-методические пособия 12. Семёнов Н.М. (составитель). Программирование и основы алгоритмизации. Учебное пособие. – Томск: Изд-во ТПУ, 2009. – 90 с. 13. Программирование и алгоритмизация: Метод. указ. и задания к курсовой работе студентов направления 220700 «Автоматизация технологических процессов и производств» ИДО/Сост. Н. М. Семёнов.– Томск: Изд. ТПУ, 2012. – 44 с. Internet-ресурсы 14. Сайт кафедры интегрированных компьютерных систем управления ТПУ http://portal.tpu.ru/departments/kafedra/iksu/ucheb_rabota 15. Сайт http://rsdn.ru/article/Delphi7_09.xml. Вальвачев А.Н. и др. Программирование на языке Delphi. Глава 9. Окна диалога. 16. Сайт htpp://beluch.ru/progr/100comp 17. Сайт htpp://hi-intel.ru/800/1.html 33 Учебное издание ПРОГРАММИРОВАНИЕ И АЛГОРИТМИЗАЦИЯ Методические указания и индивидуальные задания Составитель СЕМЁНОВ Николай Михайлович Рецензент кандидат технических наук, доцент кафедры ИКСУ ИК Е.И. Громаков Редактор С.В. Ульянова Компьютерная верстка О.В. Нарожная Отпечатано в Издательстве ТПУ в полном соответствии с качеством предоставленного оригинал-макета Подписано к печати . Формат 60×84/16. Бумага «Снегурочка». Печать Xerox. Усл.печ.л. Х,Х. Уч.-изд.л. Х,Х. Заказ . Тираж экз. Национальный исследовательский Томский политехнический университет Система менеджмента качества Издательства Томского политехнического университета сертифицирована NATIONAL QUALITY ASSURANCE по стандарту BS EN ISO 9001:2008 . 634050, г. Томск, пр. Ленина, 30. Тел./факс: 8(3822)56-35-35, www.tpu.ru 34