Рефераты. Основы программирования на языке Паскаль

С помощью этих операций можно построить условия любой сложности. Например, пусть необходимо решить задачу:

 

 


Напишем программу:

          Program Prim5;

       Var     a,x:real;

   BEGIN

             writeln('введите а,х');  readln(a,x);

          if (a>0) and (x>0) and (x<=0.5) then

             writeln('z=',a*sqr(x)/sin(x)) else

          if (a>0) and (x>=0.5) and (x<3) then

             writeln('z=',exp(x)) else

          if (a<=0) or (x<=0) then

             writeln('z=',sqrt(a)*sqrt(x)/sin(x)) else

             writeln('z=0');

                           readln;   END.

Замечание: в последнем примере мы видим, что операторы if могут быть вложены друг в друга. Вкладывать их можно неограниченное количество раз, причем новый if может начинаться как после слова then, так и после слова else.

Еще один пример: пусть дана область (заштрихованная на рис. 3.3). Мы вводим с клавиатуры координаты точки. Машина должна определить, принадлежит ли данная точка этой области или нет.

Разобьем область рис. 3.3 на несколько простых:

1. Внутренняя часть сектора, ограниченного отрицательной частью оси OX, положительной OY и окружностью с центром в начале координат и радиусом, равным 2.

 












Рис. 3.3

 
 



2. Прямоугольник, ограниченный осями OX, OY и прямыми x=4, y=2.

3. Прямоугольник, ограниченный осями OX, ОУ и прямыми x=-2, y=-4.

4. Внутренняя часть сектора, ограниченного положительной частью оси OX, отрицательной OY и окружностью с центром в начале координат и радиусом, равным 3.

5. Внутренняя часть квадрата, ограниченного прямыми линиями x=2, x=3, y=-3, y=-4.

6. Область, лежащая внутри окружности с центром x=5, y=-3 и

радиусом= 1,5.

Программа:

           Program Prim6;

       Label N,K,L;

       Var x,y:real; f:char;

 BEGIN   N: writeln('введите координаты точки');

         readln(x);  writeln('x=',x);

         readln(y);  writeln('y=',y);

   if (x<=0) and (y>=0) and (sqr(x)+sqr(y)<=4)              {1-я область}

      or (x>=0) and (x<4) and (y>=0) and (y<=2)             {2- я область}

      or (x<=0) and (x>=-2) and (y<=0) and (y>=-4)        {3- я область}

      or (x>=0) and (y<=0) and (sqr(x)+sqr(y)<=9)         {4- я область}

      or (x>=2) and (x<=3) and (y<=-3) and (y>=-4)       {5- я область}

      or (sqr(x-5)+sqr(y+3)<=2.25)                                   {6- я область}

 then writeln('точка с координатами х=',x,' y=',y, 'принадлежит области')

else writeln('точка с координатами х=',x,' y=',y, 'не принадлежит оласти);

  L: writeln('будем ли ещё вводить координаты точки?, Y, N'); readln(f);

     if (f='Y') or (f='y') then goto N else

     if (f='N') or (f='n') then goto K else

     writeln('неправильно нажали клавишу, попробуйте ещё раз'); goto L;

     K: readln; End.

Замечание: для того, чтобы построить область, необходим здравый смысл и элементарные знания аналитической геометрии. Так, х>=0 определяет область (рис. 3.4)







x>=0 and x<=4  определяет полосу (рис. 3.5)

 








Вспомнив, что уравнение окружности с центром в начале координат x2+y2=r2, имеем  x2+y2£4 (рис. 3.6),


 







x £0 является полуплоскостью (рис. 3.7),

 









y ³0 определяет полуплоскость (рис. 3.8),


 









x £0 and y ³0 есть квадрант (рис. 3.9)

 









и, наконец,

x £0 and y ³0 and sqr(x)+sqr(y)£4 есть сегмент (рис. 3.10)

 










3.4. Оператор case (оператор выбора)


Общий вид:

Case выражение - селектор of

Список констант выбора 1: оператор 1;

Список констант выбора 2: оператор 2 ;

– – – – – – – – – – – – – – – – – – – – – – – – – –

Список констант выбора n оператор n;

else оператор end;

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

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

Работа оператора. вначале вычисляется выражение-селектор, затем полученное значение сравнивается с константами выбора, и, если значение выражения-селектора совпадает с какой-либо константой выбора, то выполняется оператор, стоящий после списка констант, в котором есть константа, совпадающая со значением выражения-селектора. если значение выражения-селектора не совпадает ни с одной из констант выбора, то выполняется оператор, следующий за else. Else может в Case отсутствовать, тогда в случае несовпадения констант оператор Case игнорируется.

Примеры:

1. Селектор целого типа, список констант представлены перечнем констант:





Program Prim7;Var i,z:integer;BEGIN  writeln('введите целое i'); readln(i);

   Case i of

   1,2,5:    writeln('i=',i,'  z=',i+10);

   12,16:    writeln('i=',i,'  z=',i+100);

   31,35,46: writeln('i=',i,'  z=',i+1000);

   else writeln('неправильно задано i'); end;

            readlnEND.

2. Селектор целого типа – список констант представлен диапазоном.

вводится целое i, определить, находится ли оно в диапазоне 1-10 или 11-100, или 101-1000, либо вне этих диапазонов.

Program Prim8;Var i:integer;BEGIN  writeln('введите целое i'); readln(i);   Case i of

   1..10:      writeln(' число в диапазоне 1-10');

   11..100:    writeln(' число в диапазоне 11-100');

   101..1000:  writeln(' число в диапазоне 101-1000');

   else writeln(' число вне диапазона 1-1000'); end;

            readln;  END.

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


            Program Prim9;       Var i:integer;   x,m,a,b,c,d:real;  BEGIN    writeln('введите значение i'); readln(i);           writeln('введите значения  x,m,a,b,c,d');

           readln(x,m,a,b,c,d);

       Case i of

 1,2,4,8,11..20,24,28,30: writeln('y=',(x+1)/(sqr(x)+2)-ln(m)+2*a/b);

 31,45..55:               writeln('y=',(sqr(a)+m)/sqrt(b+m)-3*a*b/c+d);

 58,60,63..76,78,93,100:  writeln('y=',sqr(x)-a*x+sqr(sin(a*x)-exp(x))

                                         /(1-ln(sqr(x)-exp(х/2))));

   else writeln('неправильно задано i'); end;

            readlnEND.

Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26



2012 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.