Назад на содержание Переменные и их типы в Pascal


Общая информация

Имена переменных

Типы переменных

Пример

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

Задания


Пример

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

  • Чтобы получить код внутреннего представления символьного, булевского или перечислимого типов, нужно к значению такого типа применить операцию преобразования. W := byte(S) ;

  • Несколько дополнительных замечаний по поводу перечислимых типов. Кроме операций сравнения, для значений перечислимых типов определены стандартные функции Pred и Succ. Они вызываются с одним операндом и возвращают значение, предшествующее значению операнда в множестве типа или следующее за ним. (Эти функции определены для всех дискретных типов, но для перечислимых они являются единственными допустимыми операциями). В версии 7.0 языка Turbo Pascal появились две новые стандартные функции Low и High, позволяющие получать граничные значения перечислимых (и некоторых других) типов. Эти функции очень удачно дополняют функции Pred и Succ, что демонстрирует следующая программа. Она основана на примере из оперативной помощи системы Quick Pascal:

    program Enums; 
    type
    Planets  =   (   Mercury, Venus,  
    		 Earth, Mars, Jupiter, 
    		 Saturn, Uranus, Neptune,  
    		 Pluto  );
    TPlanets = array[Planets] of strinqrSl; 
    const
    PlanetNames : TPlanets = ('Меркурии', 
      'Венера', 'Земля', 'Марс', 'Юпитер',  
      'Сатурн', 'Уран', 'Нептун', 'Плутон');
    Var	
    Planet : Planets; 
    begin
    Writeln('Ближайшей к солнцу планетой является ',
    	PlanetNames[Low(Planets)],'.'); 
    Writeln('Следующая после планеты ',
    	PlanetNames[Low(Planets)],' - ', P
    	lanetNames[Succ(Low(Planets))],'.' ); 
    Writeln('Наша планета ', 
    	Ord(Earth)+l,'-я от Солнца.'); 
    Writeln('Соседями нашей планеты являются ', 
    	PlanetNames[Pred(Earth)], ' и ', 
    	PlanetNames[Succ(Earth)],'.'); 
    Writeln('Предпоследней планетой от Солнца является ',
    	PlanetNames[Pred(High(Planets))],'.');
    Writeln('Самая последняя планета -  ',
    	PlanetNames[High(Planets)],'.') 
    end.
    		

    Результатом выполнения этой программы будет следующий вывод на экран дисплея:
    Ближайшей к солнцу планетой является Меркурий.
    Следующая после планеты Меркурий - Венера.
    Наша планета 3-я от Солнца.
    Соседями нашей планеты являются Венера и Марс.
    Предпоследней планетой от Солнца является Нептун.
    Самая последняя планета - Плутон.

    Более подробное описание стандартных функций Low и High можно найти в описании версии 7.0 языка Turbo Pascal.Наверх

  • Результат сравнения двух различных вещественных типов не всегда очевиден.Это относится и к случаю, когда сравниваются два вещественных числа различных типов.Например, следующая программа:

    		
    {$N+}
    program FloatParadox;
    var
    X : single;
    Y : double;
    begin 
    X := 1/3;
    Y := 1/3;
    Writeln(X=Y) end.
    

    выведет на экран FALSE! Это происходит из-за того, что х имеет точность 7-8 цифр, a Y - точность 15-16; соответственно, когда оба значения преобразуются в extended, они будут содержать различные цифры после седьмой-восьмой цифры. Наверх

  • В процессе работы текущее значение строковой переменной может иметь любую длину от 0 - пустая строка - и до максимальной длины.Следующая программа иллюстрирует эту особенность переменных строковых типов:

    program Stringsl; 
    var
    S:string[20];
    begin
    S:='';{обозначение '' задает пустую строку}
    S:='ABCD';{строка длины 4}
    WriteLn(S);
    {Операция конкатенации - }
    {"склеивание" строк-операндов } 
    S:=S+'EFGHIJK';{теперь S имеет длину > 11} 
    WriteLn(S);
    S := 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
    {Присвоили переменной S строку из 26 символов.}
    {Значением S будет строка из первых 20 символов:}
    {"лишние" символы отбрасываются.}
    {Данная ситуация не считается ошибочной}
    WriteLn(S);
    S [5] := '7'; {Значение можно изменять и так}
    WriteLn('4-ый элемент строки равен ',S[4]);
    end.
    
    Наверх
Hosted by uCoz