Рефераты. Программирование на языке Турбо Паскаль )

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

program PrintSum;

var a,b: integer;

begin

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

  readln(a,b);

  writeln('Сумма a и b равна ',a+b);

  readln;

end.


2.   Функции числовых параметров.

Название

Значение

abs(x)

модуль x

cos(x)

косинус x

frac(x)

дробная часть x

int(x)

целая часть x (т.е. ближайшее целое, не превосходящее x)

pi

число p

round(x)

x, округлённое до целого

sin(x)

синус x

sqr(x)

квадрат x

sqrt(x)

квадратный корень из x

trunc(x)

число, полученное из x отбрасыванием дробной части


Лекция 3. Операторы условного выполнения.

1. Оператор if.

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

if <условие> then <оператор1> else <оператор2>;

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

Пример 1: пусть требуется найти число m=max(a,b). Этой задаче соответствует следующий фрагмент программы на Паскале:

if a>b then m:=a else m:=b;

Пример 2: (без else) пусть дано целое число i. Требуется оставить его без изменения, если оно делится на 2, и вычесть из него 1, если это не так.

var i: integer;

.......

if i mod 2 = 1 then i:=i-1; {else - ничего не делать}

Примечание: в примере использована операция нахождения остатка от деления (mod), для нахождения неполного частного в Турбо-Паскале используется div.

Пример 3: (с использованием составного оператора). Пусть даны две переменные типа real. Требуется поменять местами  значения этих переменных, если a1>a2.

var a1,a2,buf :real;

.........

if a1>a2 then begin

  buf:=a1;

  a1:=a2;

  a2:=buf;             

end;


Следующий пример использует вложенные операторы if.

Пример 4: Поиск корней квадратного уравнения.

program SqEquation;

var a,b,c,d: real;

begin

  writeln;

  write('Введите коэффициенты a,b,c квадратного уравнения : ');

  readln(a,b,c);

  d:=sqr(b)-4*a*c;

  if d>=0 then

      if d=0 then writeln('Единственный корень: x=',-b/(2*a):8:3)

        else writeln('Два корня : x1=',(-b+sqrt(d))/(2*a):8:3,

                               ', x2=',(-b-sqrt(d))/(2*a):8:3)

    else {d<0} writeln('Корней нет');

  readln;

end.

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

Пример 5: пользователь вводит натуральное число, задача программы — поставить слово «ученик» в нужную форму в сочетании с числительным (например: 1 ученик, 3 ученика, 9 учеников и т.п.)

begin

  write('Число учеников (1..20) --> '); readln(n);

  write(n,' ученик');

  if n<5 then begin

    if n>1 then writeln('а');

  end

  else

    writeln('ов');

    readln;

end.

В этом примере пришлось использовать составной оператор (begin ... end;) для того чтобы часть else относилась не к оператору if n>1, а к if n<5.

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

Кроме оператора условного выполнения и циклов в Турбо Паскале имеется ещё одна управляющая конструкция, одно из названий которой — оператор выбора. На самом деле это усложнённый оператор if, он позволяет программе выполняться не двумя способами, в зависимости от выполнения условия, а несколькими, в зависимости от значения некоторого выражения. В общем виде этот оператор выглядит так:

case Выражение of

  Вариант1: Оператор1;

  Вариант2: Оператор2;

  ...

  ВариантN: ОператорN;

  [else ОператорN1;]

end;

(Пояснение: квадратные скобки означают то, что часть else может отсутствовать).

Выражение в простейших случаях может быть целочисленным или символьным. В качестве вариантов можно применять:

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

2.   Интервал, например: 1..5, 'a'..'z'.

3.   Список значений или интервалов, например: 1,3,5..8,10,12.

Выполняется оператор case следующим образом: вычисляется выражение после слова case и по порядку проверяется, подходит полученное значение под какой-либо вариант, или нет. Если подходит, то выполняется соответствующий этому варианту оператор, иначе — есть два варианта. Если в операторе case записана часть else, то выполняется оператор после else, если же этой части нет, то не происходит вообще ничего.

Рассмотрим пример. Пусть пользователь вводит целое число от 1 до 10, программа должна приписать к нему слово «ученик» с необходимым окончанием (нулевое, «а» или «ов»).


program SchoolChildren;

var n: integer;

begin

  write('Число учеников --> '); readln(n);

  write(n,' ученик');

  case n of

    2..4:  write('а');

    5..10: write('ов');

  end;

  readln;

end.


Можно также усовершенствовать программу для произвольного натурального n:


write(n,' ученик');

  case n mod 100 of

    11..19: write('ов');

    else case n mod 10 of

      2..4:   write('а');

      0,5..9: write('ов');

    end;

  end;


Лекция 4. Операторы циклов в Паскале

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

1. Цикл с постусловием (Repeat)

На Паскале записывается следующим образом: repeat <оператор> until <условие>. (По-русски: повторять что-то пока_не_выполнилось условие). Под обозначением <оператор> здесь понимается либо одиночный, либо последовательность операторов, разделённых точкой с запятой. Цикл работает следующим образом: выполняется оператор, затем проверяется условие, если оно пока еще не выполнилось, то оператор выполняется вновь, затем проверяется условие, и т. д. Когда условие, наконец, станет истинным выполнение оператора, расположенного внутри цикла, прекратится, и далее будет выполняться следующий за циклом оператор. Под условием, вообще говоря, понимается выражение логического типа.

Пример (подсчет суммы натуральных чисел от 1 до 100):

var i,sum: integer;

begin

  sum:=0; i:=0;

  repeat

    i:=i+1;

    sum:=sum+i;

  until i=100;

  writeln('Сумма равна: ',sum);

  readln;

end.

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

2. Цикл с предусловием (While)

Этот цикл записывается так: while <условие> do <оператор>. (Пока условие истинно, выполнять оператор). Суть в следующем: пока условие истинно, выполняется оператор (в этом случае оператор может не выполниться ни разу, т.к. условие проверяется до выполнения). Под оператором здесь понимается либо простой, либо составной оператор (т.е. несколько операторов, заключёных в begin ... end).

Рассмотрим тот же пример, выполненный с помощью while:

var i,sum: integer;

begin

  sum:=0; i:=0;

  while i<100 do begin

    i:=i+1;

    sum:=sum+i;

  end;

  writeln('Сумма равна: ',sum);

  readln;

end.

3. Цикл со счетчиком (For)

Записывается так: for <переменная>:=<нач> to <кон> do <оператор>. Вместо to возможно слово downto. Рассмотрим такой пример: требуется вывести на экран таблицу квадратов натуральных чисел от 2 до 20.

var i: integer;

begin for i:=2 to 20 do writeln(i,' ',sqr(i)); end.

При выполнении цикла происходит следующее: переменной i присваивается начальное значение (2), затем выполняется оператор (простой или составной), после этого к i прибавляется 1, и проверяется, не стало ли значение i равно конечному (20). Если нет, то вновь выполняется оператор, добавляется 1, и т. д. В случае, когда вместо to используется downto, все происходит наоборот: единица не прибавляется, а вычитается. Например, следующий цикл выведет ту же таблицу, но в обратном порядке:

Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11



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