Работа со строками В начало




Объявление переменной строчного типа.

Var
S: String [20]; {Квадратные скобки со значением указывают максимальную длину строки}

Var st: String;
Begin
Write('Введи строку'); Readln(st);
if st[5] = ‘A’ then Writeln('Пятый символ в строке это А');
end. {Обращаемся к символу, как к элементу массива - строка}

Символ с индексом 0 является байтом, указывающим длину строки.
ORD(st[0]) это текущая длина строки, но можно получить и так LENGTH(st).

К строкам можно применять операцию «+» – сцепление, например:
st:= ‘а’ + ‘b’; st:= st + ‘с’; {st содержит «abc»}

Стандартные процедуры и функции работы со строками.

  CONCAT(S1 [,S2,..., SN]) – возвращает строку, сцепление строк-параметров S1, S2, …, SN.
  COPY(ST, I, C) – копирует из строки ST C символов, начиная с символа с номером I.
  DELETE (ST, I, C) – процедура; удаляет С символов из строки ST, начиная с символа с I.
  INSERT (SB, ST, I) – процедура; вставляет подстроку SB в строку ST, начиная с символа I.
  POS (SB, ST) – отыскивает в строке ST первое вхождение подстроки SB и возвращает номер позиции, если подстрока не найдена, возвращается ноль.
  Str(X: арифметическое выражение; var st: string) - процедура преобразует численное выражение X в его строковое представление и помещает результат в st.
  Val(st: string; x: числовая переменная; var code: integer) - процедура преобразует строковую запись числа, содержащуюся в st, в числовое представление.
  UpCase(Переменная) - позволяет преобразовывать любой символ из строчного в прописной.

Примеры использования строк очень хорошо проиллюстрированы в помощи к Pascal (Shift+F1)


10. Процедуры и функции. В начало

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

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

  Описание конструкции   Пример
  VAR {Объявление переменных программы} x: Integer;s: String; Procedure MyProc(a: Integer; b: String); {Заголовок Процедуры. а и b – фиктивные параметры, работают внутри процедуры} Begin..... {тело Процедуры} End; BEGIN..... {x, s – фактические параметры} MyProc(x,s); {вызов Процедуры}.... END.   Program HelloAll; Procedure Hello(Name:string); Begin Writeln(‘Привет, ‘, Name, ‘!’); Writeln(Name, ‘ как дела?’); Writeln; End; Begin Hello(‘Катя’); Hello(‘Андрей’); Hello(‘Лена’); End.


Пример создания и использования функции из помощи к Pascal.

Program Func;
function IntToStr(i: Longint): string;
{ Функция конвертирует число в строку }
var
string[11];
begin
Str(i, s);
IntToStr:= s;
end;

WriteLn(IntToStr(-5322));
end.

Пояснение. Зачем нужно конвертирование? Если у вас в программе VAR S: String; K: Integer; N: Integer; То Если даже Writeln(S,' - ',K); выдает на экран 5 - 7 то, все равно, нельзя сделать N:=K + S; потому, что N и S - разные типы данных, и S нужно сначала попытаться конвертировать в число. Если эта длиннючая фраза вам понятна, то вы преодолели серьезный рубеж в понимании, что такое типы данных. Если пока что то туманно, продолжайте экспериментировать. Понимание придет неожиданно постепенно.

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

Массивы В начало

Если в программе требуется использовать 10, или 100, или 1000 однотипных переменных, то они могут быть определены для использования в виде массива.

Var Имя переменной-массива: Array [ Диапазон индексов ] Of Тип элементов;

Примеры описания массивов:

Var

S, BB: Array [1..40] Of Real;
N: Array ['A'..'Z'] Of Integer;
R: Array [-20..20] Of Word;
T: Array [1..40] Of Real;

Массив - это переменная с индексом (номером). Имя у всех переменных одно, но при обращении к каждой отдельной мы используем соответствующий номер (индекс).

Правила заполнения массива
  Program M1; Var A: Array [1..10] Of Integer; Begin A[1]:=7; {Заполняем массив значениями } A[2]:=32; A[3]:=-70;.............. {Трудоемкая задача?} A[10]:=56; Writeln(A[1],A[2],A[3],?,A[10]) End. Program M2; Var A: Array [1..10] Of Integer; I: Integer; Begin For I:=1 To 10 Do {Организуем цикл } Readln(A[I]); {вводим A[I] } For I:=1 to 10 Do {Выводим массив} Writeln(A[I],'-',I,’-й’); End. Program M3; Const N=40; {Константа N будет содержать количество элементов массива} Var A: Array [1..N] Of Integer; I: Integer; Begin For I:=1 To N Do Begin A[I]:= Trunc(Random(256)); Write(A[I],'- *-'); End; End. {Массив из случайных чисел}


Двумерные массивы

Массивы могут быть многомерными. Двумерный массив принято называть МАТРИЦЕЙ.

Пример объявления двумерного массива

Var A: Array [1..20,1..30] Of Integer;

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

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

Program M4;
Var A: Array[1..10,1..10] Of Integer;
I, K: Byte;
S: Integer;

Begin
S:=0;
For I:=1 To 10 Do

Begin {Блок заполнения строки<}
For K:=1 To 10 Do
Begin {Блок заполнения строки элементами}
A[I,K]:=Trunc(Random*100)+1;
Write(A[I,K]:6);
If K=I Then S:=S+A[I,K]; {Суммирование диагональных элементов}

End;
Writeln

End;
Writeln('Сумма элементов гл. диагонали = ',S)
End.

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

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


12. Работа с файлами В начало

Данные для долговременного хранения помещаются на диски в виде файлов. Файл, как и любая переменная, должен быть объявлен, например так:

File of Тип данных.
Это означает, что в файл на диск будут последовательно записываться порции данных указанного типа.
Файл состоящий из символьных строк объявляется, как File: text; где File - имя файловой переменной.

Рассмотрим пример с подробными комментариями.

  Uses Crt; Var ch: char; F: text; Name, S: String; Begin Writeln('‘Список класса.’'); Assign(F, 'spis.txt'); Rewrite(F); repeat Write('‘Введи имя ученика: ’'); Readln(Name); Writeln(F, Name); Writeln('Дальше – любая клавиша. Esc- Выход.'); ch:=readkey; until ch=#27; Close(F); Assign(F, 'spis.txt'); Reset(F); while not Eof(F) do begin Readln(F,S); Writeln(S); end; Close(F); readln; End. Дополнительные функции, расширяющие возможности Паскаля, располагаются в модулях, которые перед использованием нужно объявлять Назначаем файлу имя, которое будет являться именем файла на диске Перезапишем дисковый файл. Те данные, что хранились на диске под этим именем перестают существовать Заполняем файл списком класса, пока не будет нажата клавиша Esc Записать имя ученика в файл. Закрываем запись в файл. Операционная система фиксирует размер файла и разрешает работать с ним другим программам. Открываем доступ к файлу для чтения. Предупреждаем операционную систему, что будем читать из данного файла Будем читать, пока не встретим конец - End of file (Eof) Вывод на экран Закрывать доступ при чтении не обязательно,

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



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2018-01-08 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: