Мегаобучалка Главная | О нас | Обратная связь


Оператор цикла с предусловием



2015-12-04 637 Обсуждений (0)
Оператор цикла с предусловием 0.00 из 5.00 0 оценок




Команды управления движением курсора

− перемещение курсора на символ вправо;

 

− перемещение курсора на символ влево;

 
 


− перемещение курсора на строку вверх;

 

− перемещение курсора на строку вниз;

 

[Home] −перемещение курсора в начало текущей строки;

[End] − перемещение курсора в конец текущей строки;

[Page Up] − перемещение курсора на страницу вверх;

[Page Down] − перемещение курсора на страницу вниз;

Примечание. Страница − это один экран (21 строка).

[Ctrl^Home] − перемещение курсора в левый верхний угол экрана;

[Ctrl^End] − перемещение курсора в левый нижний угол экрана.

Команды вставки и удаления текста

[Insert] − включение и выключение режима вставки;

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

[Delete] − удаление символа, стоящего в позиции курсора;

[Back Space] − удаление символа, стоящего слева от курсора;

Примечание. Иногда на этой клавише написано <BS>, а иногда это стрелка [←], расположенная над клавишей ввода [Enter]).

 

[Ctrl^N] − вставка пустой строки над строкой, в которой находится курсор;

[Ctrl^Y] − удаление строки, в которой находится курсор.

 

§4. Первая программа

 

Программа начинается с заголовка, имеющего следующий вид;

Program <имя программы>;

За ним идут разделы описаний, в которых должны быть описаны все идентификаторы (константы, переменные, типы, процедуры, функции, метки), которые будут использованы в программе.

После разделов описаний идет раздел операторов, который начинается со служебного словаBegin и заканчивается служебным словом End. В этом разделе задаются действия над объектами программы, объявленными в разделе описаний. Операторы в этом разделе отделяются друг от друга точкой с запятой. После последнего слова End ставится точка.

Разбор примера

Program Proizvedenie_1;

Var a,b,rez: Integer;

Begin

Writeln('Введите два числа через

пробел');

Readln(a, b);

rez:=a*b;

Writeln('Их произведение равно ',rez);

Writeln('Нажмите <Enter>');

Readln;

End.

Пояснения к программе

Имя этой программы Proizvedenie_1. Заметим, что в имени программы не должно быть пробелов, оно должно начинаться с буквы, состоять только из латинских букв, цифр и некоторых специальных символов (в нашем примере использован символ "подчеркивание"). Из разделов описаний имеется лишь один − раздел описания переменных. Он начинается со служебного слова Var, после которого идет последовательность объявлений переменных, разделенных точкой с запятой. В каждом объявлении перечисляются через запятую имена переменных одного типа, после чего ставится двоеточие и указывается тип переменных. В нашем примере описаны три переменные: все они (a, b и rez) имеют целый тип (integer), то есть значения переменных этого типа − целые числа.

После раздела описаний переменных идет раздел операторов, начинающийся со служебного словаBegin, после которого расположены операторы языка. Первый оператор − это Writeln('текст') − записать (вывести) на экран текст, заключенный между апострофами, Ln добавляется в конце этого оператора для того, чтобы курсор автоматически переходил в начало следующей строки.

Следующий оператор − Readln(a,b) − читать данные с клавиатуры. В данном случае необходимо ввести два целых числа через пробел, тогда переменной а присваивается значение, равное первому введенному числу, а переменной b присваивается значение, равное второму введенному числу. Например, вы ввели числа 12 и 45, тогда а=12, а b=45. В конце этого оператора также можно ставить Ln.

После этих двух операторов стоит оператор присваивания: rez:=a*b; (:= − это знак присваивания в языке Паскаль). При выполнении этого оператора переменная rez получит значение, равное произведению числа а на числоb. Так как в результате умножения двух целых чисел получается целое число, то переменная rez описана как целая (integer).

Следующий оператор − это снова оператор вывода Writeln('текст', rez) − он выведет на экран текст, заключенный между апострофами, а за ним значение переменной rez. Затем следующий оператор − Writeln− выведет на экран сообщение <Нажмите [Enter]>, а оператор Readln будет ожидать нажатия указанной клавиши. В конце раздела операторов стоит служебное словоEnd, после которого ставится точка.

Сделаю замечание по поводу записи текста программы, так как это вопрос не только эстетический, но и вопрос эффективности труда программиста. При наборе текста программы ее операторы следует располагать таким образом, чтобы понятной была логика работы программы. Для этого используются пробелы между операторами или элементами операторов, а также отступы. Каждый программист имеет свой стиль использования пробелов и отступов. Пробелы и отступы помогают читателю программы определить уровень подчиненности каждой строки. Компьютерные программы содержат большое количество информации в концентрированном виде, и хорошее форматирование может оказаться очень полезным. Надо иметь в виду, что вряд ли вновь созданная программа сразу будет работать правильно. На отладку программы может уйти больше половины времени ее разработки. Должное внимание к хорошему форматированию, тщательному выбору имен переменных и других объектов программы, разумное документирование программ может значительно увеличить производительность труда. Не следует размещать в одной строке более одного−двух операторов. При записи программы на Паскале допускаются пустые строки, которые можно использовать для выделения логически связанных групп операторов.

Важной частью исходного текста программы являются комментарии. Комментарий представляет собой текст, который находится между фигурными скобками { } или между парами символов, состоящими из круглой скобки и звездочки (* *). Комментарии позволяют включить подробное описание программы и пояснения к ней прямо в исходный текст. Грамотное и уместное применение комментариев упрощает понимание программы, облегчает жизнь ее автору и программистам, работающим с уже готовым текстом. У фигурных скобок есть и нестандартное применение - во время отладки программы часто возникает необходимость временно убрать из программы какие-то операторы, сохранив, тем не менее, их запись. Простейший способ − заключить соответствующий фрагмент программы в фигурные скобки.

Запуск программы

Для того чтобы запустить программу, необходимо выйти в главное меню (например, посредством клавиши [F10] и выбрать режим Run. После запуска программы на экране появится сообщение:

Введите два целых числа через пробел

Курсор окажется в следующей строке. Затем надо ввести два целых числа через пробел и нажать клавишу [Enter]. Появится сообщение:

Их произведение равно...

Вместо точек будет напечатано значение переменной rez, то есть число, равное произведению первого введенного числа на второе. Это сообщение останется на экране до тех пор, пока не будет нажата клавиша [Enter].

Сохранение программы

Для того чтобы сохранить программу, необходимо выйти в главное меню и выбрать пункт File. Затем в появившемся вертикальном меню надо выбрать пункт Save as... Появится окно, в котором можно ввести имя файла. Например, а:\prim1_1. pas; здесь а: − это название диска, "\" − каталог (корневой), prim1_1 − имя файла (оно может содержать не более 8 символов), .pas − расширение, указывающее, что файл содержит программу, написанную на языке Паскаль.

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

* = + [ ] \ | ;:,.<>/?.

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

После того как имя файла набрано, нажмите клавишу [Enter].

Примечание. Для быстрого сохранения файла можно воспользоваться командамиSave илиSave all меню File.

Для того чтобы закончить работу, необходимо выбрать пунктQuit в менюFile или просто набрать комбинацию клавиш Alt^X.

 

§5. Управление позициями и цветом вывода

 

К программам в языке Паскаль можно подключать библиотечные модули, в которых находятся множество процедур для работы с экраном в текстовом режиме, реализации графических возможностей Паскаля и др. Модули поставляются вместе с системой программирования Паскаль, а также могут создаваться программистом для собственных программ. Один из модулей, к которому вы часто будете обращаться − это модуль CRT, который содержит процедуры для работы с экраном в текстовом режиме. Для подключения модуля после заголовка программы запишите оператор использования Uses и после него используемый модуль, например Uses CRT.

В модуле CRT имеется процедура позиционирования курсора, который позволяет установить координаты вывода информации на экран (номер строки y и номер столбца x). Экран при этом представляется в виде прямоугольной сетки знакомест размером 80 столбцов и 25 строк с началом отсчета в левом верхнем углу.

Оператор позиционирования имеет следующий вид:

GotoXY(x,y).

Этот оператор устанавливается непосредственно перед выводом информации.

Для изменения цвета выводимой информации в модуле CRT реализованы операторы изменения параметров цвета символов и знакомест:

TextColor(c1); TextBackGround(c2).

Здесь с1 означает цвет символа (может менять значение от 0 до 15), с2 − цвет фона этого символа (0...7) из стандартной таблицы цветов. В Паскале эти значения могут задаваться как встроенными константами (yellow, red,...), так и их числовыми эквивалентами (14, 4) (кодами).

Цвет Константа Код
Черный Синий Зеленый Бирюзовый Красный Малиновый Коричневый Светло-серый Темно-серый Светло-синий Светло-зеленый Светло-бирюзовый Светло-красный Светло-малиновый Желтый Белый Black Blue Green Cyan Red Magenta Brown LightGray DarkGray LightBlue LightGreen LightCyan LightRed LightMagenta Yellow White

Теперь перепишем первую нашу программу, используя операторы управления цветом и позициями вывода. В эту программу добавим также процедуру ClrScr, которая находится в модуле CRT и используется для очистки экрана.

Program Proizvedenie_1;

Uses CRT;

Var a,b,rez: Integer;

Begin

ClrScr;

TextColor(Yellow);

TextBackGround(Red);

Writeln('Введите два числа через

пробел');

Readln(a, b);

rez:=a*b;

Writeln('Их произведение равно ', rez);

GotoXY(30,15);

Writeln('Нажмите <Enter>');

Readln;

End.

 

§6. Арифметический квадрат.

Абсолютная величина

 

Функция SQR(х) возвращает квадрат значения аргумента, то есть SQR(х)=х2=х*х.

 

Примеры:

sqr(4)=42=16;

при х=13, sqr(х)=sqr(13)=132=169;

npu d=2, e=5, sqr(d+e)=sqr(2+5)=sqr(7)=49;

при x=3, sqr(sqr(x))=sqr(sqr(3))=sqr(9)=81.

 

Функция ABS(х) возвращает абсолютную величину значения аргумента.

Примеры:

abs(12)=12;

abs(-12)=12;

при х=3, у=-5;

abs(x+y)=abs(3+(-5))=abs(-2)=2;

abs(x)+abs(у)=abs(3)+abs(-5)=3+5=8.

Примечание. В Паскале большие и маленькие буквы в именах (переменных, функциях и пр.) не различаются. Не различаются они и при записи служебных слов.

 

§7. Типы данных

 

Использование переменных − основной способ представления информации в процедурном программировании. Любые сложные структуры данных, массивы, указатели, объекты можно рассматривать как разновидности переменных. Основные свойства переменных − это его имя, тип, вид и значение.

Для человека имя переменной − это ее обозначение в программе. Формально выбор имени не имеет значения, но каждому программисту можно посоветовать помнить слова капитана Врунгеля: «Как Вы яхту назовете, так она и поплывет». Удачное имя переменной, соответствующее ее сути, способно облегчить понимание программы.

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

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

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

Переменная в программе может иметь какое−либо значение. Для человека значение − это информационное содержание, а для компьютера − это код в памяти.

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

Порядковые типы называются так потому, что их допустимые значения представляют собой множество, состоящее из конечного числа элементов. В этом множестве есть первый и последний элементы. Кроме того, каждый элемент порядкового типа имеет предшествующий ему и следующий за ним элементы. Так, например, у целого значения 12 есть предшественник (значение 11) и преемник (значение 13). Очевидным исключением являются первый (у него нет предшественника) и последний (нет преемника) элементы.

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

функция Pred(x) определяет значение, предшествующее х;

функция Succ(x) определяет значение, следующее за х;

функция Ord(x) возвращает порядковый номер величины х.

К порядковым типам относятся целый, логический и символьный типы данных.

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

К структурным типам данных относятся массив (Array), множество (Set), файл (File) и запись(Record).

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

В языках со статическими типами тип указывается при описании переменной, он связан с ее именем. Если, например, переменная описана как целая, то в дальнейшем ей нельзя присвоить вещественное или символьное значение. К языкам со статическими типами относятся Паскаль, Си, Бейсик, КуМир.

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

 

§8. Целый тип данных

 

В Паскале имеется несколько целых типов со знаком и беззнаковые. Однобайтовые типы ShortInt и Byte особенно полезны в больших массивах, если их элементы принимают значения из ограниченного диапазона. Их применение в этом случае позволяет уменьшить требования программы к оперативной памяти.

 

Целочисленные типы
Тип Диапазон возможных значений Формат
Shortint -128...127 1 байт со зн.
Integer -32768...32767 2 байта со зн.
Longint -2147483648..2147483647 4 байта со зн.
Byte 0…255 1 байт без зн.
Word 0...65535 2 байта без зн.

 

К данным целого типа можно применять операции "+" − сложение, "—" − вычитание, "*" − умножение и некоторые другие.

Так как в результате деления одного целого числа на другое не всегда получается целое число, то имеются операции:

div − целая часть от деления;

mod − остаток от деления.

Примеры:

19 div 4=4; 12 div 4=3;

-21 div 4=-5; -7 div (-4)=1;

19 mod 4=3; 12 mod 4=0;

-21 mod 4=-1; -7 mod (-4)=-3.

Для быстрой работы с целыми числами определены процедуры:

 

Inc(X) X:=X+1

Inc(X,N) X:=X+N

Dec(X) X:=X-1

Dec(X,N) X:=X-N

Пример 1

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

ProgramExample_1;

Vara, a1, c: integer;

Begin

Writeln('Введите трехзначное число');

Readln(a);

a1:=a mod 10;

c:=a div 100;

Writeln('Количество единиц=', a1,

'Количество сотен=', c);

End.

Пример 2

Даны два числа x и y. Написать программу выдачи на печать меньшего из них, пользуясь формулой

min(x, y)=(x+y-(x-y))/2

ProgramExample_2;

Varx, y, c: integer;

Begin

writeln('Введите два числа');

readln(x,y);

c:=(x+y-abs(x-y)) div 2;

writeln('меньшее из двух чисел',x, 'и',

y, 'равно', c);

End.

Пример 3

Ввести с клавиатуры 2 целых числа m, n>0. Если m делится на n или n делится на m, то вывести 1, в противном случае – любое другое число.

ProgramExample_3;

Varm, n, c: integer;

Begin

write('Введите 2 натуральных числа:');

readln(m,n);

c:=(m mod n)*(n mod m)+1;

writeln('Ответ: ', c);

End.

Пример 4

Ввести с клавиатуры 2 целых числа m, n>0. Если n≤m, то вывести 1, в противном случае – любое другое число.

Примечание: основная идея решения: n div m=0, если n<m, и n-m=0, если n=m.

ProgramExample_4;

Varn, m ,r: integer;

Begin

write('Введите 2 натуральных числа:');

readln(m,n);

r:=(n div m)*(n-m)+1;

writeln(r);

readln;

End.

Пример 5

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

Примечание: в переменных a, b, c, d находятся цифры введенного числа, начиная со старшей (разряд тысяч).

ProgramExample_5;

Varm, n, a, b, c, d: integer;

Begin

write('Введите четырехзначное число: ');

readln(m);

a:=m div 1000; {первая цифра}

b:=m mod 1000 div 100;

c:=m mod 100 div 10;

d:=m mod 10; {последняя цифра}

n:=(a-b)*(b-c)*(c-d)*(d-a)*(a-c)*(b-d)+1;

writeln('Ответ:', n);

readln;

End.

Пример 6

Если четырехзначное число, введенное с клавиатуры, является симметричным (например, 1331, 0550), то вывести 1, в противном случае – любое другое число.

Примечание: в переменных a, b, c, d находятся цифры введенного числа, начиная со старшей (разряд тысяч).

ProgramExample_6;

Varm,a,b,c,d,a1,b1,c1,v,n:integer;

Begin

writeln('Введите четырехзначное число:');

readln (m);

a:= m div 1000; {первая цифра}

b:=m mod 1000 div 100;

c:=m mod 100 div 10;

d:=m mod 10; {последняя цифра}

n:=1000*d+100*c+10*b+a;

{переставляем цифры в обратном порядке}

v:=m-n+1;

writeln('Ответ:',v);

readln;

End.

Пример 7

Ввести с клавиатуры 4 целых числа m, n, k, p>0. Если остаток от деления m на n равен k или p, то вывести 1, в противном случае – любое другое число.

ProgramExample_7;

Varm, n, k, p, a, b, c: integer;

begin

write('Введите 4 целых числа:');

readln(m, n, k, p);

a:=1 div (1+abs(n));

b:=m mod (n+a);

{исключаем деление на ноль}

c:=(b-p)*(b-k)+a+1;

writeln('Ответ:',c);

readln;

End.

Пример 8

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

Примечание: решение задачи основано на использовании следующих фактов: на 3600/12=300 поворачивается часовая стрелка, передвигаясь между двумя соседними цифрами. За это время минутная стрелка проходит целый круг, т.е. 60 минут. Таким образом, пока часовая стрелка поворачивается на 10, минутная проходит 2 минутных деления. Одно же минутное деление соответствует 3600/60=60.

ProgramExample_8;

Varha, h, ma, m: integer;

Begin

write('Введите угол:');

readln(ha);

h:=(ha div 30);

m:=(ha mod 30)*2;

ma:=m*6;

writeln('количество часов= ',h);

writeln('количество минут= ',m);

writeln('угол минутной стрелки= ',ma);

readln;

End.

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

 

§9. Вещественный тип данных

 

В Паскале имеется несколько типов вещественных данных.

Вещественные типы
Тип Диапазон возможных значений Точность Формат
Real 2.9E-39..1.7E38 11-12з. 6 байт
Single 1.5E-45..3.4E38 7-8з. 4 байта
Double 5.0E-324..1.7E308 15-16з. 8 байт
Extended 3.4E-4932..1.1E4932 19-20з. 10байт
Comp -9.2E18..9.2E18 19-20з. 8 байт

 

Константа действительного типа может быть представлена в двух видах: числом с фиксированной и плавающей точкой.

Число с фиксированной точкой изображается десятичным числом с дробной частью (дробная часть может быть нулевой). Дробная часть отделяется от целой с помощью точки, например: 127.3, 25.0, -16.003, 200.59, 0.54.

Число с плавающей точкой имеет вид mЕр, где mмантисса, а р− порядок числа. В качестве m могут быть целые числа и действительные числа с фиксированной точкой, в качестве р − только целые числа. Как мантисса, так и порядок могут содержать знаки "+" и "−".

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

Abs(x) абсолютное значение х

Sqr(х) квадрат х

Sqrt(x) квадратный корень из х

Sin(х) синус х

Cos(х) косинус х

Arctan(х) арктангенс х

Ехр(х) еx

Ln(х) натуральный логарифм х

Trunc(х) целая часть х

Round(х) ближайшее к х целое число

Примечание. В тригонометрических функциях синус и косинус аргумент задается только в радианах.

Выводить данные вещественного типа можно по формату и без него. Если при выводе данных вещественного типа не указан формат, то число выводится с плавающей точкой − мантисса и порядок. На число отводится 17 позиций, при этом в целой части мантиссы присутствует только одна значащая цифра. Изменить стандартную форму вывода можно, используя формат Write(x: m: n), где х − выводимое данное вещественного типа; m − общее количество позиций для вывода числа (включая знак числа, целую часть, точку и дробную часть); n − количество позиций для вывода дробной части. В качестве типа могут быть целые константы, переменные, выражения. Так, использование формата Write(r: 8: 4) для вывода значения r, равного -35,245367, приводит к выводу значения -35.2454.

Пример 1

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

ProgramExample_9;

Vara1, d, n: integer;

s: real;

Begin

writeln('Введите первый член, разность и

число членов арифм. прогрессии');

readln(a1, d, n);

s:=(2*a1+d*(n-1))*n/2;

writeln('Сумма членов арифметической

прогрессии=', s);

End.

Пример 2

Написать программу вычисления площади треугольника по трем сторонам, пользуясь формулой Герона.

 

Program Example_10;

Var a, b, c, p, s: real;

begin

Writeln('Введите длины сторон

треугольника');

readln(a, b, c);

p:=(a+b+c)/2;

s:=sqrt(p*(p-a)*(p-b)*(p-c));

Writeln('Площадь треугольника=',s);

end.

Пример 3

Написать программу нахождения среднего арифметического и среднего геометрического двух чисел.

 

Program Example_11;

Var a, b, sa, sq: real;

begin

Writeln('Введите два числа');

readln(a,b);

sa:=(a+b)/2;

sq:=sqrt(a*b);

writeln('среднее арифметическое=',sa,

'ссреднее геометрическое=', sq);

end.

Пример 4

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

 

Program Example_12;

Var a, b, s, g: real;

begin

Writeln('Введите длины двух катетов');

readln(a,b);

s:=a*b/2;

g:= sqrt(a*a+b*b);

Writeln('площадь=', s,' гипотенуза= ',g);

end.

Пример 5

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

 

Program Example_13;

Var a, b, c, m1, m2, m3: real;

begin

Writeln('Введите длины сторон

треугольника');

readln(a, b, c);

m1:=aqrt(2*a*a+2*b*b-c*c)/2;

m2:=sqrt(2*a*a+2*c*c-b*b)/2;

m3:=sqrt(2*b*b+2*c*c-a*a)/2;

Writeln('медианы равны ', m1,

' ', m2,' ', m3);

end.

Пример 6

Смешали V1 литров воды, имеющей температуру Т1 градусов по Цельсию, с V2 литрами воды, имеющей температуру Т2 градусов по Цельсию. Написать программу вычисления температуры и объема полученной смеси.

 

Program Example_14;

Var v1, t1, v2, t2, v, t: real;

begin

Writeln('Введите значения v1,t1,v2,t2');

readln(v1, t1, v2, t2);

v:=v1+v2;

t:=(v1*t1+v2*t2)/(v1+v2);

Writeln('Объем смеси = ', v,

'Температура смеси= ', t);

end.

Пример 7

Написать программу определения давления на грунт опоры, форма основания которой – круг радиуса r с вырезанным из его центральной части квадратом со стороной а. Масса опоры равна m.

 

Program Example_15;

Var m, r, a, d: real;

begin

Writeln('Введите массу опоры, радиус

основания опоры, длину стороны

вырезанного квадрата');

readln(m, r, a);

d:=9.8*m/(pi*r*r-a*a);

Writeln('Давление на грунт= ',d);

end.

Пример 8

Написать программу вычисления площади параллелограмма по двум сторонам и углу между ними, заданному в градусах.

Program Example_16;

Var a, b, l, s: real;

begin

writeln('Введите длины двух сторон

параллелограмма и величину угла междуми');

readln(a, b, l);

l:=l*pi/180;

s:=a*b*sin(l);

writeln('площадь параллелограмма= ', s);

end.

 

§10. Логический тип данных

 

Переменные логического типа описываются посредством идентификатора Boolean.

Они могут принимать только два значения − FALSE (ложь)иTRUE (истина).

Переменные логического типа обычно получают значения в результате выполнения операций сравнения (отношения): "<" (меньше), ">" (больше), "≤" (меньше или равно), "≥" (больше или равно), "<>" (не равно), "=" (равно). Результат операции отношения равен TRUE, если отношение удовлетворяется для значений входящих в него операндов, и FALSE в противном случае.

В языке Турбо Паскаль имеются логические операции, применяемые к переменным логического типа. Обозначения и результаты этих операций приведены в табл. 1.

Значения операндов Результат операции
X Y not X X and Y X or Y X xor Y
false false true false false false
false true true false true true
true false false false true true
true true false true true false

 

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

not;

•and,*,div,mod;

•or,xor,+,;

• операции отношения.

Кроме того, порядок выполнения операций определяется скобками. Например, в логическом выражении A or В and not (A or В) сначала выполняется заключенная в скобки операция or, а затем операции not,and, or.

В языке Паскаль нет возможности ввода логических данных с помощью оператора Read. Однако предусмотрен вывод значений переменных логического типа с помощью оператора Write. При вводе для идентификаторов FALSE и TRUE отводится по 6 позиций, а сами идентификаторы прижимаются к правому краю поля вывода.

§11. Условный оператор

If <условие> Then <оператор 1>

Else <оператор 2>

 

Выполнение условного оператора начинается с вычисления значения логического выражения, записанного в условии. Если условие истинно, то выполняется <оператор 1>, в противном случае − <оператор 2>. Если в качестве оператора должна выпол­ниться серия операторов, то они заключаются в операторные скобкиBegin-End.

Разбор условного оператора можно выполнить на следующем простом примере.

 

Пример 1

Вывести на экран большее из двух данных чисел.

 

ProgramExample_17;

Var x,y: Integer;

Begin

Writeln('введите 2 числа');

{вводим два целых числа через пробел}

Readln(x,у) ;

If x>y Then Writeln(x)

{если (If) x больше у, то (Then)

выводим x,}

Else Writeln(у);

{иначе (Else) выводим у}

Readln;

End.

Введем два числа − 5 и 7. Переменная х получит значение 5, а переменная у − значение 7 (х=5, у=7). Условие х>у не выполняется, так как 5 не больше 7. Управление передается на оператор, стоящий после Else, то есть Writeln(y), а следовательно, на экране появится 7.

Примечание. Обратите внимание на то, что перед служебным словом Else разделитель − точка с запятой − не ставится.

 

Неполный условный оператор

 

If <условие>Then <оператор>;

ВетвьElse может отсутствовать, если в случае невыполнения условия ничего делать не надо. Например, рассмотрим следующую задачу: если значение переменной х меньше 0, то поменять его на противоположное. Задача решается с помощью такого условного оператора:

If x<0 Then x:=-x;

Если в условном операторе имеется ветка Else, он называется полным, в противном случае − неполным.

 

Пример 2

Написать программу, проверяющую, принадлежит ли число, введенное с клавиатуры, интервалу (0;5) .

Решение

Обозначим через х число, вводимое с клавиатуры пользователем (это переменная целого типа). х принадлежит заданному интервалу лишь в том случае, если одновременно выполняются оба условия: (х>0) и (х<5).

Prugram Example_18;

Var x: Integer;

Begin

Writeln('Введите число х');

Readln(х);

If (x>0) and (x<5) Then

Writeln (х,' принадлежит (0,5)')

Else

Writeln(x,' не принадлежит (0,5)');

Readln;

End.

 

§12. Оператор безусловного перехода.

Раздел описания меток

 

Общий вид оператора

Goto <метка>

где Goto (итди к) − служебное слово, метка − целое число без знака, определяемое в разделе Label как метка оператора. Раздел описания меток (Label) следует после заголовка программы. Любой оператор в программе можно выделить, поставив перед ним метку − целое число без знака, содержащая не более четырех цифр. Метка от оператора отделяется двоеточием. Появление меток в программе дает возможность сослаться на эти метки для изменения хода выполнения программы. Все метки должны быть перечислены в разделе описания меток, например:

Label 1,12, 999;

Раздел Label может отсутствовать, если в программе меток нет.

Оператор перехода Goto производит передачу управления к оператору, помеченному указанной меткой.

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

Пример

Найти количество целых четных чисел, вводимых с клавиатуры. Выход из программы по вводу 0.

ProgramExample_19;

Label 1;

var a,k: integer;

Begin

k:=0;

1: Writeln('Введите число');

Readln(a);

If a<>0 then

Begin

If a mod 2=0 then k:=k+1;

Goto 1;

End;

Writeln('количество четных чисел= ',k);

Readln;

End.

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

Halt − прерывание программы, независимо от того, в каком месте программы стоит эта процедура;

Exit − завершение выполнения текущего блока, переход в его конец.

 

 

§13. Вложенные условные операторы

 

При решении задач часто приходится рассматривать не два, а большее количество вариантов. Это можно реализовать, используя несколько условных операторов. В этом случае после служебных слов Then и Else записывается новый условный оператор.

 

Пример

Даны целые числа а, b, с. Если а<b<с, то все числа заменить их квадратами, если а>b>с, то каждое число заменить наименьшим из них, в противном случае сменить знак каждого числа.

Решение

Условие задачи перепишем следующим образом:

а:=а2, b:=b2, c:=c2, если а≤b≤с

а:=с, b:=с, если а>b>с

а:=-а, b:=-b, с:=-с − в остальных случаях.

Program Example_20;

Var a,b,c: Integer;

Begin

Writeln('Введите числа а, b, с');

Readln(a,b,с);

If (a<=b) and (b<=c)

ThenBegin

a:=sqr(a); b:=sqr(b); c:=sqr(c)

End

Else If (a>b) and (b>c)

ThenBegin a:=c; b:=c End

ElseBegin a:=-a; b:=-b; c:=-cEnd;

Writeln(a:3,b:3,c:3);

Readln

End.

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



2015-12-04 637 Обсуждений (0)
Оператор цикла с предусловием 0.00 из 5.00 0 оценок









Обсуждение в статье: Оператор цикла с предусловием

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

Популярное:
Как построить свою речь (словесное оформление): При подготовке публичного выступления перед оратором возникает вопрос, как лучше словесно оформить свою...
Организация как механизм и форма жизни коллектива: Организация не сможет достичь поставленных целей без соответствующей внутренней...
Почему человек чувствует себя несчастным?: Для начала определим, что такое несчастье. Несчастьем мы будем считать психологическое состояние...



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (637)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.016 сек.)