Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Задания по ЯиСП 1-14 ИВТ.doc
Скачиваний:
53
Добавлен:
01.04.2015
Размер:
648.7 Кб
Скачать

Задания для самостоятельного выполнения лабораторной работы 10.

1 Вычислите сумму ряда S = 1 + 1/х + 1/2х + 1/Зх + ... 1/nх, для n введённого с клавиатуры.

2 Определите значения функции у=0,4х2-1/х для х изменяющегося от 2 до 10 с шагом 0,5.

3 Bычислить значение n! для n введённого с клавиатуры.

4 Bычислить сумму ряда Y=l!+2!+3! + ... n!, для n введённого с клавиатуры.

5 Вычислить А(А+1)(А+2)...(A+N), для А и N введённых с клавиатуры.

Лабораторная работа 11. Символьные переменные Тип данных "char"

Переменные, предназначенные для хранения одиночных символов, на­зываются символьными переменными. В языке Turbo Pascal для них опреде­лён тип данных CHAR. В переменную этого типа может быть помещён любой из 256 символов расширенного кода ASCII.

Таблица расширенного кода ASCII.

Объявление символьных переменных осуществляется в разделе объяв­ления переменных с помощью служебного слова CHAR.

Этот тип данных обладает некоторыми особенностями. Обычно значе­ния для переменных типа "CHAR" задаются в апострофах. Например, если в программе есть описания

u, v: char то возможны операторы присваивания u:=’a’; v:=u; и т.д.

Штрих ‘’ - принятая в Паскале форма кавычки - употребляется всякий раз, когда значение типа "CHAR" явно указывается в программе. Выполне­ние операторов

u:=’b’; write(u);

приводит к высвечиванию на экране символа b.

Кроме того, имеется возможность задавать значения указанием не­посредственно числового значения ASCII-кода. В этом случае Вы должны перед числом, обозначающим код символа ASCII, поставить знак "#"

u:=#97

П р и м е р 1. Дана последовательность символов, заканчивающаяся символом "/". Необходимо подсчитать количество восклицательных знаков в данной последовательности.

Program ех_1;

var

с: char; { организация символьной переменной }

n: integer; { переменная для хранения количества "!" }

begin

read(с); { чтение первого символа с клавиатуры }

n:=0; { обнуление счётчика "!" }

while с=’/’ do { условие окончания работы вводом символа }

begin

if c=’!’ then n:=n+l; { подсчёт символов "!" } read(c); { чтение следующего символа }

end;

end.

Обратите внимание. В таблице ASCII большие латинские буквы и ма­лые латинские буквы расположены подряд по алфавиту. Такая упорядочен­ность открывает возможность использования в программах операторов цик­ла с параметром, имеющим тип "CHAR". Параметр цикла пробегает последо­вательность символов в указанных границах. Вьполнение оператора цикла

for c:=’a’ to ‘z’ do write(c)

где с символьная переменная, приводит к высвечиванию на экране после­довательности всех малых букв латинского алфавита:

abcdefghhijklrrjiopqrstuvwxyz

Выполнение оператора цикла

for c:= ‘z’ downto ’a’ do write (c)

приведёт к выводу этих же букв в обратном порядке.

Символьные переменные очень удобны для написания диалоговых прог­рамм. Представим себе, что вам необходимо довольно часто получать зна­чения некоторой функции, например значение синуса от корня квадратного из х для разных значений х.

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

program ех_2;

label 1;

var с: real;

begin

1: write(‘x=’); read(с) ;

writeln(‘ ,f(x)= ‘ , sin(sqrt(x)));

goto 1;

end.

Когда эта программа выполняется, на экране формируется последователь­ность строк (?)

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

Другой вариант - программа, в ходе выполнения которой на экране регулярно возникает вопрос, следует ли продолжать работу, или прекра­тить выполнение программы:

program ех_3;

var х: real; s: char;

begin s:=’д’;

while s=’д’ do begin write(‘x=’); read(x); writeln(‘ f(x)= ‘, sin(sqrt(x))); writeln(‘ продолжить?(д или н) ‘); read(s); write(‘ ‘); end; end.

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

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

Описание функций работающих с символьными переменными.

CHR(x: byte): char;

Преобразует целое число, имеющее тип BYTE, в один символ ASCII-кода. Следующая программа иллюстрирует возможности функции "CHR". Она выдаёт все символы кода ASCII на экран. При этом некоторые символы ASCII-кода (например 7, 10, 13) при обычных условиях не имеют изображения, а используются для реализации специальных функций (пере­вод курсора и т.д.) Благодаря использованному в операторе Write форма­ту каждый из изображаемых символов отделяется от соседнего пробелом (занимает две позиции)

Program ех_4;

var

i: byte;

begin

for i:=0 to 255 do write(chr(i):2); end.

ORD(c: char): byte;

Функция Ord выполняет действие, обратное функции Chr, т.е. возв­ращает порядковый номер символа параметра в таблице ASCII.

UpCase(c: char): char;

Осуществляет преобразование символов английского алфавита из строчных символов в прописные. Bсе остальные символы при применении этой функции остаются непреобразованными.

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

  1. Какие переменные называют символьными переменными?

  2. Опишите тип данных CHAR.

  3. Как используется в языке Turbo Pascal символ номер 39.

  4. Какие преобразования выполняет функция ODD?

  5. Какие преобразования выполняет функция CHR?

  6. Какие преобразования выполняет функция UpCase?

  7. Как используются специальные символы - "управляющие коды"?

  8. Сколько символов содержится в таблице ASCII?

  9. Опишите использования формата вывода информации в операторе Write

  10. Как сравниваются символьные переменные при вычислении условий?