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

Формат вывода.

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

VAR результат выполнения программы:

i: integer;

begin 134 (цифра 4 - в шестой колонке)

i:=134; Ццифра 1 - в 10-ой колонке)

writeln(i:6); 614 (цифра 4 - в 7-ой колонке)

i:=l;

writeln(i:10);

i:=312;

writeln(i+i:7);

end.

Для выражений вещественного типа в списке вывода можно задать общую ши­рину поля вывода (считая точку) и число позиций под дробную часть.

VAR результат выполнения программы:

rreal;

begin 134.0400 (цифра б - в восьмой колонке) г:=134.04; -11.32 (цифра 2 - в 7-ой колонке) writeln(r:8:4); 31.5200 (цифра 2 - в 7-ой колонке) r:=-11.32;

writeln(r:7:2);

r:=31.52;

writeln(r:9:4);

end.

Если нужно вывести на экран какой-то текст (например, пояснительного харак­тера), этот текст следует заключить с обеих сторон в апострофы и вставить в нужное место списка вывода.

VAR

a: integer;

begin

\уг11е1п('введите целое число');

readln(a);

writeln('KBanpaT числа ',а,' равен ',а*а);

end.

Пример решения задачи.

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

НЕ нашли? Не то? Что вы ищете?

1. Итак, исходными данными в задаче являются два числа, значения их могут быть лю­быми, поэтому естественно считать, что это вещественные числа. Для хранения зна­чений исходных данных нам понадобятся две переменные вещественного типа, на­зовем их А и В.

2. Сумму чисел можно найти, вычислив выражение А + В.

Разность - вычислив выражение А - В.

Произведение - вычислив выражение А * В.

Частное - вычислив выражение А/В. Значение каждого выражения надо вывести на экран. Алгоритм решения понятен. Обратите внимание на то, что при записи выражений мы использовали имена переменных, а не конкретные значения (свойство массовости). Действительно, алгоритм будет верен для любых двух вещественных чисел.

3. Запишем алгоритм на языке PASCAL.

program PROBA;

VAR

A, B:real;

begin

луп1е1п('введите первое число');

readln(A); i,

ут1е1п('введите второе число');

readln(B);

writeln('A+B=',A+b:7:2);

writelnCA-B^A-b:?^);

writeln('A*B=',A*b:7:2);

writeln('A/B=',A/b:7:2);

end.

Упражнение 8.

1 .Выполнить " вручную " следующую программу, описать действие каждого оператора, по­казать, что появится на экране дисплея в результате выполнения программы, если на ее запрос о значениях А и В будут введены числа 10 и 5.

PROGRAM probal;

var

a, b,y, z: integer;

begin

ууп1е1п('введите А, В');

read(a, b);

y^sgi^+b;

z--sc[T(b)+a;

writeln('y=',y; z-',z);

end.

Перечислите использованные в программе идентификаторы. Какие из них используются для исходныхданных, какие для результатов?

2.Есть ли ошибки в следующей программе? Если есть, исправьте их. Program proba2 begin \уп1е1п('введите значение X');

writeln('X в квадрате равен',х*х);

end. var х: integer;________

§7. Стандартные математические функции. Генератор случайных чисел. Программирование линейных алгоритмов с использованием числовых данных

7.1. Стандартные математические функции

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

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

7.2.Правила вызова стандартной функции

• Имя функции записывается латинскими буквами.

^ Аргумент функции ( если он имеется ) записывается в круглых скобках по­сле имени функции.

^ Аргументом функции может быть константа, переменная или выражение.

«^ Результатом вызова функции является значение, которое можно использо­вать в выражениях и операторе вывода.

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

7.3. Стандартные математические функции

Abs(x), Sqr(x), Sqrt(x), Ехр(х), Ln(x), Sin(X), Cos(X) О функциях Ехр(х) - e", Ln(x) - Inx можно только упомянуть.

*Примечание: в Паскале нет функции возведения числа в любую степень.

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

В ТУРБО ПАСКАЛЕ уже определена константа я, имя этой константы - Pi. Формула Pi*x/180 дает значение аргумента в радианах, если х задан в градусах. Две функции округления при выводе результатов:

Trunc(x) - отсечение дробной части вещественного числа, результат целый;

Round(x) - округление вещественного числа до целого (по правилам арифмети­ки).

Стандартные функции в языке Паскаль

Функции___Назначение Тип результата Abs (x) абсолютное значение аргу - совпадает с типом х

______ мента______________ _____________

Sqr (х) квадрат аргумента______ совпадает с типом х

Sqrt (х) квадратный корень аргумен - вещественный

______та_______________;_____________

Sin (х) синус аргумента_______вещественный___

Cos (х) косинус аргумента______вещественный___

Ln (х) логарифм аргумента_____вещественный___

Ехр (х) экспонента аргумента____вещественный___

Trunc (х) отсечение дробной части целый________

Round (х) округление до целого числа целый________

7.4.Генерация случайных чисел. Функции и процедуры для получения случайных чи­сел

Генератор случайных чисел служит для моделирования процессов, которые нужно воспроизвести в реальной ситуации (например, при программировании некото­рых игр нужно смоделировать бросание кубика). Пример получения двух случайных чисел 0 или 1 - с помощью простейшего генератора - это бросание монеты: выпадает "орел" - 0, выпадает "решка" -1.

Функция Random "(N:integer) возвращает случайное число целого типа, параметр указывает на диапазон значений случайного числа. Функция Random без параметров возвращает случайное вещественное число из диапазона [0 1). Пример:

Y-RandomQO);

Z:=Random;

первый оператор присвоит переменной Y случайное целое число из интервала

0<=Y<10

второй оператор присвоит переменной Z случайное вещественное число в диапазоне [0 1).

Как нужно объявить переменные F, Z ?

Randomize - процедура без параметров, которая инициализирует генератор слу­чайных чисел( в зависимости от показания системных часов).

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

Алгоритм получения случайного числа.

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

Формулы получения случайного числа из любого диапазона.

1. Получение случайного вещественного числа из [0 1) в переменной Z. Z:=Random;

2. Получение случайного вещественного числа из [0 k) в переменной Z, где к-положительная константа. Z:=k1" Random;

3. Получение случайного вещественного числа из [А В) в переменной Z, где А, В - константы.

Z:=A+Random*(B-A);

4. Получение случайного целого числа из [0 k) в переменной Y, где к-положительная целая константа. Y^RandornQc);

5. Получение случайного целого числа из [А В) в переменной Y, где А. В-целые константы. Y:=A+Random(B-A);

Функции можно использовать в записи выражений в операторе присваивания и в опе­раторе вывода на экран.

Если функция или процедура имеет параметры, то они записываются в скобках после имени функции или процедуры.

Примеры.

1. Вычислить синус 30 градусов. Решение.

program sinus;

var x, y:real;

begin х:=30.;

x:=x*Pi/180;

y:=sin(x);

\угпет(^№(30)^',у:3:2);

end.

2. Проверить тождество sin^ + cos^l program sumkvad;

var x, y:real;

begin x:=random(360);

x-x-Pi/180;

y:=sqr(sin(x))+sqr(cos(x));

writeln('cyMMa квадратов синуса и косинуса=',у:3:2);

end.

3.Составить программу, выводящую на экран 5 случайных целых чисел для игры в "рулетку".

Решение.

program number;

varcl, c2,c3,c4,c5: integer;

begin Randomize;

cl:=Random(37); c2:=Random(37); c3:=Random(37);

c4:=Random(37); c5:=Random(37);

Writeln(c2,c2,c3,c4,c5) end.

Программирование по формулам

Линейные алгоритмы описывают решение задач с последовательным выполне­нием действий. Обычно такие действия идут в следующем порядке:

. ввод исходных данных( может отсутствовать, тогда данные задаются внутри

программы),

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

Блок-схема линейного алгоритма.

Упражнение 9.

1. Записать выражения, содержащие стандартные функции, на языке Паскаль

х^+Зх-у /1-со$2я

Z=—————Y= I————— Asin+B V 2x

2. Пусть описаны следующие переменные var x, y,m:real;

iJ, k: integer;

Найдите ошибки в приведенных ниже операторах с использованием стандартных функций. m:=siny;

i:=sin(y);

x:=cos(2m);

З. Как вычислить х", используя умножение и возведение в квадрат, за наименьшее число опе­раций?

y:=sqr(x); z:=sqr(y); u:=sqr(z)*y*x; 1. Вычислить выражение

F=2(x-l)2 - 3(x+l) -5

Значение х задается случайным образом из интервала [0 3). Значения х и F вывести на экран.

4. Вычислить выражение, где х - случайное число из интервала [-3 2]

(г+г-,—— F=———-——7-2 где z^^|x2+4 3 x-4

Рекомендация:

Сначала составить блок - схему алгоритма.

5. Определить количество краски, необходимое для окраски пола в комнате. Расход краски на 1 кв. м составляет 100 г. Составить программу, запрашивающую необходимые исходные данные и выдающую на экран результат вычисления.

6.Какое количество рулонов понадобится для оклейки обоями одной стены комнаты, если дли­на рулона 10 метров, а ширина меньше длины стены в 4 раза.

Исходные данные: h • высота комнаты ( вводится с клавиатуры ) 1 - длина комнаты, а нужна ли она? (Нет).

Результат: n - количество рулонов обоев, целое число. s=4*h/10 - количество рулонов(может быть не целым, в этом случае дробная часть отбрасыва­ется и прибавляется один рулон). Выяснить, почему нельзя использовать округление до целого?

§8. Строковый тип данных. Программирование линейных алгоритмов, с использованием строковых величин

8.1. Строковые данные: назначение, описание, операции

В информатике строка - произвольная последовательность символов. Символы, из которых составляются строки, представлены на клавиатуре компьютера. Для хране­ния строк в языке имеются специальные переменные, называемые строковыми пере­менными, которые выделены в специальный тип. (напомнить учащимся определение типа: тип - это множество значений, которые могут принимать объекты программы, и совокупность операций, допустимых над этими значениями).

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

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

Строка - это последовательность символов кодовой таблицы персонально­го компьютера.

Количество символов в строке (длина строки) может изменяться от 0 до 255. Константы строкового типа.

Константа строкового типа - это любая цепочка символов языка Паскаль, заключенная в апострофы.

Описание строковых переменных.

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

Формат Type <имя типа> = string [максимальная длина строки];

Var <идентификатор,...> : <имя типа>;

Переменную типа string можно задать и без описания типа:

Var -^идентификатор,... > : string [максимальная длина строки];

Пример:

Const Adres = 'ул. '; { строковая константа } Type Plot =string[ 125];

Var Fstr : Flot; { описание с заданием типа }

Sti : string; { по умолчанию длина строки = 255 }

St2, St3 : string[50];

Nazv : string[280]; {ошибка, длина Nazv превышает 255 }

Выражения, в которых операндами служат строковые данные, называются строковыми. Они состоят из строковых констант, переменных, функций и знаков опе­раций.

Над строковыми данными допустимы операция сцепления и операции отноше­ния. Операция сцепления (+) применяется для сцепления нескольких строк в одну ре­зультирующую строку.

Выражение Результат Turbo'+'-'+'Pascal' Turbo-Pascal'

Длина результирующей строки не должна превышать 255.

Операции отношения подробно рассматривать не будем. Напомним только, что сравнение производится последовательно по кодам символов, входящих в строку. По­этому 'а' < Ъ', так как код буквы а меньше кода буквы Ь. Занести значение в строковую переменную можно так же как и в числовую переменную: присвоением и вводом с клавиатуры (оператор Readin).

^ Для исключения ошибок ввода значений строковых переменных всегда используется оператор Readin (а не Read).

Для присваивания строковой переменной результата строкового выражения ис­пользуется оператор присваивания (:=). Пример:

Strl := Труппа учащихся'; Str2:= Strl +' 9 класса';

Fio:= '';

В результате выполнения этих операторов переменная S2 будет иметь значение Тропиканка'.

Функции для работы со строками

1. Length(St) - вычисляет текущую длину (количество символов) строки St. Результат

имеет целочисленный тип. Значение St ' var x:integer;' Выражение Length(St) Результат 14

Каким будет результат выражения Length(St), если переменная имеет значение '2+3'? ( Ответ:3).

2. Copy(St, Poz, N) - выделяет из строки St, начиная с позиции Рог, подстроку длиной N символов. Если Poz > Length(St), то результатом будет пустая строка. Подстрока - это часть строки, состоящая из непрерывно следующих друг за другом символов.. После выполнения оператора 811:=сору('математика',3,4) переменная Sti имеет значе­ние 'тема'.

Каков результат выполнения оператора 812:=Сору('стройка',2,6) ? (Ответ: 'тройка').

3. Pos(Strl, Str2) - обнаруживает первое появление подстроки Strl в строке Str2. Ре­зультат имеет целочисленный тип и равен номеру той позиции, где на" ходится первый символ подстроки Strl. Если в Str2 подстроки Strl не найдено, результат равен 0. Пример: ;

Пусть переменная Strl имеет значение'абракадабра' ' N:=Pos('6paK',Strl); 1 после выполнения оператора переменная N примет значение 2. J Чему будет равна переменная N после выполнения следующего оператора: N:^ ' | Pos('in',Strl)? I (Ответ: 0). :

Примеры решения задач со строковыми данными.

1. Установить : какие типы должны иметь переменные в приведенном фрагменте про­граммы и какие значения они примут после выполнения операций.

s:='ситуация';

st^'ya';

a:=Length(s+'' +st);

n:=Pos(st, s);

insert(st, s,6);

delete(s,4,2);

st:=copy(s, l,3)+ copy(s,7,l);

2. Написать программу, которая из двух строковых констант "КЛАССШКОЛА" и "АБВГДМО " выводит на экран 2 строки, содержащие номер школы и литеру класса, определяет длину этих полученных строк. Например:

ШКОЛА N7

КЛАСС 9Б

Решение. program zada2;

CONST А='КЛАССШКОЛА';

В='АБВГДМ';

varSl, S2:string;

begin S 1 :=:copy(A,6,5)+' '+copy(B,6,1 )+сору(В, 14,1);

S2:=copy(A, l,5)+ • • +copy(B, Length(B),l)+copy(B,2,l);

writeln(Sl, S2);

end.

3. Из перечисленных ниже слов составить и вывести на экран любые новые слова, бу­квы которых идут в исходных словах не подряд. Значения слов задаются как констан­ты.

ФОРМАТИРОВАНИЕ

ПОСЛЕДОВАТЕЛЬНОСТЬ Из первого слова можно составить слово

'MOPTHPA'^M'+'OP'+THP'+'A' Из второго слова можно составить слово

•HOnEHO^'nO'+'nE'+'HO'

4. Составить программу, при выполнении которой на экран дисплея выводится во­прос:

Как тебя зовут?

После ввода с клавиатуры своего имени (.......), на экране дисплея должна появиться

строка

Здравствуй,......... !

вместо многоточия должно стоять введенное имя.

5. Составить программу выделения каждого слова в предложении, состоящем из двух слов, разделенных пробелом. Исходные данные.

S - предложение (строка) - вводится с клавиатуры. Результат:

51 - первое слово,

52 - второе слово. Алгоритм решения.

Определить позицию пробела. А и В - вспомогательные целочисленные переменные. .

6. Написать программу, которая вводит слово и новое окончание, а затем заменяет в этом слове старое окончание на новое. Вывести новое слово. Исходные данные.

а - слово, Ь - окончание вводятся с клавиатуры. Результат.

с - новое слово.

Алгоритм решения.

h - длина окончания. Удалить во введенном слове h символов с конца и сцепить с новым окончанием.

§9. Графический экран

9.1. Графический режим работы дисплея

Обычно экран дисплея находится в текстовом режиме: каждый выводимый i экран символ занимает определенное место в строке (строк на экране, как правило, 2 а число символов в строке - 80).

В графическом режиме экран рассматривается как последовательность точ< (пикселов - от английского picture element), из которых строится изображение.

Количество пикселов в строке и количество строк на экране характеризуют ei разрешающую способность. Например, разрешающая способность 640х480 означае что на экране дисплея в одной строке помещается 640 пикселов, а всего таких стрс 480.

Каждый пиксел характеризуется своим положением на экране: положением строке(координата X) и номером строки (координата Y). Начало отсчета координат левый верхний угол экрана дисплея, это пиксел с координатами (0,0).

Пиксел может светиться или нет, кроме того светиться он может разными щя тами. Каждый цвет, используемый при высвечивании пиксела, является комбинацие красного, синего и зеленого цветов определенной интенсивности. Таким образом, пи] сел определяют следующие атрибуты (характеристики): координаты X, Y и цвет. Ли бое графическое изображение состоит из группы пикселов.

9.2. Процедура инициализации графического режима, процедура закрытия графического режима

Для повышения эффективности процесса программирования графики фирме Borland Int. разработана специализированная библиотека GRAPH, содержащая множ< ство графических процедур и набор драйверов, позволяющих работать практически с всеми существующими дисплеями.

Графический драйвер - это системная программа, которая обслуживает адаптер дисплея.

Драйвер находится в файле с расширением. BGI.

в ш

Информатика

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

USES GRAPH;

С момента подключения модуля GRAPH программисту доступны все находя­щиеся в ней подпрограммы.

В первую очередь вызывается процедура InitGraph, которая устанавливает один из возможных графических режимов. Формат процедуры:

InitGraph(Driver, Mode,'c:\tp7\bgi');

В программе нужно описать переменные Driver и Mode :

VAR Driver, Mode:integer;

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

Driver:=Detect; InitGraph(Driver, Mode,'c:\tp7\bgi');

В этом случае при обращении к процедуре InitGraph используется автоматически определенный тип установленного графического адаптера, a Mode будет содержать но­мер видеорежима. Процедура InitGraph загружает в оперативную память соответст­вующий драйвер, находящийся в каталоге, пугь к которому указан в строковой кон­станте процедуры, и переводит экран дисплея в графический режим (его номер содер­жит переменная Mode).

Дальше программист описывает нужные ему действия для создания гра(}жческо-го изображения, закончив которые, следует закрыть видеорежим с помощью процедуры CloseGraph.

9.3. Установка цвета и стиля заполнения

Установка цвета графического изображения:

SetColor(<кoнcтaнтa_oпpeдeляющaя UBeT>:word);

Установка цвета фона:

SetBkColor(<кoнcтaнтa_oпpeдeляющaя_цвeт_фoнa>:word);

Установка способа закраски:

SetFillStyle(<кoнcтaнтa_cтиля_зaпoлнeния>:word;

<константа _ цвета _зaпoлнeния>:word);

Значения констант приведены ниже.

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

Таблица цветов

Константа

Цвет

Имя

Значение

Black

0

черный

Blue

1

синий

Green

2

зеленый

Cyan

3

бирюзовый

Red

4

красный

Magenta

5

малиновый

Brown

6

коричневый

LightGray

7

светло-серый


в ш

Информатика

DarkGray

8

темно-серый

LightBlue

9

ярко-голубой

LightGreen

10

ярко-зеленый

LightCyan

11

ярко-бирюзовый

LightRed

12

ярко-красный

LightMagenta

13

ярко-малиновый

Yellow

14

желтый

White

15

белый

Таблица констант для стандартных стилей заполнения.

Константа

Стиль заполнения

Имя

Значение

EmptyFill

0

заполнение цветом фона

SolidFill

1

заполнение текущим цветом

LmeFill

2

заполнение символами —

LtslashFill

3

заполнение символами // нормальной толщины

SlashFill

4

заполнение символами // удвоенной толщины

BkslashFill

5

заполнение символами \\ удвоенной толщины

LtbkSlashFill

6

заполнение символами \\ нормальной толщины

HatchFill

7

заполнение вертикально-горизонтальной штриховкой тонкими линиями

XhatchFill

8

заполнение штриховкой крест-

накпест по лиагонали «пелкими» тонкими линиями

InterLeaveFil

9

заполнение штриховкой крест-накрест по диагонали «частыми» тонкими линиями

WideDotFill

10

заполнение «редкими» точками

CloseDotFill

11

заполнение «частьми» точками

9.4. Процедуры создания графических примитивов

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4