Файл: программирование на паскале2.doc

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 21.04.2025

Просмотров: 1339

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

СОДЕРЖАНИЕ

Министерство образования и науки российской федерации

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

Введение

Часть. Основы программирования на Паскале

1.1. Структура простейшей Паскаль-программы

1.2. Данные и операции над ними

1.2.1. Свойства ячейки памяти. Переменные и константы

1.2.2. Типы данных

1.2.3. Правила записи констант

1.2.4. Описание переменных и именованных констант в Паскале

1.2.5. Выражения

1.3. Операторы преобразования данных

1.3.1. Оператор присваивания

1.3.2. Понятие ввода и вывода

1.3.3. Оператор вывода

1.3.4. Оператор ввода

1.4. Разработка простейших программ

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

1.4.2. Алгоритм и способы его записи.

1.4.3. Изображение алгоритмов в виде блок-схем

1.4.4. Базовые структуры алгоритмов и их кодирование на Паскале

1. Следование

2. Ветвление (развилка)

If условие then

If условие then

3. Цикл

1.4.5. Примеры разработки программ

1.5. Массивы

1.5.1. Понятие массива. Основные правила работы с массивами в Паскале

1.5.2. Примеры программ с массивами

1.614. Структура паскаль-программы

Часть.Подпрограммы

2.1. Общие сведения о подпрограммах

2.2. Процедуры в Паскале

2.2.1.Описание процедур

2.2.2. Обращение к процедуре

2.3. Функции Паскаля

2.3.1. Описание функций

2.3.2. Обращение к функции

2.4. Глобальные и локальные имена

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

2.6. Модули

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

2.6.2. Структура модуля

2.6.3. Использование модулей

2.6.4. Модули как средство программирования

Часть. Обработка символьной информации и документов сложной структуры

3.1. Обработка символьной информации

3.1.1. Символьный тип

3.1.2.Строковые типы

3.1.3. Подпрограммы, работающие со строками

Функции

Процедуры

3.2. Тип запись

3.3. Файлы

3.3.1. Общие понятия

3.3.2. Файлы в Турбо Паскале

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

Пример 1

Пример 2

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

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

Часть IV. Работа с динамическими массивами

Приложение 1. Краткая инструкция по работе в среде Turbo (Borland) Pascal.

Режимы компиляции программы, использующей модули

Приложение 2. Краткая инструкция по работе в режиме консольного приложения средыDelphi. Создание консольного приложения

Сохранение консольного приложения.

Отладка программы

Контрольные вопросы

Заключение

Библиографические ссылки

Содержание

Часть IV. Работа с динамическими массивами 98

Пример.

CONST N=10;

TYPE color=(white,grey,blue,black,red);

MAS1=ARRAY[1..N,1..3];

VAR i,j:INTEGER; A:BOOLEAN; B,C:MAS1; L:color; M:1..N;

Q:ARRAY[1..50] OF INTEGER;

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

Раздел действий

Этот раздел имеет вид:

BEGIN

операторы

END.

Напомним (см. §1.1), что операторы - это выполняемые инструкции языка, т.е. инструкции, которые переводятся в одну или несколько машинных команд. Операторы отделяются друг от друга символом ";".


Часть.Подпрограммы

2.1. Общие сведения о подпрограммах

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

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

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

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


Существует два способа замены формальных параметров на фактические:" по ссылке"17(call-by-reference) и "по значению" (call-by-value). Передача параметра "по ссылке" означает передачу в подпрограмму адреса фактического параметра. При этом любое изменение формального параметра внутри подпрограммы есть изменение соответствующего фактического параметра. Поэтому константы и выражения нельзя передавать "по ссылке" - они могут измениться, «испортиться». Передача параметров "по значению" означает пересылку значения фактического параметра в ячейку, соответствующую формальному параметру, при обращении к подпрограмме. Это обеспечивает сохранность величины фактического параметра. Изменение формального параметра внутри подпрограммы никак не отражается на значении фактического.

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

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

В большинстве алгоритмических языков имеется два вида подпрограмм: подпрограммы общего назначения (в паскале они называются процедурами) и функции. Функции следует использовать, если подпрограмма имеет одно выходное значение (или одно основное выходное значение); классическими примерами функций во всех алгоритмических языках являются стандартные математические функции: синус, косинус, абсолютная величина и т. д. Имя функции является не только именем ее алгоритма, но и именем результата; это имя можно использовать в выражениях (как sin,cos,abs, и т. д.) Говорят, что функция через свое имя возвращает единственный (или основной) результат.


2.2. Процедуры в Паскале

Как всегда при изучении подпрограмм, рассмотрим два вопроса: описание процедур и обращение к ним.

2.2.1.Описание процедур

Описание процедуры состоит из заголовка и блока (тела) процедуры:

Заголовок;

Блок

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

procedureИмяПроцедуры[(CписокФормальныхПараметров)]

Здесь и далее в выделенные квадратные скобки заключены необязательные элементы операторов.

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

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

Изучим структуру списка формальных параметров. Список формальных параметров - это секции формальных параметров, перечисленные через символы ";":

Секция1; Секция2;...;СекцияN

Секция формальных параметров имеет вид:

[VAR] CписокПеременных:Тип;

Указывается стандартный тип или имя нестандартного типа (можно использовать только имя типа, но не его описание!). Имя типа должно быть объявлено во внешнем блоке. В дальнейшем мы увидим, что запрет использования описания типа формального параметра влечет за собой весьма существенные ограничения (см. §2.2.2).

Если перед списком параметров стоит ключевое слово VAR, то эти параметры заменяются на фактические "по ссылке" (в терминах Паскаля такие параметры называютсяпараметрами-переменными).

Если перед списком не стоит VAR, то замена на фактические происходит "по значению" (это параметры-значения).

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

2.2.2. Обращение к процедуре

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


ИмяПроцедуры[(CписокФактическихПараметров)]

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

Пример.Даны две матрицы:аиз 3-х строк и 5 столбцов иbиз 7 строк и 3 столбцов. Вычислить минимальные значения элементов для каждой строки каждой из этих матриц.

Естественно, вычисление минимальных значений строк произ­вольной матрицы следует оформить как подпрограмму (назовем ее minstr), а затем применить ее два раза к конкретным (фактическим) матрицамаи b. Алгоритм ввода одинаков для матрицаиb, поэтому ввод также оформим как подпрограмму (назовем ееmatrin). Вывод массива результатов будет осуществлять подпрограммаmasout.

Таблица 9. Состав данных программы

Имя

Смысл

Тип

Структура

Исходные данные

а

заданные матрицы

вещественный

двумерный массив размером 7*5

b

Выходные данные

mina

минимальные значения элементов строк матрицы a(b)

вещественный

одномерный массив из 7 элементов

minb

Обратите внимание на размеры массивов в таблице 9. Типы фактических и формальных параметров подпрограмм должны совпадать, поэтому размеры формальных массивов должны подходить и для матрицы а, и для матрицыb. Чтобы удовлетворить этому требованию, используем максимальные размеры, подходящие и дляа, и дляb, т. е. память под массивы отводится с избытком. Тип массивов-параметров процедур (и функций) должен быть объявлен в разделеTypeпрограммы (в нашем примере этоmatr для матриц и masдля одномерных массивов – см. текст программы).