WWW.DISS.SELUK.RU

БЕСПЛАТНАЯ ЭЛЕКТРОННАЯ БИБЛИОТЕКА
(Авторефераты, диссертации, методички, учебные программы, монографии)

 

Pages:   || 2 |

«Кафедра автоматизированной обработки информации ОСНОВЫ ПРОГРАММИРОВАНИЯ УЧЕБНОЕ ПОСОБИЕ ВЛАДИКАВКАЗ 2013 Составитель: к.т.н. Будаева А.А. Учебное пособие предназначено для студентов ...»

-- [ Страница 1 ] --

ФЕДЕРАЛЬНОЕ АГЕНСТВО ПО ОБРАЗОВАНИЮ

СЕВЕРО-КАВКАЗСКИЙ ГОРНО-МЕТАЛЛУРГИЧЕСКИЙ ИНСТИТУТ

(ГОСУДАРСТВЕННЫЙ ТЕХНОЛОГИЧЕСКИЙ УНИВЕРСИТЕТ)

Кафедра автоматизированной обработки информации

«ОСНОВЫ ПРОГРАММИРОВАНИЯ»

УЧЕБНОЕ ПОСОБИЕ

ВЛАДИКАВКАЗ 2013

Составитель: к.т.н. Будаева А.А.

Учебное пособие предназначено для студентов направления 230100 «Информатика и вычислительная техника». В пособии даны теоретические и практические основы для обучения навыкам программирования на языках высокого уровня.

Содержание Введение

1. Основные понятия теории программирования

Алгоритмы

1. Этапы решения задачи на ЭВМ

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

1. Теорема структуры и структурное программирование

1. Технологии программирования

1. 2. Введение в DELPHI

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

2. Элементы языка

2. 2.2.1. Алфавит

2.2.2. Идентификаторы

2.2.3. Константы

2.2.4. Выражения

2.2.5. Операции

2.2.6. Математические процедуры и функции

Простые типы данных

2. 2.3.1. Порядковые типы

2.3.2. Вещественные типы

2.3.3. Тип дата-время

3. Операторы языка

4. Массивы

Статические массивы

4. Динамические массивы

4. Массивы в качестве параметров подпрограмм

4. 5. Процедуры и функции. Рекурсия

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

5. Глобальные и локальные идентификаторы

5. Формальные и фактические параметры

5. 5.3.1. Параметры-значения

5.3.2. Параметры-переменные

5.3.3. Параметры-константы

Отличия функций от процедур

5. Рекурсия и опережающее описание

5. 6. Обработка строковой информации





Строковый тип. Операции над строками.

6. Процедуры и функции для работы со строками

6. 7. Структурированные типы данных

Записи

7. Множества

7. Процедурные типы

7. 8. Файловые типы

Общие сведения

Доступ к файлам

Общие процедуры и функции для работы с файлами

Типизированные файлы

Текстовые файлы

Нетипизированные файлы

9. Указатели и динамическая память

Указатели

Процедуры и функции для работы с динамической памятью

Динамические структуры данных

10.

Литература

11.

ВВЕДЕНИЕ

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

Курс «Основы программирования» является базовым и готовит студента к последующим дисциплинам, связанным с вычислительной техникой, такими как: «Программирование на Delphi», «Программирование на С++», «Программирование на С#», «Операционные системы», «Технологии программирования», «Системное программирование» и др.

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

1. ОСНОВНЫЕ ПОНЯТИЯ ТЕОРИИ

ПРОГРАММИРОВАНИЯ

АЛГОРИТМЫ

1. Слово «алгоритм» произошло от арабского слова «Аль-Хорезми» – имени среднеазиатского ученого, жившего в первом тысячелетии (приблизительно 825 г) в городе Хива (ныне Узбекистан) и написавшего книгу «Правила восстановления и преобразования». Когда говорят «алгоритм решения задачи», то подразумевают описание последовательности действий, приводящих к решению задачи. Толкование задачи может быть в самом широком смысле, например, приготовление пищи, открывание дверей, лечение больных кисок и т.д. Важный вопрос – всякое ли описание последовательности действий есть алгоритм? Например, описание хаотического движения атомов не является алгоритмом. Алгоритму присуще:

1. описание исходных данных (условие задачи);

2. описание результата (что нужно получить);

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

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





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

1) определенность;

2) конечность;

3) массовость.

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

Описание исходных данных:

дано a, b, c – параметры квадратного уравнения.

Результат: значения корней квадратного уравнения.

Шаг 1:вычисляем дискриминант квадратного уравнения.

Шаг 2:проверяем. Если он отрицателен, то переходим на шаг 5, Шаг 3:вычисляем корни квадратного уравнения.

Шаг 4:выводим значения найденных корней. Переход на шаг 6.

Шаг 5:выводим сообщение об отсутствии действительных корней.

Шаг 6:конец алгоритма Такое описание алгоритма дает преимущества на самых первых шагах разработки алгоритма. Одно из обстоятельств, необходимых для использования этого способа, – формулировка и фиксация основных моментов и идей разрабатываемого алгоритма. Идея, написанная на бумаге, может существенно отличаться от той, которая была в уме!

Другой часто используемый способ – графический – основан на построении блок-схемы.

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

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

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

В тех случаях, когда один из блоков отсутствует, можно нарисовать следующую блоксхему

ЭТАПЫ РЕШЕНИЯ ЗАДАЧИ НА ЭВМ

1. Программирование (programming) - теоретическая и практическая деятельность, связанная с созданием программ. Решение задач на компьютере включает в себя следующие основные этапы, часть из которых осуществляется без участия компьютера.

1. Постановка задачи:

• сбор информации о задаче;

• формулировка условия задачи;

• определение конечных целей решения задачи;

• определение формы выдачи результатов;

• описание данных (их типов, диапазонов величин, структуры и т. п.).

2. Анализ и исследование задачи, модели:

• анализ существующих аналогов;

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

• разработка математической модели;

• разработка структур данных.

3. Разработка алгоритма:

• выбор метода проектирования алгоритма;

• выбор формы записи алгоритма (блок-схемы, псевдокод и • выбор тестов и метода тестирования;

• проектирование алгоритма.

4. Программирование:

• выбор языка программирования;

• уточнение способов организации данных;

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

5. Тестирование и отладка:

• синтаксическая отладка;

• отладка семантики и логической структуры;

• тестовые расчеты и анализ результатов тестирования;

• совершенствование программы.

6. Анализ результатов решения задачи и уточнение в случае необходимости математической модели с повторным выполнением этапов 2-5.

7. Сопровождение программы:

• доработка программы для решения конкретных задач;

• составление документации к решенной задаче, к математической модели, к алгоритму, к программе, к набору тестов, к использованию.

КАТЕГОРИИ СПЕЦИАЛИСТОВ, ЗАНЯТЫХ РАЗРАБОТКОЙ И

1.

ЭКСПЛУАТАЦИЕЙ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ

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

Системный программист (system/software programmer, toolsmith) занимается разработкой, эксплуатацией и сопровождением системного программного обеспечения, поддерживающего работоспособность компьютера и создающего среду для выполнения программ.

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

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

Постановщик задач — разработчик формальных постановок задач, требующих реализации на ЭВМ.

Администратор базы данных — человек, который обеспечивает организационную поддержку базы данных.

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

Основным потребителем программ является конечный пользователь (end user), который, как правило, не является специалистом в области программирования.

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

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

ЖИЗНЕННЫЙ ЦИКЛ ПРОГРАММНОГО ПРОДУКТА.

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

1. утилитарные программы — предназначены для удовлетворения нужд их разработчиков, программы «для себя»;

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

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

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

- алгоритмическая сложность;

- полнота функций обработки;

- объём файлов программ;

- требования к операционной системе и техническим средствам обработки со стороны программного средства;

- объём дисковой памяти;

- размер оперативной памяти.

Показатели качества должны содержать следующие аспекты:

- насколько хорошо можно использовать программный продукт (просто, надёжно, эффективно);

- насколько легко эксплуатировать программный продукт;

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

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

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

Рис.2.2. Жизненный цикл программного продукта.

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

Изучаются также существующие аналоги и продукты-конкуренты.

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

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

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

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

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

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

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

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

Для большинства современных программ его длительность составляет 2-3 года.

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

ТЕОРЕМА СТРУКТУРЫ И СТРУКТУРНОЕ ПРОГРАММИРОВАНИЕ

1. Структурное программирование — методология разработки программного обеспечения, в основе которой лежит представление программы в виде иерархической структуры блоков. Предложена в 70-х годах XX века Э. Дейкстрой, разработана и дополнена Н. Виртом.

В соответствии с данной методологией Любая программа представляет собой структуру, построенную из трёх типов базовых конструкций:

последовательное исполнение — однократное выполнение операций в том порядке, в котором они записаны в тексте программы;

ветвление — однократное выполнение одной из двух или более операций, в зависимости от выполнения некоторого заданного условия;

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

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

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

Разработка программы ведётся пошагово, методом «сверху вниз».

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

Разработка заканчивается тогда, когда не останется ни одной «затычки», которая не была бы удалена. Такая последовательность гарантирует, что на каждом этапе разработки программист одновременно имеет дело с обозримым и понятным ему множеством фрагментов, и может быть уверен, что общая структура всех более высоких уровней программы верна. При сопровождении и внесении изменений в программу выясняется, в какие именно процедуры нужно внести изменения, и они вносятся, не затрагивая части программы, непосредственно не связанные с ними. Это позволяет гарантировать, что при внесении изменений и исправлении ошибок не выйдет из строя какая-то часть программы, находящаяся в данный момент вне зоны внимания программиста.

Теорема о структурном программировании:

Любую схему алгоритма можно представить в виде композиции вложенных блоков begin и end, условных операторов if, then, else, циклов с предусловием (while) и может Эта теорема была сформулирована итальянскими математиками К. Бомом и Дж. Якопини в 1966 году и говорит нам о том, как можно избежать использования оператора перехода goto.

ТЕХНОЛОГИИ ПРОГРАММИРОВАНИЯ

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

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

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

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

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

Структурный подход охватывает все стадии разработки проекта: спецификацию, проектирование, собственно программирование и тестирование.

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

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

2. ВВЕДЕНИЕ В DELPHI

СТРУКТУРА ПРОГРАММЫ

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

Program name_of_program;

id_const3 = expression1;

id_var2, id_var3 : id_type2;

Function Func1 : type_def1;

Заголовок программы В заголовке после служебного слова Program указывается имя программы. Хотя заголовок программы не является обязательным разделом, при написании программы в среде Delphi имя программы надо указывать. При этом имя основного проекта должно совпадать с именем программы, указанным в заголовке.

Заголовок программы может быть только один; он обязательно должен быть первой строкой программы.

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

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

Раздел объявления меток Начало раздела указывается с помощью директивы Label. В данном разделе через запятую перечисляются имена используемых в программе меток. Идентификатор метки может состоять из символов латинского алфавита и/или цифр, а также содержать знак подчеркивания.

Метки находят применение при работе с оператором goto.

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

Раздел описания типов В Delphi существует довольно большое количество стандартных типов и множество типов, описанных в стандартных модулях. Однако при разработке программ, особенно при использовании объектно-ориентированного программирования, программисту необходима возможность создавать свои типы данных, которые носят название «типы данных, определяемые пользователем». Для описания пользовательских типов используется раздел объявления типов, начало которого определяет директива type. При создании типа указывается его идентификатор и после знака равенства приводится описание типа. Самым простым вариантом объявления собственного типа является объявление типа, аналогичного уже существующему, например:

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

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

Раздел переменных Начало раздела объявляется с помощью служебного слова var. В данном разделе должны быть описаны все переменные, которые будут использоваться в программе. Компилятор Delphi не допускает использования переменных, не объявленных в разделе Var.

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

[Hint] Project1.dpr(8): Variable ‘A’ is declared but never ised in ‘Project1’ Число в скобках после имени файла указывает номер строки, в которой описана неиспользуемая переменная.

При объявлении переменной указывается идентификатор и через двоеточие – тип переменной, например:

Идентификаторы переменных одного и того же типа можно перечислять через запятую:

id_var1, id_var2, id_var3 : integer;

Для нестандартных типов имя типа должно быть описано в разделе Type, находящемся выше раздела Var, в котором оно используется.

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

Раздел констант Данный раздел содержит объявления констант и начинается с директивы const. Константа фактически является переменной, значение которой устанавливается не в процессе выполнения программы, а на этапе компиляции. Значение константы не может изменяться программно, при попытке присвоить константе какое-либо значение, компилятор выдает сообщение об ошибке. В объявлении константы можно использовать не только конкретные значения, но и выражения (которые могут быть вычислены на стадии компиляции, то есть не должны содержать переменных и вызовы функций пользователя).

При объявлении константы указывается идентификатор и через знак «равно» – значение или выражение. Тип константы определяется присваиваемым ей значением или типом результата, получаемого при вычислении выражения.

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

Кроме обычных констант в Delphi можно использовать так называемые константыпеременные, которые также объявляются в разделе Const. Как и обычным константам, на этапе компиляции константам-переменным также присваивается какое-либо значение.

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

Например:

1) простые константы: имя константы = значение;

2) константные выражения:

3) Константы-переменные:

имя константы:имя типа = значение;

ЭЛЕМЕНТЫ ЯЗЫКА

2. 2.2.1. Алфавит Алфавит языка Delphi включает буквы, цифры, шестнадцатеричные цифры, специальные символы, пробелы и зарезервированные слова.

Буквы – буквы латинского алфавита от a до z и от A до Z, а также знак подчеркивания «_».

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

Цифры – арабские цифры от 0 до 9.

Каждая шестнадцатеричная цифра имеет значение от 0 до 15. Первые 10 значения обозначаются арабскими цифрами от 0 до 9, остальные шесть – латинскими буквами A…F или a...f.

Специальные символы:

– одиночные: +-*/=,'.;:[]{}^@$# – пары символов:, =, =, :=, (*, *), (.,.), // Особое место в алфавите языка занимают пробелы, к которым относятся любые символы в диапазоне кодов от 0 до 32. Эти символы рассматриваются как ограничители идентификаторов, констант, зарезервированных слов, чисел.

В Delphi имеются следующие зарезервированные слова:

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

Стандартные директивы первоначально связаны с некоторыми стандартными объявлениями в программе. К ним относятся:

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

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

Примеры – правильные идентификаторы: a, MyProgram, _beta, alpha – неправильные идентификаторы: 1Program, block#2, mod, My Program 2.2.3. Константы В качестве констант могут использоваться целые, вещественные и шестнадцатеричные числа, логические константы, символы, строки символов, конструкторы множеств и признак неопределенного указателя NIL.

Целые числа записываются со знаком или без него по обычным правилам и могут иметь значение от -2147843648 до +2147483647.

Вещественные числа записываются со знаком или без него с использованием десятичной точки и/или экспоненциальной части. Экспоненциальная часть начинается символом e или E, за которым могут следовать знаки «+» или «–» и десятичный порядок. Символ е (Е) означает десятичный порядок и имеет смысл «умножить на 10 в степени»

Например, Шестнадцатеричное число состоит из шестнадцатеричных цифр, которым предшествует знак $. Диапазон шестнадцатеричных чисел – от $00000000 до $FFFFFFFF.

Логическая константа – это либо слово FALSE (ложь), либо слово TRUE (истина).

Символьная константа – это любой символ ПК, заключенный в апострофы:

Если необходимо записать символ апострофа, он удваивается:

Допускается использование записи символа путем указания его внутреннего кода, которому предшествует символ #, например:

Строковая константа – любая последовательность символов (кроме символа CR – возврат каретки), заключенная в апострофы. Если в строке нужно указать сам символ апострофа, он удваивается, например:

Строка символов может быть пустой, т.е. не иметь никаких символов в обрамляющих ее апострофах. Строку можно составлять из кодов нужных символов с предшествующими каждому коду символами #, например, строка #83#121#109#98#11#108 эквивалентна строке 'Symbol'.

Наконец, в строке можно чередовать части, записанные в обрамляющих апострофах, с частями, записанными кодами. Таким способом можно вставлять в строки любые управляющие символы, в том числе символ CR (код 13), например:

Конструктор множества – список элементов множества, обрамленный квадратными скобками, например:

В Delphi разрешается в объявлении констант использовать произвольные выражения, операндами которых могут быть ранее объявленные константы, имена типов и объектов, а также следующие функции от них:

Например:

MaxReal = MaxInt div SizeOf(real);

MaxChars = ord(‘Z’) – ord(‘a’) + 1;

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

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

Примеры выражения:

2.2.5. Операции В Delphi определены следующие операции:

• мультипликативные *, /, div, mod, and, shl, shr;

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

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

Таблица истинности 2.2.6. Математические процедуры и функции Большинство арифметических и математических стандартных процедур и функций описано в модуле Math. Поэтому перед использованием соответствующих процедур (функций) необходимо указать данный модуль в разделе объявления модулей.

Определяет абсолютное значение аргумента Abs Определяет значение арккосинуса X ArcCos Определяет значение арксинуса X ArcSin Определяет значение арктангенса X ArcTan Округляет значение в положительную сторону Ceil Cos Cotan Уменьшает значение переменной на заданное число единиц (по Dec Преобразовывает угол из градусов в радианы DegToRad Вычисляет экспоненциальное значение передаваемого аргумента Exp Округляет переменную в сторону ближайшего меньшего целого числа Floor Возвращает дробную часть аргумента Frac Возвращает наибольшее значение в области значений аргумента High Увеличивает значение переменной на заданное число единиц (по Inc Возвращает целую часть аргумента (в вещественном формате) Int Определяет натуральный логарифм передаваемого аргумента Определяет десятичный логарифм Log Определяет двоичный логарифм Log Определяет логарифм с основанием N LogN Возвращает наименьшее значение в области значений аргумента Low Проверяет, является ли аргумент нечетным числом Odd Возвращает порядковый номер значения Ord Power Возвращает предыдущее значение порядковой переменной Pred Преобразовывает угол, указанный в радианах, в угол в градусах RadToDeg Округляет значение вещественной переменной до целочисленного Round Возвращает синус передаваемого аргумента Sin Sqr Sqrt Возвращает последующее значение порядковой переменной Succ Tan Отсекает дробную часть вещественного числа Trunc

ПРОСТЫЕ ТИПЫ ДАННЫХ

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

К простым типам относятся порядковые, вещественные и тип дата-время.

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

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

Тип дата-время предназначен для хранения даты и времени. Фактически для этих целей он использует вещественный формат.

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

Функция возвращает порядковый номер значения X в заданном Ord(X) Возвращает предыдущее значение порядкового типа (т.е.

Pred(X) значение, соответствующее порядковому номеру Ord(X)-1) Succ(X) Если представить любой порядковый тип как упорядоченного множество значений, возрастающих слева направо и занимающих на числовой оси отрезок, то функция Pred(X) не определена для левого, а Succ(X) – для правого конца этого отрезка.

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

ShortInt SmallInt Integer LongInt LongWord Cardinal При действиях с целыми числами тип результата будет соответствовать типу операндов, а если операнды относятся к различным целым типам – общему типу, включающему в себя оба операнда. Например, при действиях с ShortInt и Word общим будет тип Integer.

Логические типы К логическим относятся типы Boolean, ByteBool, Bool, WordBool, и LongBool. В стандартном Паскале определен только тип Boolean, остальные логические типы введены Delphi для совместимости с Windows. Типы Boolean и ByteBool занимают по одному байту каждый, Bool и WordBool – по 2 байта, LongBool – 4 байта. Значениями логического типа может быть одна из предварительно объявленных констант True (истина) или False (ложь).

Для них справедливы правила:

Символьный тип Значениями символьного типа является множество всех символов ПК. Каждому символу приписывается целое число в диапазоне 0 … 255. Это число служит кодом внутреннего представления символа, его возвращает функция ord.

Для кодировки в Windows используется код ANSI (назван по имени American National Standard Institute – американского института стандартизации, предложившего этот код).

Первая половина символов ПК с кодами 0…127 соответствует таблице (см. ниже). Вторая половина символов с кодами 128…255 меняется для различных шрифтов.

Кодировка символов в соответствии со стандартном ANSI Символы с кодами 0…31 относятся к служебным кодам. Если эти коды используются в символьном тексте программы, они считаются пробелами. К типу Char применимы операции отношения, а также встроенные функции:

Chr(B) – функция типа Char; преобразует выражение B типа Byte в символ и возвращает его своим значением.

UpCase(CH) – функция типа Char; возвращает прописную букву, если CH – строчная латинская буква, в противном случае возвращает сам символ CH (исходный).

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

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

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

TypeMonth=(jan,feb,mar,apr,may,jun,jul,aug,sep,oct,nov,dec if month = aug then writeln(‘Хорошо бы поехать к Соответствие между значениями перечисляемого типа и порядковыми номерами этих значений устанавливается порядком перечисления: первое значение в списке получает порядковый номер 0, второе – 1 и т.д. Максимальная мощность перечисляемого типа составляет 65 535 значений.

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

Пусть, например, заданы такие перечисляемые типы:

days = (Monday, Tuesday, Wednesday);

С точки зрения мощности и внутреннего представления, все тир типа эквивалентны:

Ord(black)=0,..., Ord(white)=2, Ord(one)=0,..., Ord(three)=2, Ord(Monday)=0,..., Ord(Wednesday)=2.

Однако, если определены переменные то допустимы операторы day := Pred(Tuesday);

но недопустимы Как уже упоминалось, между значениями перечисляемого типа и множеством целых чисел существует однозначное соответствие, задаваемое функцией Ord(X). В Delphi допускается и обратное преобразование: любое выражение типа Word можно преобразовать в значение перечисляемого типа, если только значение целочисленного выражения не превышает мощности этого типа. Такое преобразование достигается применением автоматически объявляемой функции с именем перечисляемого типа.

Например, для рассмотренного выше объявления типов эквивалентны следующие присваивания:

Переменные любого перечисляемого типа можно объявлять без предварительного описания этого типа, например:

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

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

2. недопустимо сравнение констант разных перечисляемых типов;

3. перечисляемый тип нельзя прямо выводить на печать. Один из возможных способов это:

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

Тип-диапазон задается границами своих значений внутри базового типа:

мин.знач...макс.знач.

Здесь мин.знач. – минимальное значение типа-диапазона;

макс.знач. – максимальное его значение.

Например:

Тип-диапазон не обязательно описывать в разделе type, а можно указывать непосредственно при объявлении переменной, напрмер:

При определении типа-диапазона нужно руководствоваться следующими правилами:

• два символа «» рассматриваются как один символ, поэтому между ними недопустимы пробелы;

• левая граница диапазона не должна превышать правую границу.

Тип-диапазон наследует все свойства своего базового типа, но с ограничениями, связанными с его меньшей мощностью. В частности, если определена переменная days = (mo,tu,we,th,fr,sa,su);

то Ord(w) вернет значение 5, в то время как Pred(w) приведет к ошибке.

В стандартную библиотеку Delphi включены две функции, поддерживающие работу с типами-диапазонами:

High(X) – возвращает максимальное значение типа-диапазона, к которому принадлежит переменная X;

Low(X) – возвращает минимальное значение типа-диапазона.

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

Особое положение в Delphi занимают типы Comp и Currency, которые трактуются как вещественные числа с дробными частями фиксированной длины: в Comp дробная часть имеет длину 0 разрядов, т.е. просто отсутствует, в Currency длина дробной части – десятичных разряда. Фактически оба типа определяют большое целое число со знаком, сохраняющее 19…20 значащих десятичных цифр. В то же время в выражениях Comp и Currency полностью совместимы с любыми вещественными типами: над ними определены все вещественные операции, они могут использоваться как аргументы математических функций и т.д. Наиболее подходящей областью применения этих типов являются бухгалтерские расчеты.

2.3.3. Тип дата-время Тип дата-время определяется стандартным идентификатором TDateTime и предназначен для одновременного хранения и даты, и времени. Во внутреннем представлении он занимает 8 байт и, подобно Currency, представляет собой вещественной число с фиксированной дробной частью: в целой части числа хранится дата, в дробной части – время. Дата определяется как количество суток, прошедших с 30 декабря 1899 года, а время – как часть суток, прошедших с 0 часов, так что значение 36444,837 соответствует дате 11.10.1999 и времени 20:05. Количество суток может быть и отрицательным, однако не меньше –693594 (соответствует дате 00.00.0000 от Рождества Христова).

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

Function Date: TDateTime;

Function DateToStr(D:

TDateTime): String;

Function DateTimeToStr(D:

TDateTime):String;

Function FormatDateTime (Format:

String; Value: TDateTime):

String;

Function Now: TDateTime;

Function Time: TDateTime;

Function TimeToStr(T:

TDateTime): String;

Поскольку тип TDateTime совместим с форматом вещественных чисел, можно определять дату, отстоящую от заданной на некоторое количество дней вперед или назад: для этого достаточно прибавить или отнять от нее нужное целое число. Например, оператор WriteLn(DateToStr(Date + 21 ));

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

выведет на экран дату, соответствующую текущей дате плюс три недели. Чуть сложнее с исчислением времени. Например, чтобы добавить к текущему времени полтора часа, следует использовать выражение Time + StrToTime(‘1:30’) или 3. ОПЕРАТОРЫ ЯЗЫКА Любой оператор в Delphi должен заканчиваться точкой с запятой!

Оператор присваивания Предназначен для изменения значения переменных. Результат выражения, расположенного справа от оператора присваивания ' := ', заносится в переменную, расположенную слева. При использовании оператора присваивания всегда необходимо строго соблюдать правила соответствия типов. Формат оператора:

имя переменной := значение;

Составной оператор и пустой оператор Составной оператор – это последовательность произвольных операторов программы, заключенных в операторные скобки, – зарезервированные слова begin … end.

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

Delphi не накладывает никаких ограничений на характер, входящих в составной оператор.

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

Составной оператор позволяет интерпретировать группу операторов как один оператор.

Это необходимо практически со всеми операторами Delphi.

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

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

Вид:

if условие then оператор1 else оператор2;

– произвольное выражение логического типа; оператор1, условие оператор2 – любые операторы Delphi ;

Условный оператор работает по следующему алгоритму. Вначале вычисляется условное выражение условие. Если результат есть True (истина), то выполняется оператор1, а оператор2 пропускается; если результат False (ложь), наоборот, оператор1 пропускается, а выполняется оператор2. После этого управление передается на оператор, следующий за условным. Ветвь else может отсутствовать.

Допустима любая степень вложенности операторов if. При этом любая встретившаяся часть else соответствует ближайшей к ней сверху по тексту программы части then условного оператора.

Замечание:

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

Правильная запись:

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

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

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

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

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

Пример ‘+’, ‘-’, ‘*’, ‘/’ : writeln(‘x – арифметич операция’);

Операторы цикла В Delphi имеются три различных оператора, с помощью которых можно запрограммировать повторяющиеся фрагменты программ:

– цикл с параметром FOR;

– оператор цикла WHILE;

– оператор цикла REPEAT … UNTIL Цикл с параметром FOR имеет структуру:

for параметр_цикла:=нач_знач to кон_знач do оператор;

for параметр_цикла:=нач_знач downto кон_знач do здесь for, to (downto), do – зарезервированные слова; параметр_цикла – переменная любого порядкового типа; нач_знач – начальное значение – выражение того же типа; кон_знач – конечное значение – выражение того же типа;

оператор – произвольный оператор Delphi.

При выполнении оператора for вначале вычисляется выражение нач_знач и осуществляется присваивание параметр_цикла := нач_знач. После этого циклически повторяется:

• проверка условия параметр_цикла = кон_знач; если условие не выполнено, оператор for завершает свою работу;

• выполнение оператора оператор;

• наращивание переменной параметр_цикла на единицу.

В случае если начальное значение меньше конечного используется конструкция а) оператора – шаг наращивания при этом (+1), в противном – конструкция б) оператора – шаг наращивания равен (-1).

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

Цикл с предусловием WHILE.

Структура:

здесь while, do – зарезервированные слова; условие – выражение логического типа; оператор; – произвольный оператор Delphi.

Если выражение условие – имеет значение True, то выполняется оператор, после чего вычисление выражение условие и его проверка повторяются. Если условие имеет значение False, оператор while прекращает свою работу.

Цикл с постусловием REPEAT … UNTIL.

Структура:

здесь repeat, until – зарезервированные слова; тело_цикла – проивольная последовательность операторов Delphi; условие – выражение логического типа.

Операторы тело_цикла выполняются хотя бы один раз, после чего вычисляется выражение условие : если его значение есть False, операторы тело_цикла повторяются, в противном случае оператор repeat … until завершает свою работу.

Для правильного выхода из цикла условие выхода должно меняться внутри операторов, составляющих тело цикла while или repeat … until.

Следующие циклы никогда не завершаться «естественным» способом:

Для гибкого управления циклическими операторами for, while и repeat в состав Delphi включены две процедуры без параметров:

BREAK – реализует немедленный выход из цикла; действие процедуры заключается в передаче управления оператору, стоящему сразу за концом CONTINUE – обеспечивает досрочное завершение очередного прохода цикла;

эквивалент передачи управления в самый конец циклического оператора.

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

Метки и операторы перехода Можно теоретически показать, что рассмотренных операторов вполне достаточно для написания программ любой сложности. В этом отношении наличие в зыке операторов перехода кажется излишним. Более того, современная технология структурного программирования основана на принципе «программировать без GOTO»: считается, что злоупотребление операторами перехода затрудняет понимание программы, делает ее запутанной и сложной в отладке.

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

Оператор перехода имеет вид:

здесь goto – зарезервированное слово; метка – метка.

Метка располагается непосредственного перед помечаемым оператором и отделяется от него двоеточием. Оператор можно помечать несколькими метками, которые в этом случае отделяются друг от друга двоеточием. Перед тем как появиться в программе, метка должна быть описана в разделе label программы.

Правила использования меток:

• метка, на которую ссылается оператор goto, должна быть описана в разделе описаний, и она обязательно должна встретиться где-нибудь в теле программы;

• метки, описанные в подпрограмме, локализуются в ней, поэтому передача управления извне подпрограммы на метку внутри нее невозможна.

Процедуры ввода и вывода Вывод procedure WriteLn(эл[, эл_2, …, эл_N]);

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

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

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

эл – может иметь следующую структуру:

Выражение[: Мин_размер [: Количество_десятичных_разрядов]] Выражение – представляет собой любое допустимое в Delphi выражение;

Мин_размер Количество_десятичных_разрядов переменные типа Integer. Если Выражение не возвращает значение, содержащее символы, то записывается Мин_размер символов пробела. В противном случае записываются требуемые символы. Параметр Количество_десятичных_разрядов задает количество десятичных разрядов, используемых для представления действительных чисел. Указание этого параметра допустимо в том случае, если указан параметр Мин_размер, а Выражение – является действительным числом. Если параметр Мин_размер указан, значение Количество_десятичных_разрядов должно быть больше или равно 0.

Ввод procedure ReadLn[(эл[, эл_2, …, эл_N])];

Каждый эл – это переменная целого, вещественного, символьного или строкового типа. Элементы ввода должны отделяться друг от друга пробелами или символом конца строки (клавиша [Enter]).

Процедура ReadLn аналогична Read, за одним исключением: процедура ReadLn после считывания устанавливает указатель на следующую строку. Это означает, что вводимые данные могут отделяться друг от друга символом конца строки.

При вызове ReadLn без параметров программой будет ожидаться нажатие клавиши [Enter]. Это позволяет предотвратить исчезновение информации с экрана монитора по окончании выполнения консольного приложения.

4. МАССИВЫ

СТАТИЧЕСКИЕ МАССИВЫ

4. Массивы в Delphi во многом схожи с аналогичными типами данных в других языках программирования. Отличительная особенность массивов заключается в том, что все их компоненты суть данные одного типа (возможно структурированного). Эти компоненты можно легко упорядочить и обеспечить доступ к любому из них простым указанием его порядкового номер, например:

matrix = array [byte] of Single;

m[17] := ord(d[i-1])/10;

Описание типа массива задается следующим образом:

имя типа = array [сп.инд.типов] of тип;

Здесь имя типа – правильный идентификатор; array, of – зарезервированные слова;

сп.инд.типов – список из одного или нескольких индексных типов, разделенных запятыми; квадратные скобки, обрамляющие список, – требование синтаксиса; тип – любой тип Delphi.

В качестве индексных типов можно использовать любые порядковые типы, имеющие мощность не более 2 Гбайт (т.е. кроме LongWord и Int64).

Определить переменную как массив можно и непосредственно при описании этой переменной, без предварительного описания типа массива, например:

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

Число размерностей массива не ограничено. Если тип-компоненты в типе массив так же является массивом, то результат можно рассматривать как массив массивов – многомерный массив. Например:

Mat = array [0..5] of array [-2..2] of array [Char] of Такую запись можно заменить более компактной:

Mat = array [0..5,-2..2,Char] of Byte;

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

В Delphi можно одним оператором присваивания передать все элементы одного массива другому массиву того же типа, например:

После присваивания все пять элементов массива А получат те же значения, что и в массиве В. Замечу, что объявление создаст разные типы массивов, поэтому оператор вызовет сообщение об ошибке.

Над массивами не определены операции отношения. Нельзя, например, записать Сравнивать два массива можно поэлементно, например:

ДИНАМИЧЕСКИЕ МАССИВЫ

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

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

SetLength(A,3);

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

Фактически идентификатор динамического массива ссылается на указатель, содержащий адрес первого байта памяти, выделенной для размещения массива. Поэтому для освобождения этой памяти достаточно присвоить идентификатору значение NIL (другим способом является использование процедуры Finalize):

//Используем массивы:

//Освобождаем память:

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

В многомерных массивах сначала устанавливается длина его первого измерения, затем второго, третьего и т.д. Например:

A: array of array of Integer; //2-мерный динам.массив //устанавливаем длину 1-го измерения (кол-во столбцов) //Задаем длину каждого столбца Обратите внимание: динамические массивы могут иметь разную длину по второму и следующим измерения.

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

Пример инициации вещественного кубического массива 3 х 3 х 3:

МАССИВЫ В КАЧЕСТВЕ ПАРАМЕТРОВ ПОДПРОГРАММ

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

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

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

5. ПРОЦЕДУРЫ И ФУНКЦИИ. РЕКУРСИЯ

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

Языки, в которых предусмотрены механизмы структурирования, называются процедурно-ориентированными. К их числу принадлежит и Delphi.

Каждая подпрограмма снабжена именем. Упоминание этого имена в тексте программы называется вызовом процедуры (функции).

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

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

СТРУКТУРА ПОДПРОГРАММ

5. Описание процедуры имеет следующую структуру.

Procedure Имя(Список формальных параметров);

{Разделы локальных описаний} Описание функции имеет следующую структуру.

Function Имя(Список формальных параметров):Тип результата;

{Разделы локальных описаний} имя:=результат;

Типом результата в функциях может быть любой из стандартных типов Delphi кроме файловых типов. Использование конструируемых типов здесь недопустимо.

ГЛОБАЛЬНЫЕ И ЛОКАЛЬНЫЕ ИДЕНТИФИКАТОРЫ

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

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

здесь переменная i – является локальной переменной, она существует только внутри процедуры и недоступна основной программе.

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

здесь переменная n – является глобальной переменной, она существует и в программе и в процедуры.

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

ФОРМАЛЬНЫЕ И ФАКТИЧЕСКИЕ ПАРАМЕТРЫ

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

procedure Draw(k: byte; c: char);

write(‘Введите символ: ’);read(x);

В данном примере k и c являются формальными параметрами, объявленными в описании процедуры, а переменные n и x – фактическими. Фактические параметры подставляются вместо формальных при вызове процедуры. Например, вызов Draw(10, ‘+’); выведет на экран 10 знаков «+».

По способу передачи формальные параметры делятся на три типа:

• параметры-значения, • параметры-переменные, • параметры-константы.

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

Изменение формальных параметров не сказывается на значении фактических.

Заголовок подпрограммы с параметрами-значениями имеет вид:

procedure MyProc1(par1,par2 : type1; par3 : type2);

function MyFunc1(par1, par2 : type1; par3 : type2):type3;

Пример.

program Text1;

procedure Sq1(x: real); // x – параметр-значение begin {of Main} Таким образом, переменная y в процедуре изменила свое значение, а в программе – нет.

Для изменения значение передаваемых в процедуру переменных необходимо вводить параметры-переменные.

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

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

Заголовок подпрограмм с параметрами-переменными имеет вид:

procedure MyProc2(var par1,par2 : type1; var par3 : type2);

function MyFunc2(var par1,par2 :type1; var par3: type2):type3;

Пример.

procedure Sq2(var z: real); // z – параметр-переменная begin {of Main} Результат:

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

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

Заголовок процедуры с параметрами-константами имеет вид:

procedure MyPr(const par1,par2: type1; const par3 : type2);

function MyFun(const par1,par2:type1; const par3:type2):type3;

ОТЛИЧИЯ ФУНКЦИЙ ОТ ПРОЦЕДУР

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

Функции имеет ряд отличий от процедур:

• В заголовке функции обязательно указывается тип возвращаемого значения.

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

• В теле функции обязательно присутствует оператор присваивания имени функции результирующего значения.

• Каждая функция имеет назначенную неявным образом локальную переменную Result. Она имеет тот же самый тип, что и возвращаемое значение. Если вы присваиваете данной переменной значение, то это действие имеет тот же эффект, что и присваивание значения имени (идентификатору) функции внутри тела данной функции.

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

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

Пример: Вычислить сумму function Sum1(n:word):integer;//тип возвращаемого значения end;{of Sum1} function Sum2(n: word):integer;

Result := Result + sqr(i); {присваивание результата Write(‘Введите n: ’);

WriteLn(‘ Sum1 = ’, Sum1(n));//вызов функции Sum WriteLn(‘ Sum2.result = ’, Sum2(n));//вызов функции Sum Здесь функции Sum1 и Sum2 идентичны, но используют разные способы присваивания значений функции.

РЕКУРСИЯ И ОПЕРЕЖАЮЩЕЕ ОПИСАНИЕ

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

Рассмотрим классический пример – вычисление факториала. При выполнении правильно организованной рекурсивной подпрограммы осуществляется многократный переход от некоторого текущего уровня организации алгоритма к нижнему уровню последовательно до тех пор, пока, не будет получено тривиальное решение поставленной задачи. Для факториала это решение при N = 1.

function Factorial(n: word):longint;

Result := n * Factorial(n – 1); //Рекурсивный вызов end;{of Factorial} Write(‘Введите n: ’); Read(n);

WriteLn(‘Факториал n! = ’, Factorial(n));

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

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

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

Поэтому такую программную конструкцию использовать нельзя. Чтобы такого рода вызовы стали возможны, вводится опережающее описание:

Опережающее описание заключается в том, что объявляется лишь заголовок процедуры B, а ее тело заменяется стандартной директивой Forward. Теперь в процедуре A можно использовать обращение к процедуре B, так как она уже описана, точнее известны ее формальные параметры, и компилятор может правильным образом организовать ее вызов.

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

6. ОБРАБОТКА СТРОКОВОЙ ИНФОРМАЦИИ

СТРОКОВЫЙ ТИП. ОПЕРАЦИИ НАД СТРОКАМИ.

6. Для обработки текстов в Delphi используются следующие типы:

• Короткая строка ShortString или String[N], где N = 255;

• Длинная строка AnsiString;

• Широкая строка WideString;

Общим для этих типов является то, что каждая строка трактуется как одномерный массив, количество символов в котором может меняться в работающей программе: для String[N] длина строки меняется от 0 до N, для AnsiString, WideString и PChar – от 0 до 2 Гбайт.

Тип ShortString аналогичен типу String ранних версий языка Pascal. Под хранение символов строки выделяются байты с 1-го по 255-й. Байт с нулевым номером используется для хранения длины строки.

Переменные типа AnsiString могут хранить строку практически неограниченной длины.

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

Тип WideString аналогичен типу AnsiString, но в отличие от последнего символы строки WideChar представляются в кодировке UNICODE, то есть занимают 2 байта.

В Delphi при объявлении строковых переменных можно использовать тип String. При этом тип переменной, объявленной как String, будет зависеть от директивы компилятора $H.

Если задано {$H+} (установка по умолчанию), то тип String аналогичен AnsiString, если {$H–} – ShortString.

Примеры объявлений строковых типов:

var String[250]; //короткая строка длиной до 250 символов : ShortString;//короткая строка длиной до 255 символов ssMax swW : WideString;

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

Над строковыми типами определены:

операции сцепки (соединения, конкатенации). Например, s := ‘Object ’ + ‘Pascal’;// содержит ‘Delphi’ операции отношения (,, =, =, =, ) выполняются над двумя строками посимвольно, слева направо с учетом внутренней кодировки символов. Если одна строка меньше другой по длине, недостающие символы короткой строки заменяются значением #0. Следующие операции отношения дадут значение True.

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

ПРОЦЕДУРЫ И ФУНКЦИИ ДЛЯ РАБОТЫ СО СТРОКАМИ

6. Function AnsiLowerCase(const S: String):String;

Function AnsiUpperCase(const S: String):String;

Function Concat(S1[,S2,…,SN]:

String):String;

Function Copy(St: String;

Index, Count: Integer):String;

Procedure Delete(St: String;

Index, Count:Integer);

Procedure Insert(SubSt:

String; St, Index:Integer);

Function Length(St: String):

Integer;

Function LowerCase(const S:

String):String;

Function Pos(SubSt, St:

String): Integer;

Procedure SetLength(St:

String; NewLength: Integer);

Function StringOfChar(Ch:

Char; Count: Integer): String; повторенного символа Ch.

Function UpperCase(const S:

String):String;

Подпрограммы преобразования строк в другие типы Function StrToDateTime (St:

String): TDateTime;

Function StrToFloat(St:

String): Extended;

Function StrToDate(St:

String): TDateTime;

Function StrToInt(St:

String):Integer;

Function StrToTime(St:

String): TDateTime;

Procedure Val (St:String; var X; Code: Integer);

Подпрограммы обратного преобразования Function DateTimeToStr(Value:

TDateTime): String;

Procedure DateTimeToString(var St: String; Format: String;

Value: TDateTime);

Function DateToStr(Value:

TDateTime): String;

Function FloatToStr(Value:

Extended): String;

Function FloatToStrF(Value:

Extended): String;

Function FormatDateTime(Format: String;

Value: TDateTime):String;

Function FormatFloat(Format:

String; Value: Extended):

Function IntToStr(Value:

Integer): String;

[:Decimals]]; var St:String);

Function TimeToStr(Value:

TDateTime): String;

При преобразовании с помощью функций StrToXXX строка может содержать недопустимые для типа XXX символы. В этом случае возбуждается исключительная ситуация EConvertError. При обратных преобразованиях XXXToStr формат получаемой строки зависит от установленных в Windows системных параметров: разделителей даты, времени, целой и дробной частей вещественного числа.

Используемая в процедуре DateTimeToString и в функции FormatDateTime строка Format может содержать следующие символы-спецификаторы (в примерах показаны строки для времени 19 часов 45 минут и даты 8 июня 2005 года):

Отображает сначала дату в формате дд.мм.гг, затем пробел и время в Отображает сокращенное название месяца: июн yyy или yyyy Отображает время в формате чч:мм:сс: 19:45: Отображает время в 12-часовом формате (am – до полудня, pm – после полудня). Для спецификаторов hh:mm am/pm получим 07:45 pm.

Отображает время в 12-часовом формате, но без указания до/после полудня. Для спецификаторов hh:mm ampm получим 07:45.

Отображает время в 12-часовом формате (a – до полудня, p – после полудня). Для спецификаторов hh:mm a/p получим 07:45 p.

Отображает используемый в Windows разделитель даты. Для Отображает используемый в Windows разделитель времени. Для Для форматного преобразования вещественных чисел предназначены функции FloatToStrF и FormatFloat. Первая использует значение Format перечисляемого типа TFloatFormat и два дополнительных параметра – Precision и Digits. Правила использования параметров функции FloatToStrF показаны в следующей таблице (примеры преобразования даются для Value = = 3,141593654, Precision = 5 и Digits – 2).

Правила использования параметров функции FloatToStrF ffExponent в степени ХХ). Precision задает общее количество десятичных цифр мантиссы, Digits – количество цифр в десятичном порядке ХХ. Число округляется с учетом первой отбрасываемой цифры:

дробной частей. Precision задает общее количество десятичных цифр в представлении числа, Digits – количество цифр в дробной части. Число округляется с учетом первой отбрасываемой цифры:

Универсальный формат, использующий наиболее удобную для ffGeneral чтения форму представления вещественного числа. Соответствует формату ffFixed, если количество цифр в целой части меньше или противном случае соответствует формату ffExponent.



Pages:   || 2 |
 
Похожие работы:

«Приложение 2 к приказу Министерства образования Республики Беларусь от 24.12.2008 № 1000 МЕТОДИЧЕСКИЕ РЕКОМЕНДАЦИИ ПО РАЗВИТИЮ И СОВЕРШЕНСТВОВАНИЮ ВУЗОВСКИХ СИСТЕМ УПРАВЛЕНИЯ КАЧЕСТВОМ ОБРАЗОВАНИЯ (СИСТЕМ МЕНЕДЖМЕНТА КАЧЕСТВА) И ПРИВЕДЕНИЮ ИХ В СООТВЕТСТВИЕ С ТРЕБОВАНИЯМИ МЕЖДУНАРОДНЫХ СТАНДАРТОВ Минск 2008 г. 2 Настоящие Методические рекомендации подготовлены рабочей группой, созданной по приказу Министерства образования от 14.03.2008 № 167 для проведения работ по развитию вузовских систем...»

«Министерство образования Республики Беларусь Учреждение образования “Белорусский государственный университет информатики и радиоэлектроники” Кафедра электронной техники и технологии МЕДИЦИНСКАЯ И БИОЛОГИЧЕСКАЯ ФИЗИКА МЕТОДИЧЕСКИЕ УКАЗАНИЯ И КОНТРОЛЬНЫЕ ЗАДАНИЯ для студентов специальности Медицинская электроника заочной формы обучения Минск 2004 УДК 53:571:61 (075.8) ББК 28.707.1я73 М 54 Составители: С.К. Дик, А.А. Иванов, Ю.Г. Дегтярев, Т.А. Имшенецкая Медицинская и биологическая физика: Метод....»

«МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РФ ФГБОУ ВПО СЕВЕРО-КАВКАЗСКИЙ ГОРНО-МЕТАЛЛУРГИЧЕСКИЙ ИНСТИТУТ (ГОСУДАРСТВЕННЫЙ ТЕХНОЛОГИЧЕСКИЙ УНИВЕРСИТЕТ) КАФЕДРА АВТОМАТИЗИРОВАННОЙ ОБРАБОТКИ ИНФОРМАЦИИ Методические указания к выполнению практических работ дисциплины Вычислительные системы для направления (ий) подготовки (специальности (ей)) 230100 Информатика и вычислительная техника Квалификация (степень) выпускника магистр Разработчик(и) программы: Шепилова Е.В. Владикавказ 2013 Оглавление Практическая...»

«МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РФ ФГБОУ ВПО СЕВЕРО-КАВКАЗСКИЙ ГОРНО-МЕТАЛЛУРГИЧЕСКИЙ ИНСТИТУТ (ГОСУДАРСТВЕННЫЙ ТЕХНОЛОГИЧЕСКИЙ УНИВЕРСИТЕТ) Кафедра автоматизированной обработки информации Методические указания к практическим работам дисциплины: Надежность, эргономика и качество АСОиУ для направления подготовки: 230100 – Информатика и вычислительная техника профиль: Автоматизированные системы обработки информации и управления квалификация (степень) выпускника: бакалавр Составитель: к.т.н....»

«Международный консорциум Электронный университет Московский государственный университет экономики, статистики и информатики Евразийский открытый институт Г.Н. Ронова Л.А. Ронова Финансовый менеджмент Учебно-методический комплекс Москва 2008 1 УДК 336 ББК -93*65.2/4-65.9 Р 715 Ронова Г.Н., Ронова Л.А. ФИНАНСОВЫЙ МЕНЕДЖМЕНТ: Учебнометодический комплекс. – М.: Изд. центр ЕАОИ. 2008. – 170 с. Рекомендовано Учебно-методическим объединением по образованию в области антикризисного управления в...»

«МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ЭКОНОМИКИ И ФИНАНСОВ КАФЕДРА ИНФОРМАТИКИ А.М. ВЛАСОВЕЦ, О.П. ИЛЬИНА, Е.А. ПИЛЮГИНА КУРСОВОЕ ПРОЕКТИРОВАНИЕ В СРЕДЕ MS ACCESS Учебное пособие ИЗДАТЕЛЬСТВО САНКТ-ПЕТЕРБУРГСКОГО ГОСУДАРСТВЕННОГО УНИВЕРСИТЕТА ЭКОНОМИКИ И ФИНАНСОВ ББК 32. В Власовец А.М., Ильина О.П., Пилюгина Е.А. Курсовое проектирование в среде MS...»

«Б. К. Абдугулова РАССКАЗЫ ПО ИСТОРИИ КАЗАХСТАНА МеТОдИчеСКОе ПОСОБИе для учителей 5 класса 11-летней общеобразовательной школы Алматыкiтап баспасы 2010 УдК 373(075.3) ББК 74.262.21 А 13 Абдугулова Б. К. А 13 Рассказы по истории Казахстана. Методическое пособие для учителей 5 класса 11-летней общеобразовательной школы/Б.К. Абдугулова. – Алматы: Алматыкiтап баспасы, 2010. – 144 с. ISBN 978-601-01-0369-6 УдК 373 (075.3) ББК 74. 262.21 © Абдугулова Б. К., 2010 ISBN 978-601-01-0369-6 © ТОО...»

«СОДЕРЖАНИЕ 1. ЛАБОРАТОРНЫЙ ПРАКТИКУМ ИЗМЕРНИЕ ПАРАМЕТРОВ ПЕ- 2 РЕДАЧИ ЭЛЕКТРИЧЕСКИХ КАБЕЛЕЙ ЛАБОРАТОРНАЯ РАБОТА № 1 4 1. КРАТКИЕ ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ 4 2. МЕТОДИЧЕСКИЕ УКАЗАНИЯ ДЛЯ ВЫПОЛНЕНИЯ РАБОТЫ 9 2.1. УСТРОЙСТВО ПРИБОРА П-321 9 2.2. ПОДГОТОВКА ПРИБОРА П – 321 К РАБОТЕ 13 2.3. ПОРЯДОК РАБОТЫ С ПРИБОРОМ 14 3. ОПИСАНИЕ ЛАБОРАТОРНОГО МАКЕТА 14 4. ПОРЯДОК ВЫПОЛНЕНИЯ ЛАБОРАТОРНОЙ РАБОТЫ 15 5. СОДЕРЖАНИЕ ОТЧЕТА 15 6. КОНТРОЛЬНЫЕ ВОПРОСЫ ЛАБОРАТОРНАЯ РАБОТА N2 1. КРАТКИЕ ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ...»

«Сведения об учебно-методической, методической и иной документации, разработанной образовательной организацией для обеспечения образовательного процесса по специальности 230700.65 Прикладная информатика (в экономике) Наименование дисциплины по учебному Наименование учебно-методических, методических и иных материалов №п/п плану (автор, место издание, год издания, тираж) 1) Учебно-методический комплекс по дисциплине Иностранный язык, 2011г. 2) Basic English: учебное пособие./ Н.И. Киселева –...»

«ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ ИНДУСТРИАЛЬНЫЙ УНИВЕРСИТЕТ Е. А. Пушкарь ДИФФЕРЕНЦИАЛЬНЫЕ УРАВНЕНИЯ В ЗАДАЧАХ И ПРИМЕРАХ УЧЕБНО-МЕТОДИЧЕСКОЕ ПОСОБИЕ Москва 2007 ББК 22.161.6 УДК 517.9 П91 Рецензенты: В.Б. Миносцев, заслуженный работник ВШ РФ, доктор физикоматематических наук, профессор Московского государственного индустриального университета; Д.Л. Ревизников, доктор физико-математических наук, профессор Московского авиационного института (Технический...»

«Федеральное агентство по образованию Владивостокский государственный университет экономики и сервиса _ ИНЖЕНЕРНАЯ И КОМПЬЮТЕРНАЯ ГРАФИКА Учебная программа дисциплины по специальности 210305.65 Средства радиоэлектронной борьбы по направлению подготовки 210300.62 Радиотехника Владивосток Издательство ВГУЭС 2010 ББК 85.15 Учебная программа по дисциплине Инженерная и компьютерная графика составлена в соответствии с требованиями ГОС ВПО. Содержит организационно-методические указания и описание...»

«УДК 378.147(07) ББК 74.580.253я73 С89 Электронный учебно-методический комплекс по дисциплине Информационнокоммуникационные технологии в образовании подготовлен в рамках инновационной образовательной программы Информатизация и автоматизированные системы управления, реализованной в ФГОУ ВПО СФУ в 2007 г. Рецензенты: Красноярский краевой фонд науки; Экспертная комиссия СФУ по подготовке учебно-методических комплексов дисциплин С89 Информационно-коммуникационные технологии в образовании. Версия 1.0...»

«ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ ИНДУСТРИАЛЬНЫЙ УНИВЕРСИТЕТ Е. А. Пушкарь ДИФФЕРЕНЦИАЛЬНЫЕ УРАВНЕНИЯ УЧЕБНОЕ ПОСОБИЕ МГИУ Москва 2007 ББК 22.161.6 УДК 517.9 П91 Рецензенты: В.Б. Миносцев, заслуженный работник ВШ РФ, доктор физикоматематических наук, профессор Московского государственного индустриального университета; Д.Л. Ревизников, доктор физико-математических наук, профессор Московского авиационного института (Технический Университет). Пушкарь Е.А. П91...»

«МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования НАЦИОНАЛЬНЫЙ МИНЕРАЛЬНО-СЫРЬЕВОЙ УНИВЕРСИТЕТ ГОРНЫЙ ПРОГРАММА ВСТУПИТЕЛЬНОГО ЭКЗАМЕНА В МАГИСТРАТУРУ по направлению подготовки 230100 – ИНФОРМАТИКА И ВЫЧИСЛИТЕЛЬНАЯ ТЕХНИКА по магистерской программе Методы анализа и синтеза проектных решений САНКТ-ПЕТЕРБУРГ 2012 Программа вступительного экзамена в магистратуру по направлению 230100.68 –...»

«Лауреаты Конкурса образовательных разработок, пособий, проектов и программ по обеспечению исследовательской деятельности учащихся за 2011 – 2012 года Лауреат без публикации Королева Елена Евгеньевна, учитель природоведения, химии, МОУ Гимназия №1 г. Методическая разработка Элективный курс Школа увлекательных Печора Республики Коми проектов для учащихся 5-7 классов Неподкосова И.В., учитель информатики, МБОУ Раздольинская основная Мой родной край: Методический материал (из опыта работы)...»

«Министерство образования Республики Беларусь УЧРЕЖДЕНИЕ ОБРАЗОВАНИЯ ГРОДНЕНСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ИМЕНИ ЯНКИ КУПАЛЫ Ю.М.РЫЧКОВ ЭЛЕКТРОННЫЕ ПРИБОРЫ СВЕРХВЫСОКИХ ЧАСТОТ Допущено Министерством образования Республики Беларусь в качестве учебного пособия для студентов специальности Радиофизика высших учебных заведений Гродно 2002 УДК 538.56+621.381(075.8) ББК 32.842.1+32.845.7 Р95 Рецензенты: кафедра радиофизики Белорусского государственного университета (доктор физико-математических наук,...»

«М.А. Абросимова ИнформацИонные технологИИ в государственном И мунИцИпальном управленИИ Рекомендовано ГОУ ВПО Государственный университет управления в качестве учебного пособия для студентов высших учебных заведений, обучающихся по направлению подготовки 080100 Экономика и экономическим специальностям УДК [004:33](075.8) ББК [32.973.2:65]я73 А16 Рецензенты: Д.А. Гайнанов, заведующий кафедрой управления в социальных и экономических системах Уфимского государственного авиационного технического...»

«Министерство образования и науки Российской Федерации Московский государственный университет геодезии и картографии (МИИГАиК) Кафедра Картографии Макаренко А.А., Моисеева В.С., Степанченко А.Л. Проектирование и редакционная подготовка общегеографических региональных карт Учебно-методическое пособие по курсовому проектированию для студентов по направлению подготовки Картография и геоинформатика Издательство МИИГАиК Москва 2014 УДК 528.93 ББК 26.1 Рецензенты: Баева Е.Ю. – к.т.н., доцент кафедры...»






 
© 2013 www.diss.seluk.ru - «Бесплатная электронная библиотека - Авторефераты, Диссертации, Монографии, Методички, учебные программы»

Материалы этого сайта размещены для ознакомления, все права принадлежат их авторам.
Если Вы не согласны с тем, что Ваш материал размещён на этом сайте, пожалуйста, напишите нам, мы в течении 1-2 рабочих дней удалим его.