Файл: лекции программирование ОЗО.doc

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

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

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

Добавлен: 09.05.2024

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

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

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

Пример: i:=1;

while i<=10 do

begin writeln(‘i=’,i);

i:=i+1

еnd;

Оператор цикла repeatимеет вид:

repeat

операторы

until логическое выражение;

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

Пример: i:=1;

repeat writeln(‘i=’,i);

i:=i+1

until i >10;


Массивы

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

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

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

Массив – наиболее распространенный структурированный тип.

Массив характеризуется:

  • размерностью (количеством индексов)

  • типом индексов

  • типом элементов массива

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

1. Одномерный массив:

Type

<Имя типа> = array [нижний_индекс..верхний_индекс] of

<тип>;

где:

  • <имя типа >— имя типа массива;

  • array — зарезервированное слово языка Delphi, обозначающее, что объявляемое имя является типом массива;

  • нижний_индекс и верхний_индекс — целые константы, определяющие диапазон изменения индекса элементов массива и, неявно, количество элементов (размер) массива;

  • <тип> — тип элементов массива.

Пример:

Type

Temper=array[1..31] of real;

Kоef=array[0..2] of integer;

Name=array[1..30] of string[25];

2. Двумерный массив (матрица):

Type

<Имя типа> = array [нижний_индекс1..верхний_индекс1,

нижний_индекс2..верхний_индекс2] of <тип>;

где:

  • <Имя типа> – имя типа массива;

  • array — зарезервированное слово языка Delphi, обозначающее, что объявляемое имя является именем массива;

  • нижний_индекс1 и верхний_индекс1, нижний_индекс2 и верхний_индекс2— целые константы, определяющие диапазон изменения индексов элементов двумерного массива и, неявно, количество элементов (размер) матрицы;

  • <тип >— тип элементов массива.

Пример:

Type

Matrica=array[1..3,1..2]ofinteger;

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

Var <имя массива> : <имя типа>;

Пример:

Var

T: temper;


m: name;

A,B:Matrica;

Массивы могут быть описаны непосредственно в разделе Var, без использования Type:

1. Одномерный массив:

var

<имя массива>: array [нижний_индекс..верхний_индекс] of тип;

2. Двумерный массив:

var

<имя массива>: array [нижний_индекс1..верхний_индекс1,

нижний_индекс2..верхний_индекс2] of тип;

Пример:

var

T: array[1..31] of real;

m:array[1..30] of string[25];

A,B:array[1..3,1..2] of integer;

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

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

Например:

Пусть описана матрица X:

VarX: array [1..3,1..2] of integer;

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

X[1,1], X[1,2], X[2,1], X[2,2], X[3,1], X[3,2].

То есть быстрее изменяется правый индекс.

При обращении к элементам массива указывается имя массива, за которым в [ ] следует индекс (для одномерного) или индексы (для двумерного) элементов.

Например:

X[1,2]

Т[5]

В общем случае при работе с массивами необходимо предусматривать 3 блока циклической структуры:

1 – блок поэлементного ввода массива

2 – блок поэлементной обработки массива

3 – блок поэлементного вывода массива


Ввод и вывод массивов

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

Ввод одномерного массива можно осуществить, например, так:

for i:=1 to n do read (x[i]); или

for i:=1 to n do readln (x[i]);

где n – количество элементов в массиве; x – имя массива;

i –порядковый номер элемента в массиве;- i–й элемент массива х.

Пример вывода одномерного массива :

for i:=1 to n do write (x[i],’ ‘);или

for i:=1 to n do writeln (x[i]);

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

Ввод двумерного массива a размерности n×m:

{построчный ввод элементов двумерного массива}

for i:=1 to n do

for j:=1 to m do read(a[i,j]);

где n –количество строк в массиве; m – количество столбцов в массиве;

i –номер строки массива; j –номер столбца массива; a –имя массива;

a[i,j] - элемент массива a, находящийся в i –й строке, j –ом столбце.

Вывод двумерного массива a размерности n×m в виде прямоугольной матрицы (каждая строка матрицы начинается с новой экранной строки):

for i:=1 to n do

begin

for j:=1 to m do write(a[i,j],’ ‘);

writeln

end;

Описание и использование данных строкового типа

Строка – это последовательность произвольных символов алфавита. Длиной строки называется количество символов в последовательности. Длина строки не может превышать 255. Для работы со строками в языке Pascal предусмотрен строковый тип данных.

Значением величины строкового типа является строка. Константы строкового типа записываются в апострофах. Например: ’задача’, ’57+38’, ’а’, ’’ (пустая строка).


Описание строковых типов данных:

typeимя типа =string;илиимя типа =string[n];

var имя строки: имя типа ;

или

var имя строки: string; или имя строки: string[n];

где n – длина строки.

Если длина строки не указана, по умолчанию она принимается равной 255.

Примеры: var a: string; x: string[10];

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

Например: s[i] –i- й символ строки s.

Операции над строками

К строкам применимы операции склеивания (конкатенации) и сравнения. Операция склеивания обозначается с помощью символа “+”, а операции сравнения – символами “=”,“<>”,“>”,“>=”,“<”,“<=”.

Операция склеивания добавляет к первой строке вторую.

Примеры: x:=’фор’; y:=’ма’;

z1:=x + y; { z1 =’форма’}

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

Примеры: ‘cb’<‘ab’ результат - false

‘9’>‘123’ результат – true

‘ab’>‘a’ результат – true

Для формирования значения строковой переменной существуют два способа.

  1. Ввод значения с клавиатуры.

  2. Использование оператора присваивания. В левой части оператора присваивания при этом должно быть имя строки, а не ее символ. Посимвольное заполнение строки (подобно заполнению массива) в языке Pascal запрещено. Значение отдельных символов строки можно изменять лишь после того, как строка сформирована.

Например: x:=’кол’; x[3]:=’м’;{x=’ком’}

y:=x+’ок’ {y=’комок’}