Домой / Видео / Визуализация лекции по основам алгоритмизации и программирования. Информатика. Основы алгоритмизации и программирования

Визуализация лекции по основам алгоритмизации и программирования. Информатика. Основы алгоритмизации и программирования

Понятие алгоритма (свойства алгоритма, требования к алгоритму). Формы представления (записи) алгоритма. Базовые алгоритмические конструкции структурного программирования и их представление в виде блок-схем и псевдокода (стандарты, регламентирующие вид блок-схем, типовые конструкции структурного программирования (последовательность, ветвление, цикл, выбор). Обзор инструментальных средств создания блок-схем и структурограмм


2. Парадигмы и языки программирования (презентация)
Понятие парадигмы (стиля) программирования. Императивное программирование (машинный код, язык ассемблера, структурное, процедурное, модульное). Декларативное программирование (функциональное, логическое). Объектно-ориентированное программирование. Примеры классификации языков программирования. Структура языка программирования. Составляющие языка программирования высокого уровня (алфавит, синтаксис, семантика). Понятие о формальных грамматиках и синтаксических диаграммах. Характеристики ЯП и их влияние на критерии оценки программного обеспечения. Развитие языков программирования


Основные подходы к генерации кода для программ на языках высокого уровня. Способы трансляции (интерпретация, компиляция, динамическая (JIT) компиляция). Этапы трансляции (препроцессинг, компиляция, связывание). Компиляция программы. Структура компилятора. Этапы компиляции (лексический анализ, синтаксический анализ, семантический анализ, оптимизация, генерация кода). Инструментальные средства для создания и отладки программ на языках высокого уровня. Минимальный набор средств разработки. Расширенный набор средств разработки. Интегрированная среда разработки (IDE, IDDE). Онлайн-компиляторы


Структура типовой программы на языке C. Основы препроцессинга, подключение файлов, описание констант

ВИДЕО НЕТ

5. Базовые типы данных. Переменные. Константы (презентация)
Типы данных и переменные (понятие и классификация типов данных, базовые (простые) типы данных, описание переменных, отличие типа данных от переменной, инициализация переменных при объявлении). Область видимости и время жизни переменных. Описание констант. Приведение (преобразование) типов

Операторы и операции в языке С (унарные операции, бинарные операции, тернарные операции). Понятие о «ленивых вычислениях» в логических выражениях. Порядок вычисления выражений. Приоритеты операций

Организация ввода/вывода в языке С. Форматированный вывод (функция printf() и спецификаторы форматов для вывода данных различного типа, модификаторы формата). Форматированный вывод (функция scanf() и спецификаторы форматов для ввода данных различного типа, модификаторы формата).

Операторы ветвлений (Условный оператор, Оператор выбора (переключатель), Тернарный оператор). Операторы циклов (Цикл с предусловием, Цикл с постусловием, Цикл по счетчику). Основные операторы переходов (Оператор прерывания цикла, Оператор продолжения цикла, Оператор перехода и метки)

Понятие массива, Описание массива и доступ к элементам массива, Использование цикла при работе с массивами). Указатели (Понятие адреса и значения, Операции с указателями ("разыменование", взятие адреса переменной, арифметические операции), Указатели и массивы, преимущества и недостатки использования указателей для работы с массивами, Тип void). Символьные строки (Представление в памяти, Специализированные функции для ввод/вывода строк и символов, Библиотечные функции для работы со строками.

Алгоритмом называется строго определенное и понятное предписание исполнителю совершить последовательность действий, направленных на решение поставленной задачи.

Термин «алгоритм» происходит от латинской формы имени среднеазиатского математика Аль-Хорезми – Algorithmi. Алгоритм является одним из основных понятий информатики и математики.

Исполнителем алгоритма предстает некоторая абстрактная или реальная (техническая, биологическая или биотехническая) система, которая способна выполнить действия, предписываемые алгоритмом.

Для характеристики исполнителя используют несколько понятий:

среда;

система команд;

элементарные действия;

отказы.

Среда (или обстановка) представляет собой «место обитания» исполнителя.

Любой из исполнителей может выполнять команды только из некоторого строго заданного списка, который является системой команд исполнителя. Для каждой команды задаются условия применимости (в каких состояниях среды может быть выполнена команда) и приводятся результаты выполнения команды.

После вызова команды исполнитель производит соответствующее элементарное действие.

Может возникнуть и отказ исполнителя в случае, если команда вызывается при недопустимом для нее состоянии среды. Чаще всего исполнитель ничего не знает о цели алгоритма. Он выполняет все предложенные ему действия, не задавая вопросов «почему» и «зачем».

В информатике универсальным исполнителем алгоритмов является компьютер.

К основным свойствам алгоритмов относятся:

1) понятность для исполнителя – исполнитель алгоритма должен знать, как его выполнять;

2) дискретность (прерывность, раздельность) – алгоритм должен представлять процесс решения задачи как последовательное исполнение простых (или ранее определенных) шагов (этапов);

3) определенность – каждое правило алгоритма должно быть четким, однозначным и не оставлять места для произвола. Это свойство обеспечивает выполнение алгоритма механически, не требуя никаких дополнительных указаний или сведений о решаемой задаче;

4) результативность (или конечность) – алгоритм должен приводить к решению задачи за конечное число шагов;

5) массовость – алгоритм решения задачи производится в общем виде, т. е. его можно будет применять для некоторого класса задач, различающихся лишь исходными данными. При этом исходные данные могут выбираться из определенной области, которая называется областью применимости алгоритма.

На практике чаще всего встречаются следующие формы представления алгоритмов:

словесная – записывается на естественном языке;

графическая – с помощью изображения из графических символов;

псевдокоды – полуформализованные описания алгоритмов на некотором условном алгоритмическом языке, которые включают в себя как элементы языка программирования, так и фразы естественного языка, общепринятые математические обозначения и др.;

программная – тексты на языках программирования.

Словесный способ записи алгоритмов является описанием последовательных этапов обработки данных. Алгоритм может быть задан в произвольном изложении на естественном языке. Например, алгоритм нахождения наибольшего общего делителя двух натуральных чисел можно представить как следующую последовательность действий:

1) задание двух чисел;

2) если числа равны, то выбор любого из них в качестве ответа и остановка, в противном случае – продолжение выполнения алгоритма;

3) определение большего из чисел;

4) замена большего из чисел разностью большего и меньшего из чисел;

5) повтор алгоритма с шага 2.

Приведенный алгоритм используется для любых натуральных чисел и должен приводить к решению поставленной задачи.

Словесный способ не имеет широкого распространения, так как обладает некоторыми недостатками:

данные описания строго не формализуемы;

отличаются многословностью записей;

допускают неоднозначность толкования отдельных предписаний.

Графический способ представления алгоритмов оказывается более компактным и наглядным по сравнению со словесным. При данном виде представления алгоритм изображается в виде последовательности связанных между собой функциональных блоков, каждый из которых соответствует выполнению некоторого числа действий.

Для графического представления алгоритм использует изображение в виде последовательности связанных между собой функциональных блоков, каждый из которых соответствует выполнению одного или нескольких действий. Это графическое представление называется схемой алгоритма, или блок-схемой.

В блок-схеме каждый из типов действий (ввод исходных данных, вычисление значений выражений, проверка условий, управление повторением действий, окончание обработки и т. п.) соответствует геометрической фигуре, представленной в виде блочного символа. Блочные символы соединены линиями переходов, которые определяют очередность выполнения действий.

Псевдокод является системой обозначений и правил, которая предназначена для единообразной записи алгоритмов. Он занимает промежуточное место между естественным и формальным языками. С одной стороны, псевдокод похож на обычный естественный язык, поэтому алгоритмы могут на нем записываться и читаться как обычный текст. С другой стороны, в псевдокоде используются некоторые формальные конструкции и математическая символика, благодаря чему запись алгоритма приближается к общепринятой математической записи.

В псевдокоде не применяются строгие синтаксические правила для записи команд, которые присущи формальным языкам, что облегчает запись алгоритма на стадии его проектирования и дает возможность использовать более широкий набор команд, рассчитанный на абстрактного исполнителя. Однако в псевдокоде чаще всего имеются некоторые конструкции, присущие формальным языкам, что облегчает переход от записи на псевдокоде к записи алгоритма на формальном языке. Например, в псевдокоде, также каки в формальных языках, существуют служебные слова, смысл которых определен раз и навсегда. Их выделяют в печатном тексте жирным шрифтом, а в рукописном тексте подчеркивают. Единый или формальный подход к определению псевдокода не существует, поэтому используются различные псевдокоды, отличающиеся набором служебных слов и основных (базовых) конструкций.

Программная форма представления алгоритмов иногда характеризуется некоторыми структурами, состоящими из отдельных базовых (основных) элементов. При данном подходе к алгоритмам изучение основных принципов их конструирования следует начинать с этих базовых элементов. Их описание осуществляется с использованием языка схем алгоритмов и алгоритмического языка.

9.2. Системы программирования

Машинно-ориентированные языки относятся к машинно-зависимым языкам программирования. Основные конструктивные средства таких языков позволяют учитывать особенности архитектуры и принципов работы определенной ЭВМ, т. е. они имеют те же возможности и требования к программистам, что и машинные языки. Однако в отличие от последних они требуют предварительной трансляции на машинный язык составленных с их помощью программ.

Данными видами языков программирования могут быть: автокоды, языки символического кодирования и ассемблеры.

Для машинно-независимых языков не требуется полного знания специфики компьютеров. С их помощью можно записывать программу в виде, допускающем ее реализацию на ЭВМ с различными типами машинных операций, привязка к которым возлагается на соответствующий транслятор.

Причина бурного развития и применения высокоуровневых языков программирования заключается в быстром росте производительности ЭВМ и хронической нехватке программистских кадров.

Промежуточное место между машинно-независимыми и машинно-зависимыми языками отводится языку Си. Он создавался при попытке объединения достоинств, присущих языкам обоих классов. Данный язык обладает рядом особенностей:

максимально использует возможности конкретной вычислительной архитектуры; из-за этого программы на языке Си компактны и работают эффективно;

позволяет налучшим образом использовать огромные выразительные средства современных языков высокого уровня.

Языки разделяют на процедурно-ориентированные и проблемно-ориентированные.

Процедурно-ориентированные языки, например Фортран, Кобол, Бейсик, Паскаль, наиболее часто используются для описания алгоритмов решения широкого класса задач.

Проблемно-ориентированные языки, в частности РПГ, Лисп, АПЛ, GPSS, применяются для описания процессов обработки информации в более узкой, специфической области.

Объектно-ориентированные языки программирования позволяют разрабатывать программные приложения для большого круга разнообразных задач, имеющих общность в реализуемых компонентах.

Рассмотрим методы использования языков программирования.

Интерпретация представляет собой пооператорную трансляцию и последующее выполнение оттранслированного оператора исходной программы. Существует два основных недостатка метода интерпретации:

1) интерпретирующая программа должна располагаться в памяти ЭВМ на протяжении всего процесса выполнения исходной программы. Другими словами, она должна занимать некоторый установленный объем памяти;

2) процесс трансляции одного и того же оператора повторяется такое число раз, которое должна исполнять эта команда в программе. Это приводит к резкому снижению производительности работы программы.

Трансляторы-интерпретаторы являются достаточно распространенными, так как они поддерживают диалоговый режим.

Процессы трансляции и выполнения при компиляции разделяются во времени: сначала исходная программа в полном объеме переводится на машинный язык, после чего оттранслированная программа может многократно исполняться. Для трансляции методом компиляции необходим неоднократный «просмотр» транслируемой программы, т. е. трансляторы-компиляторы являются многопроходными. Трансляция методом компиляции носит название объектного модуля, который представляет собой эквивалентную программу в машинных кодах. Необходимо, чтобы перед исполнением объектный модуль обрабатывался специальной программой ОС и преобразовывался в загрузочный модуль.

Применяют также трансляторы интерпретаторы-компиляторы, объединяющие в себе достоинства обоих принципов трансляции.

9.3. Классификация языков программирования высокого уровня

Высокоуровневые языки используются в машинно-независимых системах программирования. Такие системы программирования в сравнении с машинно-ориентированными системами предстают более простыми в использовании.

Языки программирования высокого уровня подразделяют на процедурно-ориентированные, проблемно-ориентированные и объектно-ориентированные.

Процедурно-ориентированные языки применяются для записи процедур или алгоритмов обработки информации на каждом определенном круге задач. К ним относятся:

а) язык Фортран (Fortran), название которого происходит от слов Formulae Translation – «преобразование формул». Фортран представляет собой один из старейших языков программирования высокого уровня. Длительность его существования и применения можно объяснить простотой структуры данного языка;

б) язык Бейсик (Basic), который расшифровывается как Beginner"s All-purpose Symbolic Instruction Code, что в переводе означает – «многоцелевой символический обучающий код для начинающих», разработан в 1964 г. как язык для обучения программированию;

в) язык Си (С), применяемый с 1970-х гг. как язык системного программирования специально для написания ОС UNIX. В 1980-е гг. на основе языка С был разработан язык C++, практически включающий в себя язык С и дополненный средствами объектно-ориентированного программирования;

г) язык Паскаль (Pascal), который назван в честь французского ученого Б. Паскаля, начал применяться с 1968–1971 гг. Н. Виртом. При создании Паскаль использовался для обучения программированию, но со временем стал широко применяться для разработки программных средств в профессиональном программировании.

Проблемно-ориентированные языки используются для решения целых классов новых задач, возникших в связи с постоянным расширением области применения вычислительной техники:

а) язык Лисп (Lisp – List Information Symbol Processing), который был изобретен в 1962 г. Дж. Маккарти. Первоначально он применялся как средство для работы со строками символов. Лисп употребляется в экспертных системах, системах аналитических вычислений и т. п.;

б) язык Пролог (Prolog – Programming in Logic), используемый для логического программирования в системах искусственного интеллекта.

Объектно-ориентированные языки развиваются и в настоящий момент. Большинство из этих языков являются версиями процедурных и проблемных языков, но программирование с помощью языков этой группы является более наглядным и простым. К наиболее часто употребляемым языкам относятся:

а) Visual Basic (~ Basic);

б) Delphi (~ Pascal);

в) Visual Fortran (~ Fortran);

д) Prolog++ (~ Prolog).

9.4. Система VBA

Система VBA представляет собой подмножество VB и вклю – чает себя средства образования приложений VB, его структуры данных и управляющие структуры, дающие возможность создавать пользовательские типы данных. Так же как и VB, VBA – является системой визуального программирования, управляемого событиями. В ней имеется возможность создания форм со стандартным набором элементов управления и написания процедур, обрабатывающих события, которые возникают при тех или иных действиях системы и конечного пользователя. Также она позволяет использовать элементы ActiveX и автоматизации. Система VBA представляет собой полноценную систему программирования, но не имеет полного набора возможностей, которыми обладает последняя версия VB.

Программирование в среде VBA обладает рядом особенностей. В частности, в ней нельзя создавать проект независимо от этих приложений.

Из-за того что VBA является визуальной системой, программист способен создавать видимую часть приложения, которая является основой интерфейса «программа – пользователь». Благодаря этому интерфейсу производится взаимодействие пользователя с программой. На принципах объектно-ориентированного подхода, который реализуется в VBA применительно к приложениям, выполняемым под управлением Windows, разрабатывается программный интерфейс.

Характерным для данных приложений является то, что на экране в любой момент присутствует множество объектов (окон, кнопок, меню, текстовых и диалоговых окон, линеек прокрутки). С учетом алгоритма программы пользователь обладает определенной свободой выбора относительно использования этих объектов, т. е. он может сделать щелчок по кнопке, перенести объект, ввести данные в окно и т. п. При создании программы программист не должен ограничивать действия пользователя, он должен разрабатывать программу, правильно реагирующую на любое действие пользователя, даже некорректное.

Для любого объекта определяется ряд возможных событий. Одни события обусловлены действиями пользователя, например одинарным или двойным щелчком мыши, переносом объекта, нажатием клавиши клавиатуры и т. п. Некоторые события происходят в результате свершения других событий: окно открывается или закрывается, элемент управления становится активным или теряет активность.

Любое из событий проявляется в определенных действиях программы, а виды возможных действий можно разделить на две группы. Действия первой группы являются следствием свойств объекта, устанавливающихся из некоторого стандартного перечня свойств, которые задаются системой программирования VBA и самой системой Windows, например свертывание окна после щелчка по кнопке Свернуть. Вторую группу действий на события может определить только программист. Для любого возможного события отклик обеспечивается созданием процедуры VBA. Теоретически возможно создать процедуру для каждого события, но практически программист заполняет кодом процедуры только для событий, представляющих в данной программе интерес.

Объекты VBA являются функциональными, т. е. они действуют определенным образом и способны откликаться на конкретные ситуации. Внешний вид объекта и его поведение влияют на его свойства, а методы объекта определяют функции, которые способен выполнять данный объект.

Свойствами-участниками являются свойства, которые задают вложенные объекты.

Объекты способны реагировать на события – инициируемые пользователем и генерируемые системой. События, инициируемые пользователем, появляются, например, при нажатии клавиши, щелчка кнопками мыши. Исходя из этого любое действие пользователя может привести к целому набору событий. События, генерируемые системой, проявляются автоматически в случае, предусмотренном программным обеспечением компьютера.

9.5. Язык программирования VBA

Язык программирования VBA предназначен для написания кода программы. Он обладает своим алфавитом, который включает в себя:

строчные и прописные буквы латинского алфавита (А, B....,Z,a,b....,z);

строчные и прописные буквы кириллицы (А-Я, а-я);

неотображаемые символы, используемые для отделения лексем (лексических единиц) друг от друга;

специальные символы, участвующие в построении конструкций языка: +-*?^=><():{}" &©;

цифры от 0 до 9;

символ подчеркивания «_»;

составные символы, воспринимаемые как один символ: <=, >=, <>.

Лексема является единицей текста программы, которая имеет определенный смысл для компилятора и не может быть разбита в дальнейшем.

Программный код VBA – это последовательность лексем, записанных в соответствии с принятыми синтаксическими правилами, которая реализует нужную семантическую конструкцию.

Идентификатор представляет собой последовательность букв, цифр и символов подчеркивания.

Система VBA определяет некоторые ограничения, которые накладываются на имена:

1) имя следует начинать с буквы;

2) имя не должно включать в себя точки, пробелы, разделительные символы, знаки операций, специальные символы;

3) имя должно быть уникальным и не совпадать с зарезервированными словами VBA или другими именами;

4) длина имени не должна превышать 255 символов;

5) при составлении имен необходимо соблюдать соглашения по стилю;

6) идентификатор должен ясно отражать назначение переменной для понимания программы;

7) в именах лучше применять строчные буквы; если имена включают в себя несколько названий, их нужно отделять друг от друга подчеркиванием или начинать новое слово с прописной буквы;

8) имена констант следует составлять из прописных букв;

9) название идентификатора необходимо начинать со специального знака, указывающего на тип данных, связанный с этим идентификатором.

Переменные являются объектами, которые предназначены для хранения данных. Перед применением переменных в программе необходимо их объявлять (декларировать). Правильный выбор типа переменной обеспечивает эффективное использование памяти компьютера.

Строковые переменные могут быть переменной и фиксированной длины.

Объекты, значения которых не изменяются и не могут быть изменены во время выполнения программы, носят название констант. Их подразделяют на именованные и неименованные.

Перечни используются для декларации группы констант, объединенных общим именем, к тому же они могут быть объявлены только в разделе глобальных объявлений модуля или формы.

Переменные подразделяют на два вида – простые и переменные структурного вида. Массивы бывают одномерными и многомерными.

После декларации значение переменной может оказаться произвольным. Для присвоения переменной необходимого значения применяется операция присваивания.

Математические операции используются для записи формулы, представляющей собой программный оператор, который содержит числа, переменные, операторы и ключевые слова.

Операции отношения могут привести к появлению значения, причем существуют только два результирующих значения: истина и ложно.

Логические операции используются в логических выражениях, это происходит при существовании нескольких условий выбора в операциях отношения.

Операции для работы со строками – это операции конкатенации, которые позволяют объединить значения двух или нескольких строковых переменных или строковых констант. Результатом такой операции является более длинная строка, составленная из исходных строк.

Западно-Казахский Аграрно-Технический университет Жангир-хана

Кафедра: «Информатики»

Основы алгоритмизации

Подготовил: Иванов П.

Проверил: Кухта В.С.

Уральск 2010


1.Понятие алгоритма и его свойства

2.Способы описания алгоритмов

3.Основные структурные алгоритмические конструкции

4. Список литературы

Понятие алгоритма и его свойства

Алгоритм – описанная на некотором языке точная конечная система правил, определяющая содержание и порядок действий над некоторыми объектами, строгое выполнение которых дает решение поставленной задачи. Понятие алгоритма, являющееся фундаментальным в математике и информатике, возникло задолго до появления средств вычислительной техники. Слово «алгоритм» появилось в средние века, когда европейцы познакомились со способами выполнения арифметических действий в десятичной системе счисления; описанными узбекским математиком Муххамедом бен Аль-Хорезми («аль-Хорезми» - человек из города Хорезми; в настоящее время город Хива в Хорезмской области Узбекистана). Слово алгоритм – есть результат европейского произношения слов аль-Хорезми. Первоначально под алгоритмом понимали способ выполнения арифметических действий над десятичными числами. В дальнейшем это понятие стали использовать для обозначения любой последовательности действий, приводящей к решению поставленной задачи.

Любой алгоритм существует не сам по себе, а предназначен для определенного исполнителя (человека, робота, компьютера, языка программирования и т.д.). Свойством, характеризующим любого исполнителя, является то, что он умеет выполнять некоторые команды. Совокупность команд, которые данный исполнитель умеет выполнять, называется системой команд исполнителя. Алгоритм описывается в командах исполнителя, который будет его реализовывать. Объекты, над которыми исполнитель может совершать действия, образуют так называемую среду исполнителя. Исходные данные и результаты любого алгоритма всегда принадлежат среде того исполнителя, для которого предназначен алгоритм.

Значение слова «алгоритм» очень схоже со значениями слов «рецепт», «метод», «процесс». Однако, в отличие от рецепта или процесса, алгоритм характеризуется следующими свойствами: дискретностью, массовостью, определенностью, результативностью, формальностью.

Дискретность(разрывность – противоположно непрерывности) – это свойство алгоритма, характеризующее его структуру: каждый алгоритм состоит из отдельных законченных действий, говорят: «Делится на шаги».

Массовость – применимость алгоритма ко всем задачам рассматриваемого типа, при любых исходных данных. Например, алгоритм решения квадратного уравнения в области действительных чисел должен содержать все возможные исходы решения, т.е., рассмотрев значения дискриминанта, алгоритм находит либо два различных корня уравнения, либо два равных, либо делает вывод о том, что действительных корней нет.

Определенность(детерминированность, точность) - свойство алгоритма, указывающее на то, что каждый шаг алгоритма должен быть строго определен и не допускать различных толкований; также строго должен быть определен порядок выполнения отдельных шагов. Помните сказку про Ивана-царевича? «Шел Иван-царевич по дороге, дошел до развилки. Видит большой камень, на нем надпись: «Прямо пойдешь - голову потеряешь, направо пойдешь - жену найдешь, налево пойдешь – разбогатеешь». Стоит Иван и думает, что дальше делать». Таких инструкций алгоритм содержать не может.

Результативность – свойство, состоящее в том, что любой алгоритм должен завершаться за конечное (может быть очень большое) число шагов. Вопрос о рассмотрении бесконечных алгоритмов остается за рамками теории алгоритмов.

Формальность – это свойство указывает на то, что любой исполнитель, способный воспринимать и выполнять инструкции алгоритма, действует формально, т.е. отвлекается от содержания поставленной задачи и лишь строго выполняет инструкции. Рассуждать «что, как и почему?» должен разработчик алгоритма, а исполнитель формально (не думая) поочередно исполняет предложенные команды и получает необходимый результат.

Способы описания алгоритмов

Рассмотрим следующие способы описания алгоритма: словесное описание, псевдокод, блок-схема, программа.

Словесноеописание представляет структуру алгоритма на естественном языке. Например, любой прибор бытовой техники (утюг, электропила, дрель и т.п.) имеет инструкцию по эксплуатации, т.е. словесное описания алгоритма, в соответствии которому данный прибор должен использоваться.

Никаких правил составления словесного описания не существует. Запись алгоритма осуществляется в произвольной форме на естественном, например, русском языке. Этот способ описания не имеет широкого распространения, так как строго не формализуем (под «формальным» понимается то, что описание абсолютно полное и учитывает все возможные ситуации, которые могут возникнуть в ходе решения); допускает неоднозначность толкования при описании некоторых действий; страдает многословностью.

Псевдокод - описание структуры алгоритма на естественном, частично формализованном языке, позволяющее выявить основные этапы решения задачи, перед точной его записью на языке программирования. В псевдокоде используются некоторые формальные конструкции и общепринятая математическая символика.

Строгих синтаксических правил для записи псевдокода не существует. Это облегчает запись алгоритма при проектировании и позволяет описать алгоритм, используя любой набор команд. Однако в псевдокоде обычно используются некоторые конструкции, присущие формальным языкам, что облегчает переход от псевдокода к записи алгоритма на языке программирования. Единого или формального определения псевдокода не существует, поэтому возможны различные псевдокоды, отличающиеся набором используемых слов и конструкций.

Блок-схема – описание структуры алгоритма с помощью геометрических фигур с линиями-связями, показывающими порядок выполнения отдельных инструкций. Этот способ имеет ряд преимуществ. Благодаря наглядности, он обеспечивает «читаемость» алгоритма и явно отображает порядок выполнения отдельных команд. В блок-схеме каждой формальной конструкции соответствует определенная геометрическая фигура пли связанная линиями совокупность фигур.

Рассмотрим некоторые основные конструкции, использующиеся для построения блок-схем алгоритмов программ, регламентированные ГОСТ 19.701-90.

Блок, характеризующий начало/конец алгоритма (для подпрограмм - вызов/возврат)

Блок - процесс, предназначенный для описания отдельных действий

Блок - Предопределенный процесс, предназначенный для обращения к вспомогательным алгоритмам (подпрограммам)

Блок - ввода/вывода с неопределенного носителя или описания исходных данных


Блок - решение (проверка условия или условный блок)

Блок - границы цикла, описывающий циклические процессы типа: «цикл с предусловием», «цикл с постусловием»

Соединительные блоки

Описания алгоритма в словесной форме, на псевдокоде или в виде блок-схемы допускают некоторый произвол при изображении команд. Вместе с тем она настолько достаточна, что позволяет человеку понять суть дела и исполнить алгоритм. На практике исполнителями алгоритмов выступают компьютеры. Поэтому алгоритм, предназначенный для исполнения на компьютере, должен быть записан на «понятном» ему языке, такой формализованный язык называют языком программирования.

Программа – описание структуры алгоритма на языке алгоритмического программирования.

Основные структурные алгоритмические конструкции

Элементарные шаги алгоритма можно объединить в следующие алгоритмические конструкции: линейные (последовательные), разветвляющиеся, циклические с предусловием и циклические с постусловием. Любой алгоритм можно составить, используя эти четыре алгоритмические конструкции.

Линейнойназывают алгоритмическую конструкцию, реализованную в виде последовательности действий (шагов), в которой каждое действие (шаг) алгоритма выполняется ровно один раз, причем после каждого i-го действия (шага) выполняется (i+1)-е действие (шаг), если i-е действие - не конец алгоритма.

Разветвляющейся(иливетвящейся) называется алгоритмическая конструкция, обеспечивающая выбор между двумя альтернативами в зависимости от значения входных данных. При каждом конкретном наборе входных данных разветвляющийся алгоритм сводится к линейному. Различают неполное (если – то) и полное (если – то – иначе) ветвления. Полное ветвление позволяет организовать две ветви в алгоритме (то или иначе), каждая из которых ведет к общей точке их слияния, так что выполнение алгоритма продолжается независимо от того, какой путь был выбран (рис. 1). Неполное ветвление предполагает наличие некоторых действий алгоритма только на одной ветви (то), вторая ветвь отсутствует, т.е. для одного из результатов проверки никаких действий выполнять не надо, управление сразу переходит к точке слияния.

Рис. 1. Полное ветвление

Циклической (или циклом) называют алгоритмическую конструкцию, в которой некая, идущая подряд группа действий (шагов) алгоритма можем выполняться несколько раз, в зависимости от входных данных или условия задачи. Группа повторяющихся действий на каждом шагу цикла называется телом цикла. Любая циклическая конструкция содержит в себе элементы ветвящейся алгоритмической конструкции.

Тема 1.3: Системное программное обеспечение

Тема 1.4: Сервисное программное обеспечение и основы алгоритмизации

Введение в экономическую информатику

1.4. Сервисное программное обеспечение ПК и основы алгоритмизации

1.4.2. Основы алгоритмизации и языки программирования

Алгоритм и его свойства

Решение задач на компьютере основано на понятии алгоритма. Алгоритм – это точное предписание, определяющее вычислительный процесс, ведущий от варьируемых начальных данных к исходному результату.

Алгоритм означает точное описание некоторого процесса, инструкцию по его выполнению. Разработка алгоритма является сложным и трудоемким процессом. Алгоритмизация – это техника разработки (составления) алгоритма для решения задач на ЭВМ.

Изобразительные средства для описания (представление) алгоритма

Для записи алгоритма решения задачи применяются следующие изобразительные способы их представления:

  1. Словесно- формульное описание.
  2. Блок-схема (схема графических символов).
  3. Алгоритмические языки.
  4. Операторные схемы.
  5. Псевдокод.

Для записи алгоритма существует общая методика:

  1. Каждый алгоритм должен иметь имя, которое раскрывает его смысл.
  2. Необходимо обозначить начало и конец алгоритма.
  3. Описать входные и выходные данные.
  4. Указать команды, которые позволяют выполнять определенные действия над выделенными данными.

Общий вид алгоритма:

  • название алгоритма;
  • описание данных;
  • начало;
  • команды;
  • конец.

Формульно-словесный способ записи алгоритма характеризуется тем, что описание осуществляется с помощью слов и формул. Содержание последовательности этапов выполнения алгоритмов записывается на естественном профессиональном языке предметной области в произвольной форме.

Графический способ описания алгоритма (блок - схема) получил самое широкое распространение. Для графического описания алгоритмов используются схемы алгоритмов или блочные символы (блоки), которые соединяются между собой линиями связи.

Каждый этап вычислительного процесса представляется геометрическими фигурами (блоками). Они делятся на арифметические или вычислительные (прямоугольник), логические (ромб) и блоки ввода-вывода данных (параллелограмм).


Рис. 1.

Порядок выполнения этапов указывается стрелками, соединяющими блоки. Геометрические фигуры размещаются сверху вниз и слева на право. Нумерация блоков производится в порядке их размещения в схеме.

Алгоритмические языки - это специальное средство, предназначенное для записи алгоритмов в аналитическом виде. Алгоритмические языки близки к математическим выражениям и к естественным языкам. Каждый алгоритмический язык имеет свой словарь. Алгоритм, записанный на алгоритмическом языке, выполняется по строгим правилам этого конкретного языка.

Операторные схемы алгоритмов. Суть этого способа описания алгоритма заключается в том, что каждый оператор обозначается буквой (например, А – арифметический оператор, Р – логический оператор и т.д.).

Операторы записываются слева направо в последовательности их выполнения, причем, каждый оператор имеет индекс, указывающий порядковый номер оператора. Алгоритм записывается в одну строку в виде последовательности операторов.

Псевдокод – система команд абстрактной машины. Этот способ записи алгоритма с помощью операторов близких к алгоритмическим языкам.

Принципы разработки алгоритмов и программ

Типы алгоритмических процессов

По структуре выполнения алгоритмы и программы делятся на три вида:

  • линейные;
  • ветвящиеся;
  • циклические;

Линейные вычислительные процессы

Линейный алгоритм (линейная структура) – это такой алгоритм, в котором все действия выполняются последовательно друг за другом и только один раз. Схема представляет собой последовательность блоков, которые располагаются сверху вниз в порядке их выполнения. Первичные и промежуточные данные не оказывают влияния на направление процесса вычисления.

Алгоритмы разветвляющейся структуры

На практике часто встречаются задачи, в которых в зависимости от первоначальных условий или промежуточных результатов необходимо выполнить вычисления по одним или другим формулам.

Такие задачи можно описать с помощью алгоритмов разветвляющейся структуры. В таких алгоритмах выбор направления продолжения вычисления осуществляется по итогам проверки заданного условия. Ветвящиеся процессы описываются оператором IF (условие).


Рис. 2.

Циклические вычислительные процессы

Для решения многих задач характерно многократное повторение отдельных участков вычислений. Для решения таких задач применяются алгоритмы циклической структуры (циклические алгоритмы). Цикл – последовательность команд, которая повторяется до тех пор, пока не будет выполнено заданное условие. Циклическое описание многократно повторяемых процессов значительно снижает трудоемкость написания программ.

Существуют две схемы циклических вычислительных процессов.


Рис. 3.

Особенностью первой схемы является то, что проверка условия выхода из цикла проводится до выполнения тела цикла. В том случае, если условие выхода из цикла выполняется, то тело цикла не выполняется ни разу.

Особенностью второй схемы является то, что цикл выполняется хоты бы один раз, так как первая проверка условия выхода из цикла осуществляется после того, как тело цикла выполнено.

Существуют циклы с известным числом повторений и итерационные циклы. При итерационном цикле выход из тела цикла, как правило, происходит при достижении заданной точности вычисления.

Языки программирования

Языки программирования – это искусственные языки записи алгоритмов для исполнения их на ЭВМ. Программирование (кодирование) - составление программы по заданному алгоритму.

Классификация языков программирования. В общем, языки программирования делятся на две группы: операторные и функциональные. К функциональным относятся ЛИСП, ПРОЛОГ и т.д.

Операторные языки делятся на процедурные и непроцедурные (Smalltalk, QBE). Процедурные делятся на машино - ориентированные и машино – независимые.

К машино – ориентированным языкам относятся: машинные языки, автокоды, языки символического кодирования, ассемблеры.

К машино – независимым языкам относятся:

  1. Процедурно – ориентированные (Паскаль, Фортран и др.).
  2. Проблемно – ориентированные (ЛИСП и др.).
  3. Объектно-ориентированные (Си++, Visual Basic, Java и др.).

Министерство образования Республики Беларусь

УО «Полоцкий государственный университет»

Факультет информационных технологий

Кафедра технологий программирования

КУРСОВАЯ РАБОТА

«Основы алгоритмизации и программирования»

Выполнил:

Хрол Д.А.

Новополоцк 2010

Введение

Решение задачи №1

Решение задачи №2

Решение задачи №3

Решение задачи №4

Решение задачи №5

1 Постановка задачи и выбор метода обработки информации

3 Разработка алгоритма и его описание

4 Описание программы

4.1 Структура программы

4.2 Описание подпрограмм

Заключение и выводы


Введение

С каждым днём программирование становиться всё более популярно среди обычных пользователей, что связано с интенсивным развитием информационных технологий. В начале компьютерной эры программисты были рабами вычислительных машин. Разработчики программного обеспечения должны были писать свои команды на единственном языке, который понимали компьютеры, - в двоичном коде, и программы выглядели как последовательность нулей и единиц. По мере того как время шло, и алгоритмы усложнялись, программирование требовало все больше времени, а внесение изменений в программы и их модернизация становились практически невозможными.

Язык Паскаль относится к процедурно-ориентированным языкам высокого уровня

Достоинства языка Паскаль:

.относительная простота (т.к. разрабатывался с целью обучения программированию);

.идеология языка Паскаль близка к современным методикам и технологиям программирования, в частности, к структурному программированию и нисходящему проектированию (метод пошаговой детализации) программ. Паскаль может использоваться для записи программы на различных уровнях ее детализации, не прибегая к помощи схем алгоритмов;

.гибкие возможности в отношении используемых структур данных;

.высокая эффективность программ;

.наличие средств повышения надежности программ, включающих контроль правильности использования данных различных типов и программных элементов на этапах трансляции, редактирования и выполнения.

В связи с этим язык Паскаль в настоящее время находит самое широкое распространение для решения большого круга разнообразных практических и научных задач.

В рамках курсовой работы необходимо разработать пять программ на различную тематику согласно заданию курсовой работы.

Цели курсовой работы:

разработка программ согласно заданию курсовой работы;

систематизация и закрепление теоретических знаний и практических умений, полученных за время обучения дисциплины «Основы алгоритмизации и программирования».

1. Решение задачи №1

Постановка задачи и выбор метода обработки информации

Первой задачей курсовой работы является вычисление суммы рядя с точностью ε = 10-5:

Значение X вводится с клавиатуры.

Математическая формулировка задачи и выбор метода обработки информации

Для решения данной задачи будет использоваться формула, приведенная ниже:

Программный код

программа паскаль задача алгоритм

var, x2k, s, e, eps: real;: integer;: integer;("X="); readln(x);:= 0; eps:= 0.00001; k:= 0;:= 1; x2k:= 1;:= minus * (-1);k:= x2k * x * x;(k);:= minus * x2k / (2 * k * (2 * k - 1));:= s + e;abs(e) < eps;("S=", s:8:5);.

Рисунок 1. Разработка алгоритма и его описание

Инструкция по эксплуатации программы

Пользователь вводит значение X с клавиатуры. Далее происходят вычисления по заданному алгоритму до значения с точностью, равной 10-5. После нахождения результата сумма выводится на экран.

2. Решение задачи №2

По условию второй задачи в квадратной матрице необходимо поменять местами элементы строки и столбца, на пересечении которых находится минимальный из положительных элементов

Форма представления исходных данных

Данные представлены в виде одномерного массива.

Рисунок 2. Разработка алгоритма и его описание

Описание программы. Структура программы.

Программа состоит из 2 подпрограмм и основной программы. Под программы предназначены для поиска минимального из положительных элементов и для замены элементов строки и столбца, на пересечении которых находится минимальный элемент.

Описание подпрограмм

Подпрограмма MinPosition предназначена для поиска минимального из положительных элементов матрицы:

function MinPosition(a:array of array of integer):string;,j,min:integer;:string;:=60;i:=0 to s doj:=0 to s do(a[i][j]>0) and (a[i][j]

Подпрограмма ReplaceElems предназначена для замены элементов строки и столбца, на пересечении которых находится минимальный элемент:

procedure ReplaceElems(var a:array of array of integer; str, col:integer);,j:integer;j:=0 to s do:=a[j];[j]:=a[j];[j]:=tmp;;;

Инструкция по эксплуатации программы

После запуска программы будет сгенерирована матрица, заполненная случайными числами. После этого на экран будет выведена исходная матрица и матрица, полученная в результате выполнения программы.

3. Решение задачи №3

Постановка задачи и выбор метода обработки информации.

Форма представления исходных данных

Данные представлены в виде матрицы, размер которой необходимо ввести в начале выполнения программы.

Разработка алгоритма и его описание

По условию задачи, массив необходимо отсортировать пирамидальной сортировкой. Сортировка пирамидой использует сортирующее дерево. Сортирующее дерево- это такое двоичное дерево, у которого выполнены условия:

.Каждый лист имеет глубину либо d либо d − 1, d- максимальная глубина дерева.

.Значение в любой вершине больше, чем значения её потомков.

Удобная структура данных для сортирующего дерева- такой массив Array, что Array- элемент в корне, а потомки элемента Array[i]- Array и Array.

Алгоритм сортировки будет состоять из двух основных шагов:

.Выстраиваем элементы массива в виде сортирующего дерева:

[i]>=Array[i]>=Array,

при 1<=i

Этот шаг требует O(n) операций.

2.Будем удалять элементы из корня по одному за раз и перестраивать дерево. То есть на первом шаге обмениваем Array и Array[n], преобразовываем Array, Array, …, Array в сортирующее дерево. Затем переставляем Array и Array, преобразовываем Array, Array, …, Array в сортирующее дерево. Процесс продолжается до тех пор, пока в сортирующем дереве не останется один элемент. Тогда Array, Array, …, Array[n]- упорядоченная последовательность. Сортировка организована в виде подпрограммы PyramidalSort.

Описание программы

Структура программы

Программа состоит из 2 программ и основной части. Подпрограммы предназначены для преобразования элементов в сортирующее дерево и для сортировки элементов.

Описание подпрограмм

Подпрограмма DownHeap предназначена для преобразования элементов в сортирующее дерево:

procedure DownHeap(index, Count: integer; Current: integer);: Integer;index < Count div 2 do:= (index + 1) * 2 - 1;(Child < Count - 1) and (Arr < Arr) then:= Child + 1;Current >= Arr then;:= Arr;:= Child;;:= Current;;

Подпрограмма PyramidalSort предназначена для сортировки дерева:

procedure PyramidalSort(var Arr: mas; Count: integer);: integer;: integer;i:= (Count div 2) - 1 downto 0 do(i, Count, Arr[i]);i:= Count - 1 downto 0 do:= Arr[i]; Arr[i]:= Arr;(0, i, Current);;

Инструкция по эксплуатации программы

Для начала работы программы необходимо указать количество элементов массива. После обработки на экране будет показан исходный массив и массив, полученный в результате работы программы.

4. Решение задачи №4

Постановка задачи и выбор метода обработки информации.

Перед каждым словом исходного предложения напечатать его порядковый номер. Вывести на экран преобразованное предложение. Результат вывести на экран и в текстовый файл.

Форма представления исходных данных

Исходными данными к программе является предложение, представленное в виде последовательности слов и символов.

Рисунок 3. Разработка алгоритма и его описание

Исходный код программы

uses crt;,num:integer;,word,res:string;:text;

writeln("Введите предложение:");

readln(s);:=0;i:=1 to length(s) do(f,output.txt);(f);(s[i]<>" ")then(s[i],word,length(word)+1);length(s)=i then:=res+" "+inttostr(num)+" - "+word;;;(word<>"") then(num);res="" then:=res+" "+inttostr(num)+" - "+word;:=res+" "+inttostr(num)+" - "+word;;:="";; end; end;("Результат выполнения");

writeln(f,res);(f);.

Инструкция по эксплуатации программы

После запуска программы необходимо ввести предложение. В результате выполнения программы на экране будет показано исходное предложение с проставленными перед каждым словом порядковым номерами. Также результат будет записан в файл output.txt.

5. Решение задачи №5

1 Постановка задачи и выбор метода обработки информации

Создать файл, содержащий сведения о пациентах глазной клиники. Структура записи: фамилия пациента, пол, возраст, место проживания (город), диагноз. На экран и в отдельный файл вывести: количество иногородних пациентов, прибывших в клинику; список пациентов старше X лет с диагнозом Y. Значения X и Y ввести с клавиатуры. Программа должна выполнять следующие дополнительные функции: создание новой базы данных; открытие базы из файла; сохранение базы в файл; добавление записей; удаление записей; поиск записей по одному из полей; сортировку по одному из полей методом, указанным в задаче 3; вывод базы данных на экран; выход из программы. Для реализации основных действий алгоритма использовать подпрограммы. Для обработки записей реализовать динамическую структуру данных односвязный список.

2 Форма представления исходных данных

Исходными данными к программе являются сведения о пациентах глазной поликлиники.

3 Разработка алгоритма и его описание

Программа реализована в виде ряда мелких подпрограмм, каждая из которых соответствует одной из функций (создание базы, сохранение базы, добавление записи, удаление записи, удаление всех записей, поиск записей, сортировка записей, формирование отчета, выход из программы).

Рисунок 4

4 Описание программы

4.1 Структура программы

Структуру программы можно представить в виде процедур и функций, выполняющих определённые действия. В программе предусмотрено создание отчета. Сортировка записей производится пирамидальным методом.

4.2 Описание подпрограмм

С помощью процедуры slist_add можно добавлять данные о пациентах в базу:

procedure slist_add(var q: pslist; a: tclient);, n: pslist;:= q;l <> nil then while l^.o <> nil do l:= l^.o;(n);^.a:= a;^.o:= nil;l <> nil then l^.o:= n else q:= n;;

Для удаления записей служит процедура slist_del:

procedure slist_del(var q: pslist; var a: tclient);: pslist;:= q;n <> nil then:= n^.o;:= n^.a;(n);;

Процедура menu_load необходима для загрузки файла базы данных:

procedure menu_load;: string;: file of tclient;: tclient;

write(Введите имя файла для загрузки: ");

readln(f);_destroy(q);(t, f);(t);not eof(t) do(t, a);_add(q, a);;(t);("Данные загружены");_wait;

Процедура menu_save нужна для сохранения существующей базы:

procedure menu_save;: string;: file of tclient;: pslist;

write("Введите имя файла для сохранения: ");

readln(f);(t, f);(t);:= q;o <> nil do(t, o^.a);:= o^.o;;(t);("Данные сохранены");

Процедура поиска записей:menu_search;: string;: pslist;: integer;: boolean;

write( Введите фразу для поиска: ");

readln(p);:= q;:= 0;:= false;o <> nil do(n);(Pos(p, o^.a.name) > 0) or (Pos(p, o^.a.pol) > 0) or (Pos(p, o^.a.town) > 0) or (Pos(p, o^.a.diag) > 0) then:= true;_line(n, o);; := o^.o;;not pres then writeln("Записи не найдены");_wait;

Процедура menu_report выводит на экран и в файл отчет по базе данных:

writeln("ПЕРЕЧЕНЬ ИНОГОРОДНИХ ПАЦИЕНТОВ");

writeln(f, "ПЕРЕЧЕНЬ ИНОГОРОДНИХ ПАЦИЕНТОВ);

p:= q;p <> nil dop^.a.town <> TOWN then(p^.a.name:15, " ", p^.a.town);(f, p^.a.name:15, " ", p^.a.town);;:= p^.o;;(Введите возраст для поиска: "); readln(a);("Введите диагноз: "); readln(s);("ПЕРЕЧЕНЬ ПАЦИЕНТОВ СТАРШЕ ", a, " ЛЕТ С ДИАГНОЗОМ "", s, """);

writeln(f, "ПЕРЕЧЕНЬ ПАЦИЕНТОВ СТАРШЕ ", a, " ЛЕТ С ДИАГНОЗОМ "", s, """);

p:= q;:= false;p <> nil do(p^.a.age >= a) and (p^.a.diag = s) then

writeln(p^.a.name:15, " ", p^.a.age, " ëåò");(f, p^.a.name:15, " ", p^.a.age, " ëåò");

b:= true;;:= p^.o;;not b then ("Пациенты не найдены");

writeln(f, "Пациенты не найдены");

end;(f);_wait;;

Для сортировки записей используются две процедуры Sort и DownHeap. Процедура DownHeap преобразует элементы в дерево. Процедура Sort непосредственно сортирует данное дерево.

procedure Sort(var q: pslist; Count: Integer; Field: Integer);DownHeap(index, Count: integer; Current: pslist);: Integer;index < Count div 2 do:= (index + 1) * 2 - 1;(Child < Count - 1) and (data_compare(slist_at_pos(q, Child + 1), slist_at_pos(q, Child), Field)) then:= Child + 1;data_compare(Current, slist_at_pos(q, Child), Field) then;_set(slist_at_pos(q, index), slist_at_pos(q, Child));:= Child;;_set(slist_at_pos(q, index), Current);;: integer;: pslist;(Current);i:= (Count div 2) - 1 downto 0 do_set(Current, slist_at_pos(q, i));(i, Count, Current);;i:= Count - 1 downto 0 do _set(Current, slist_at_pos(q, i));_set(slist_at_pos(q, i), slist_at_pos(q, 0));(0, i, Current);;;

5.5 Инструкция по эксплуатации программы

После запуска программы на экране появляется главное меню программы (рисунок 5).

Рисунок 5 - Главное меню

Непосредственно с помощью данного меню и происходит управление программой. Для выбора желаемого действия необходимо нажать соответствующую клавишу.

После выбора пункта меню «загрузить базу» и «сохранить базу» на экране появится окно, куда необходимо ввести название ранее созданного файла (рисунок 6).

Рисунок 6 - Окно загрузки и сохранения файла базы данных

После выбора пункта меню «добавить запись» на экране появится окно следующего вида, куда необходимо занести информацию о пациенте

Рисунок 7 - Добавление записи

Для удаления записи необходимо выбрать пункт «удалить запись», после чего необходимо ввести номер удаляемой записи (рисунок 8).

Рисунок 8 - Удаление записей

Для поиска записей необходимо выполнить пункт меню «поиск записей», далее ввести критерии поиска (рисунок 9).

Рисунок 9 - Поиск записей

Для сортировки и создания отчетов необходимо также выбрать соответствующие пункты меню, после чего следовать инструкциям программы. Отчет сохраняется в папке с программой под названием eye.txt.

Заключение и выводы

Изначально язык программирования Паскаль был предназначен для обучения программированию. Но вскоре было обнаружено, что Паскаль пригоден для написания настоящих программ. И благодаря этому популярность Паскаля начинает расти. Его и сейчас изучают в школах, институтах и в других учебных заведениях. Паскаль имеет более простой синтаксис, нежели другие языки программирования. Но язык Паскаль больше всего близок к идеальному алгоритмическому процедурному языку, поскольку он полностью реализует принципы структурного программирования.

В рамках курсовой работы было разработано пять программ различного вида и различной тематики:

.Вычисление суммы ряда;

.Обработка одномерных массивов;

.Обработка матриц;

.Обработка строк;

.Работа с файлами, реализация структуры данных «односвязный список».

Курсовая работа выполнена в полном объеме, в соответствии с вариантом задания. В ходе курсовой работы были приобретены теоретические и практические навыки программирования на языке Паскаль.

Список использованной литературы

1.Фаронов В.В. Турбо Паскаль 7.0. Начальный курс: Учебное пособие. - М.: Норидж, 1997.

Бородич Ю.С., Вальвачев А.Н., Кузьмич А.И. Паскаль для персональных компьютеров. - Мн.: Выш.шк.; БФГИТМ «НИКА», 1991.

Офицеров Д.В., Долгий А.Б., Старых В.А. Программирование на персональных ЭВМ: Практикум: Учеб.пособие. - Мн.: Выш.шк., 1993.

Кулагин Н.Б. Программирование в Turbo Pascal 7.0 и Delphi. - СПб.:BHV, 2000.

Пильщиков В.Н. Сборник упражнений по языку Паскаль. М.: Наука, 1989.

Грогоно П. Программирование на языке Паскаль. - М.: Мир, 1982.

Хьюз Дж., Мичтом Дж. Структурный подход к программированию. - М.: Мир, 1980.

Мануйлов В.Г. Разработка программного обеспечения на Паскале. - М.: Приор, 1996.

Гудман С., Хидетниеми С. Введение в разработку и анализ алгоритмов. - М.:Мир, 1981.

Дейкстра Э. Дисциплина программирования. - М.: Мир, 1978. http://lib.ru/ctotor/dejkstra.

Фаронов В.В. Практика программирования. М.: МВТУ-ФЕСТО ДИДАКТИК, 1993. http://borlpasc.narod.ru/docym/farpract/oglav.htm

CIT Forum (Форум IT технолоний) [Электронный ресурс] Режим доступа: http://www.citforum.ru/database/classics/chen/