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

            for i:=1 to n do Begin

    if a[i]>=0 then  s:=s+a[i]  else Begin k:=i; no:=no+1;

                       end; end; end;

  BEGIN

         writeln('задайте количество массивов'); readln(kol);

       for j:=1 to kol do Begin

         writeln(' задайте размерность массива', j); readln(r);

         prmas(r,s,k,no);

         writeln(' сумма положительных элементов =',s);

         writeln(' последний отрицательный элемент имеет N=', no);

         writeln(' количество отрицательных элементов =', k); end;

         readln;

  END.

 

7.4. Локальные и глобальные описания объектов


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

Program имя программы (возможны опции); {опции не обязательны}

Label …; {раздел описания меток}

Const …; {раздел описания констант}

Туре …; {раздел определения типов}

Var …; {раздел описания переменных}

Function …; Procedure …; {раздел описания функций и процедур}

BEGIN ... END. {раздел операторов}.

Функции и процедуры, в свою очередь, также являются блоками:

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

Var (список выходных формальных параметров);

Label …;

Const …;

Туре …;

Var ...;

function …;

procedure …;

разделы описаний

begin ... end; {тело процедуры}

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

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

          Program Prim38;           { начало блока 1}    label N,M;    Const k=5.6;  Type d=array[1..10] of integer;    Var b,c:real;  i,j:integer;  z,y:d;

 function f(f,b,c:real):real;       { начало блока 2}

         begin f:=1; end;           {конец блока 2}

 procedure proc(f,b,c:real; Var x,y,z:real); { начало блока 3}

        label K,L;

        var d,w,s:real;

     function fp(a,b:real):real;    { начало блока 4}

               begin fp:=1; end;    {тело fp, конец блока 4}

  begin x:=1; y:=1; z:=1; end;      {тело proc, конец блока 3}

      BEGIN b:=1;  END.      {тело основной программы, конец блока 1}

Таким образом, программа состоит из четырех блоков. Все имена меток, констант, типов, переменных, функции f и Рrос известны в блоке 1, поскольку они даны в его описании. Считается, что они описаны здесь локально.

В блоке 2 – function – описаний нет, поэтому своих собственных объектов этот блок не имеет. Формальные параметры не в счет, поскольку они служат только для описания алгоритма вычисления результата с именем f в функции f, а ячейки памяти для b, с, f здесь не выделяются. Однако в этом блоке можно использовать все объекты, которые описаны в блоке 1, так как блок 2 является составляющей частью блока 1. Иногда говорят, что имена объектов блока 1 описаны глобально для блока 2.

Аналогичная ситуация и с блоком 3 – Procedure Рrос. Для нее все объекты блока 1 являются глобальными, т.е. доступны. Кроме того, в блоке 3 имеются свои описанные здесь объекты – метки К, L, переменные d, W, 8, функция fp, которые могут быть использованы только в блоке 3 и не известны в блоках 1 и 2.

Как следствие возможно применение одинаковых имен в различных блоках (см. имя d). В блоке 1 d – массив. В блоке 3 (в Рrос) имеется свое d, которое является собственным в блоке 3 и представляет собой не массив, а ячейку памяти типа real.

8. Строковые данные

 

8.1. Общие замечания


Строка – это последовательность символов длиной 0-255. Для описания данных строкового типа используется слово string, за которым могут следовать в квадратных скобках цифры, определяющие количество символов в строке. Если цифры в квадратных скобках и сами скобки отсутствуют, то для данной ячейки памяти будет выделяться максимально возможная длина: 256 байт для хранения 265 символов. Символьные константы (которые могут храниться) имеют вид совокупности символов, заключенных в апострофы.

Пример: 'a, b, с - символы'.


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

Var а, b, с: string [70];

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

Например, возможны операторы:

а: = 'улица Садовая';

b: = улица Чкалова, 17, хаи';

с: = г. Харьков – большой город';

возможно предварительное описание типа:

Туре a=string [70];

Var b, с: а;

 

8.2. Строковые выражения


Выражения, в которых операндами служат строки, являются строковыми выражениями. Результат – строка. Опишем операции, которые можно применять при написании строковых выражений:

Операция сцепления, знак операции '+'.

'Дом'+' номер'+'43' дает результирующую строку 'Дом номер 43'.

Операции отношения: =, < >, >, <, >=, <=.

Операции отношения выполняются раньше операции сцепления, т.е. имеют более высокий приоритет.

Сравнения между строками производятся посимвольно, слева направо, до первого несовпадающего символа. Та строка считается больше, в которой первый несовпадающий символ имеет больший код по таблице кодов. Результаты сравнения – True или False.

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

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

Допускается при записи выражений строкового типа применять данные, описанные с атрибутом char. В этом случае эти данные интерпретируются как string [ 1]. К отдельным символам данного строкового типа можно обратиться по номеру этого символа в строке (аналогично индексу в массивах). В нулевом байте хранится длина строки.

        Program Prim39;     var st1,st2:string[30];  BEGIN st1:='отдел № 256'; writeln(st1);        {на экране "отдел № 256"}        st2:=st1[10];  writeln(st2);                          {на экране "5"}          writeln(ord(st1[0]));                                {на экране "11"}

             readln; END.

Если бы в var было указано string[10], то writeln(st1), вывел бы результат "отдел № 25"

 

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

 

8.3.1. Процедуры обработки строк

Delete (st, Poz, N) – удаление N символов из строки с именем st, начиная с позиции Poz.

st:='река_Волга'; Delete (st, 1, 5);

Результат 'Волга'.

insert (stl, st2, poz); – вставка строки stl в строку st2, начиная с позиции Poz.

st1: = 'Дом_25_'

st2: =' На_улице_живет_петух_';

insert (stl, st2, 10);

Результат: "На_улице_дом 25_живет_петух";

str (IBR, st); преобразует число IBR (типа integer, byte или Real) и помещает результат в строку st. Возможно после IBR указать ширину поля. Если ширины поля не хватает, оно автоматически расширяется до нужной величины.

str (1500:6, stl); даст результат '_1500';

str (4.8е+03:10, stl); – результат '_ 4.800E+03';

str (-46854:3, stl); – результат '-46854'.

Val (st, IBR, Cod); процедура преобразует значение st в величину целочисленного или вещественного типа и помещает результат в IBR. Значение st должно содержать символьное изображение числа и не содержать символов, не присущих изображению чисел (например, пробелов перед цифрами), букв и т.п. Cod - целочисленная переменная индуцирующая ошибку. Если Cod=0, преобразование произведено без ошибки, если Cod=5, то ошибка при преобразовании – 5 символов.

Программа Program Prim 40; иллюстрирует работу вышеописанных процедур:

        Program Prim40;     var st1,st2:string[30];

  BEGIN st1:=' река Волга ';

        delete(st1,1,5);  writeln(st1);

        st1:='дом 25 '; st2:='на улице живет петух';

Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26



2012 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.