Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Afanasjeva

.pdf
Скачиваний:
37
Добавлен:
20.04.2015
Размер:
909.09 Кб
Скачать

10.Ввести двумерный массив размером 7*4. Найти максимальный элемент двумерного массива. Поменять столбец, содержащий этот элемент с последним столбцом двумерного массива.

11.Ввести двумерный массив размером 6*4. Найти минимальный элемент двумерного массива. Переставляя строки и столбцы, добиться того, чтобы элемент оказался в правом нижнем углу.

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

1.Дайте определение массива.

2.Чем массив отличается от последовательности значений?

3.Что определяет номер элемента массива?

4.Сформулируйте свойства массива.

5.Какие типы алгоритмических структур применяются для обработки массива?

6.Какие существуют способы обработки одномерного массива?

7.В чем заключается сортировка одномерного массива?

8.Опишите методы сортировки одномерного массива.

9.Приведите пример и алгоритм сортировки массива.

10.Опишите методы обработки упорядоченных массивов.

11.В чем заключается сущность метода двоичного поиска?

12.Чем двумерный массив отличается от одномерного?

13.Как осуществляется доступ к элементу двумерного массива?

14.Какие существуют способы обработки двумерного массива?

51

Часть II. Программирование на языке Turbo Pascal

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

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

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

-о том, как обозначить каждое данное (какое дать ему имя);

-о характере и диапазонах изменений их значений;

-о требуемой памяти для их размещения;

-о наборе допустимых к ним операций.

Для определения данных Turbo Pascal предлагает использовать способы объявления данных в программе посредством задания их значений или путем задания их типов – для данных, изменяющих свои значения при выполнении программы.

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

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

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

Рассмотрим обобщенную

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

на языке

Turbo Pascal:

 

 

 

program <имя программы>; {заголовок программы}

 

uses <имена модулей>;

{раздел использования модулей}

 

const

{----------

РАЗДЕЛ объявлений ----------

}

{раздел объявлений значений-констант}

<имя константы>= <значение>;

 

 

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

 

...................

 

 

 

52

type

{раздел объявлений дополнительных типов}

<имя типа>=<тип>;

 

 

 

..................

 

 

 

var

{раздел объявлений данных}

 

<имя переменной>:<тип>;

 

 

..................

 

 

 

label

{раздел объявлений меток}

 

<имя метки>;

 

 

 

...............

 

 

 

procedure <имя >(параметры); {раздел объявлений подпрограмм}

 

..............

 

 

 

end;

{конец подпрограммы}

 

function <имя >(параметры); {раздел объявлений подпрограмм}

 

..............

 

 

 

end;

{конец подпрограммы}

 

 

{--------

РАЗДЕЛ ОПЕРАТОРОВ ----------

}

begin

........

end.

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

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

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

Целые типы

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

 

Целые типы данных

Таблица 1

 

 

 

 

 

 

 

Тип данных

Диапазон значений

Размер в байтах

 

 

 

 

 

BYTE

 

 

 

(целое длиной в байт)

0..255

1

 

 

 

 

 

53

 

 

Окончание табл. 1

 

 

 

 

SHORTINT

 

 

 

(короткое целое)

-128..127

1

 

 

 

 

 

INTEGER

 

 

 

(целое)

-32768..32767

2

 

 

 

 

 

WORD

 

 

 

(длиной в слово)

0..65535

2

 

LONGINT

 

4

 

(длинное целое)

-2147483648..2147483647

 

 

 

 

 

Примеры объявления целочисленных данных:

var a:integer; c,d:byte; f:shortint; const step=1;

mm:word=65500;

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

sqr(x) – возведение в квадрат Х, abs(x) – модуль Х,

+ сложение, - вычитание, * умножение, / деление,

div – деление нацело,

mod – получение целочисленного остатка и др. Рассмотрим действия двух последних операций: 12 mod 2 = 0, так как 12 делится на 2 без остатка. 13 mod 2 = 1, 12 div 2 = 6, 10 div 3 = 3.

54

Вещественный тип

Эта группа типов обозначает множество вещественных значений в различных диапазонах. Turbo Pascal поддерживает четыре различных вещественных типа, которые приведены в таблице 2.

 

Вещественный тип данных

Таблица 2

 

 

 

 

 

 

 

 

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

Диапазон

Число цифр

Размер

 

тип

десятичного порядка

мантиссы

в байтах

 

REAL

 

 

 

 

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

-39...+39

11...12

6

 

 

 

 

 

 

SINGL

 

 

 

 

(с одинарн. точн.)

-45...+38

7...8

4

 

 

 

 

 

 

DOUBLE

 

 

 

 

(с двойн. точн.)

-324...+308

15...16

8

 

 

 

 

 

 

EXTENDED

 

 

 

 

(повыш. точности)

-4951...+4932

19...20

10

 

 

 

 

 

 

COMP

-263 +1...+263 -1

19...20

8

 

(сложный)

 

 

 

 

 

 

В памяти ПЭВМ вещественное число занимает участок памяти в несколько байт (от 4 до 10), который имеет следующую структуру:

ЗНАК

ПОРЯДОК МАНТИССА

Вещественные числа типа SINGLE, DOUBLE, EXTENDED могут быть использованы в программах, если в конфигурации ПЭВМ имеется математический сопроцессор. Однако, если в программе установить директивы компилятора {$ N+}, {$ E+}, то программа с этими типами будет работать и без сопроцессора правильно.

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

-5.09 0.445

3.12Е-01 {эта запись обозначает число 3.12*10^-1 или 0.312}

55

4.5Е+10.

Рассмотрим примеры объявления данных вещественного типа.

const beg1=0.1234;

en1:real=333E-11;

var

x,y,z : real;

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

sin(x),

cos(x),

arctan(x),

exp(x) {экспонента}, frac(x) {дробная часть}, int(x) {целая часть}, ln(x),

round(x) {округление Х до ближайшего целого}, sqrt(x) {корень квадратный}.

Логический тип

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

const a=true; var b:boolean;

Для данных логического типа определены следующие логические

операции

 

NOT – отрицание

NOT(True)=false;

OR – логическое сложение (ИЛИ)

True OR False = True;

AND – логическое умножение (И)

False AND True = False;

XOR – исключающее ИЛИ

True XOR True = False;

 

True XOR False = True;

56

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

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

'f' 'Б' '='.

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

#10 #65 #13.

Для получения кода символа S можно применить функцию ord(S).

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

chr(<Код символа>).

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

Рассмотрим пример объявления переменной символьного типа:

var cimv:char; const vsym='A';

Строковый тип

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

var

vystr:string[18];{vysrt - 18 символов} str1:string[88];{str188 символов} str2:string;{str2255 символов по умолчанию} const

one_str='PASKAL'; two_str='#13#70';

Фактическую длину строки SS можно определить с помощью стандартной функции length(SS).

Клюбому символу строки можно обратиться по его номеру,

например: str1[2],str2[200].

Кстрокам можно применять операцию сцепления или конкатенации

«+»:

57

vystr + one_str, 'Моя '+'программа',

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

Рассмотрим некоторые функции, определенные над символьными данными:

copy(st,index,count) – функция копирует из строки st; count символов, начиная с символа с номером index;

pos(subst,st) – функция отыскивает в строке st первое вхождение подстроки subst.

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

1.Что такое строки, какие стандартные функции применимы к ним?

2.Как изображаются и объявляются числа?

3.Что включают в себя имена данных?

4.Какие существуют способы определения данных?

5.Что такое тип данных и какие типы данных существуют в Turbo Pascal?

6.Диапазон значений типа BYTE, допустимые операции и функции для целых значений?

7.Из каких разделов состоит программа Turbo Pascal?

8.Какие допустимы операции над логическими данными, какие значения они могут иметь?

9.Для каких целей используют функции ORD и CHR?

58

2. ВВОД И ВЫВОД ЗНАЧЕНИЙ ДАННЫХ

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

Рассмотрим эти способы.

2.1. Ввод с клавиатуры

Для этого используются операторы ввода Read(<список имен переменных>) и Readln(<список имен переменных>).

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

Получив инструкцию read или readln, ПЭВМ приостанавливает работу и ждет, когда пользователь введет с терминала значения, которые будут по очереди присваиваться переменным, стоящим в списке ввода. Когда все переменные примут определенные пользователем значения, выполнение программы будет продолжено с оператора, следующего за read\readln.

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

При использовании read ввод последовательности значений

склавиатуры может осуществляться либо через пробел либо через клавишу ввод, а при использовании readln – только через клавишу ввода (ENTER).

Пример 2.1. program with_klav; var

a,x:real;

b:integer;

c:char;

stroka:string; begin

read(a,x);

readln(b);

readln(c);

readln(stroka);

end.

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

59

2.2.Ввод с помощью константы

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

const

<имя>=<значение>; {именованная} или

const

<имя>:<тип>=<значение>; {типизированная}

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

Пример 2.2.

program post;

 

const

 

h=7;

{константа целого типа}

y=5.87;

{константа вещественного типа}

x:real=6.98799; {типизированная константа} t='*'; {константа символьного типа} r='информатика'; {константа строкового типа} n:boolean=false; {константа логического типа} begin

x:=x+h*y;

end.

2.3. Ввод с помощью оператора присваивания

Оператор присваивания := является основным оператором языка; он предназначен для изменения значения данных. Его обобщенный вид:

<переменная>:=<значение>;

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

Пример 2.3. program prisv; var

y: integer; k,x: real; v: char; s: string;

log: boolean;

60

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]