Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Write(v,t,S)




Курсор у нас уже стоит на второй строке в первой позиции. Начиная с этой позиции слева направо и будут выведены результаты.

ЭКРАН

85.5V2 V8.55ØØØØØØØØЕ+Ø1V2.ØØØØØØØØØØЕ+ØØV1.71ØØØØØØØØЕ+Ø2_

 


Курсор останется в той же строке, т.к. для вывода используется оператор write.

Во второй строке числа представлены в формате с плавающей запятой (формат Е). Количество символов в записи числа зависит от настроек PASCALя. Чаще всего, если формат для вывода вещественных чисел не указан, то для записи числа отводится 17 позиций:

VVVVVVVVVVVVVVVVV

#

знак числа (ес­ли число положительное, плюс не пишется – по­зиция ос­та­ется свобод­ной) одна по­зи­ция для целой час­ти числа (всегда одна!) в третьей позиции всег­да сто­ит точ­ка, отделя­ющая дробную часть числа остальная часть числа записывается здесь до символа Е. Если цифр меньше, чем позиций, то оставшиеся позиции заполняются нулями в четвер­той пози­ции от кон­ца всегда сто­ит сим­вол Е знак «+» или «-» степени, записанной в следующих двух позициях в последних двух позициях - степень (знак степени записан в предыдущей позиции), в которую надо возвести число 10, чтобы получить то число, которое есть на самом деле  

Следовательно, число V1.71ØØØØØØØØЕ+Ø2 следует читать так:

1,71•102.

Как видите, результаты на последнем экране ввода/вывода отделены друг от друга только одним пробелом. Да и то он будет присутствовать не всегда, а только тогда, когда выводимые данные положительны. Этот пробел ЭВМ оставляет для знака числа. Если бы выводимые числа были отрицательными (хотя в нашей задаче v и t не могут быть отрицательными), то и этого пробела не было бы, а вывод был бы, например, таким:

8.55ØØØØØØØØE+Ø1-2.ØØØØØØØØØØE+ØØ-1.71ØØØØØØØØE+Ø2_

Устраивают нас результаты в таком виде? Наверное, нет. Не очень удобно их читать. В последнем примере вывода на экран может вообще из первого числа надо вычесть второе, а потом третье? Где границы записи чисел? Также не понятно, что из выведенных результатов v, что t, а что S. Да и вывод результатов в формате Е в данном случае не очень удобен.

Наверное, было бы лучше, если бы результаты имели следующий вид:

v=85.5VVVVt=2.ØVVVVVVVS=171.Ø

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

write('v=',v:4:1,'VVVVt=',t:3:1,'VVVVVVVS=',S:5:1)

­

для записи числа

всего отводится

четыре позиции. Одна из них – для записи дробной части

Возможна и другая запись этой процедуры вывода. Вместо того, чтобы писать четыре пробела перед t= и семь пробелов перед S= (а если их будет еще больше?), можно использовать форматы для вывода этой информации. Тогда наша процедура вывода будет иметь следующий вид:

write('v=',v:4:1,'t=':6,t:3:1,'S=':9,S:5:1)

­ ­

Что же обозначают эти форматы?

Разберем первый из них:

't=':6

Перед выводом t= будет выведено значение скорости v. В нашем примере мы взяли значение скорости, равное 85,5. В этом числе последний символ - цифра 5. После этой пятерки в следующих шести позициях должно быть выведено

t=

(для записи t= отводится 6 позиций). Получается, что в пятой и шестой позициях (относительно пятерки) и будет выведено t=, а перед буквой t будет 4 пробела, т.е. последний символ предложенной записи, к которой относится указанный формат - в нашем случае это знак равенства - будет в шестой позиции относительно последнего символа в записи значения скорости (относительно последней пятерки). Другими словами, если Вы хотите поставить несколько пробелов перед выводом какой-либо информации (в данном случае четыре пробела перед выводом t=), подсчитайте количество символов в выводимой записи (у нас два символа - t=) и прибавьте к ним то количество пробелов, которое Вы хотите поставить перед этим выводом (всего у нас получается 6).

Итак, экран ввода-вывода будет иметь вид:

ЭКРАН

 
 
85.5V2 v=85.5VVVVt=2.ØVVVVVVVS=171.Ø_

 


После вывода информации курсор останется в той же строке. Если мы захотим запустить нашу программу на выполнение еще раз и найти результаты при других исходных данных, то второй раз исходные данные будут вводиться в том месте экрана, где у нас расположен курсор, т.е. рядом со значением S, рядом с нулем, (если мы не нажмем на клавишу <Enter>). Если же следующая информация будет выводиться, то <Enter> нам не поможет, эта информация будет выведена рядом со значением S. Поэтому лучше будет, если после вывода информации курсор окажется в начале следующей строки. Это осуществляется путем добавления к имени процедуры write двух букв LN (от слова line - строка), которые говорят о том, что после вывода информации курсор окажется в начале следующей строки. Итак, наша процедура вывода приобретает вид:

write LN ('v=',v:4:1,'t=':6,t:3:1,'S=':9,S:5:1)

­

это перевод курсора на следующую строку

Так.как после вывода информации курсор перейдет в первую позицию следующей строки, то экран ввода/вывода приобретет следующий вид:

ЭКРАН

 
 
85.5V2 v=85.5VVVVt=2.ØVVVVVVVS=171.Ø _

 

 


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

WRITELN;

Т.к. список вывода отсутствует, то после выполнения этого оператора курсор просто окажется на новой строке (потому что в процедуре вывода присутствует LN). Итак, процедуры вывода будут иметь вид:

writeln;

writeLN('v=',v:4:1,'t=':6,t:3:1,'S=':9,S:5:1)

а экран ввода/вывода приобретет вид:

ЭКРАН

 
 
85.5V2   v=85.5VVVVt=2.ØVVVVVVVS=171.Ø _

 


Если Вам надо пропустить несколько строк между вводом и выводом, то нужно написать несколько операторов writeln.

Итак, если в процедурах вывода присутствует LN, то следующий ввод или вывод будет осуществляться на новой строке, если же нет, - то на той же.

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

Когда при выполнении программы встречается процедура ввода, то, как мы уже говорили, выполнение программы приостанавливается и ЭВМ ждет ввода исходных данных. А если процедура ввода еще и в середине текста программы находится? Мы будем гадать, чего же компьютер от нас хочет, может зациклилась программа? Поэтому, наверное, было бы лучше, если бы ЭВМ сообщила нам о том, что она ожидает ввод данных, причем, каких данных и в каком порядке их вводить. Для этого мы сами должны написать приглашение к вводу. Т.е. мы хотим, чтобы на экране перед вводом данных появилось следующее приглашение:

Введите v,t

А с новой строки мы уже будем вводить исходные данные. Раз такое приглашение мы хотим вывести на экран, то воспользуемся для этого процедурой вывода:

write ln ('Введите v,t');

­

Для тог, чтобы исходные данные

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

Поставим этот оператор перед оператором read(v,t). Теперь будет понятно, когда вводить, что вводить и в каком порядке.

Запишем окончательный текст программы и экран ввода/вывода.

{ Программа вычисления пройденного пути по формуле S=V*T }

Var

S,v,t:real;

{ Выполняемая часть программы }

Begin

Writeln('Введите v,t');

Read(v,t);

S:=v*t;

{ Вывод результатов }

Writeln;

Writeln('v=',v:4:1,'t=':6,t:3:1,'S=':9,S:5:1)

End.

ЭКРАН

 
 
Введите v,t 85.5V2   v=85.5VVVVt=2.ØVVVVVVVS=171.Ø _

 


Структурную схему составленной программы см. на рис. 21.

 

 


Этот блок соответствует процедуре вывода приглашения к вводу.

 

Эта схема является структурной схемой программы, т.к. каждому блоку соответствует оператор программы, а каждому оператору - блок (в схему мы включили почти весь сервис; процедуру Writeln (без параметров) можно в схемах не отображать).

 

 

Рис. 21

Структурная схема программы

ЗАДАНИЯ

№6. Составьте программы для вычисления значения следующих величин. На О.О.Ф. (область определения функции) функции не исследуйте, считайте, что все величины удовлетворяют О.О.Ф. В программах предусмотрите приглашение к вводу, комментарии, вывод результатов вместе с исходными данными в понятной форме с использованием форматов.

Напишите структурные схемы программ и изобразите экран ввода-вывода.

№7. Дано: целочисленные a и b. Изменить значение переменных a и b, присвоив переменной b значение переменной a, а переменной a - значение b.

№8. Составить программу для вычисления приближенного значения функции

для любого значения х.

Результаты оформить в виде следующей таблицы:

ВЫЧИСЛЕНИЕ ЭКСПОНЕНЦИАЛЬНОЙ ФУНКЦИИ

X EXP(X)  
     

Таблицу располагать с первой позиции экрана, заголовок – симметрично таблице.

№9. Изобразите информацию, которая появится на экране при выполнении следующей программы (исходные данные: х=5,3; y=2):

Var

S,x,y:real;

Begin

Write('Введем y:');

Read(y);

Writeln;

Writeln('Введем x');

Read(x);

S:=x-y;

Writeln;

Write(S);

Writeln;

Writeln(' при х=',y:6;2,'и y=':6,x:7:1);

Write('величина S=',S:5:2)

End.

№10. Изобразите информацию, которая появится на экране при выполнении следующего фрагмента программы:

Read(Z,c);

k:=Z+c;

m:=Z*Z;

Writeln('Исх. данные:',Z,c:5,'результаты:':15,'k=':4,k,'m=':5,m);

если все величины относятся к типу real. Исходные данные: c=8,5; Z=2.

3. ИСПОЛЬЗОВАНИЕ ПЕРЕМЕННЫХ ЛОГИЧЕСКОГО ТИПА. ЛОГИЧЕСКИЙ ОПЕРАТОР ПРИСВАИВАНИЯ

Логический, или булевский, тип обозначается в языке PASCAL стандартным именем

BOOLEAN

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

TRUE (истина) и FALSE (ложь).

В языке PASCAL определены три следующие логические операции (опе­ра­ции указаны в порядке убывания их старшинства):

not - отрицание (НЕ);

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

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

Эти операции применимы только к логическим аргументам и дают результат того же (логического) типа.

Логическое значение дает и любая операция отношения:

Обозначения  
в математике в PASCALе  
£ <=  
< <  
= =  
¹ <>  
> >  
³ >=  

Например, a<b на языке PASCAL будет выглядеть так:

а<=b

При a=3; b=5 это выражение будет принимать значение «истина» - TRUE. А при a=3; b=-5 – «ложь» - FALSE.

Выше была приведена следующая стандартная функция, дающая результат логического типа:

odd(x),

где x - целое. В результате получается значение TRUE, если аргумент х - нечетный; FALSE - в противном случае.

Приведем пример использования этой функции:

var

x: integer;

f: boolean;

begin

x:=5;

f:=odd(x);

……............ Þ f=true




Поделиться с друзьями:


Дата добавления: 2014-12-27; Просмотров: 436; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.065 сек.