Язык программирования Паскаль. Циклы.
материал по информатике и икт (11 класс) на тему

Степучева Галина Анатольевна

.

Скачать:


Предварительный просмотр:

Стандартные задачи на циклы

Простейшие алгоритмы

№1. Сумма вводимых целых чисел

var s: real;

begin

  write('Введите число слагаемых: ');

  var n := ReadInteger;

 

  s := 0;

  for var i:=1 to n do

  begin

    write('Введите слагаемое: ');

    var x := ReadReal;

    s += x;

  end;

 

  writeln('Сумма слагаемых равна ',s);

end.

№2. Произведение целых чисел

var p: real;

begin

  write('Введите число множителей: ');

  var n := ReadInteger;

 

  p := 1;

  for var i:=1 to n do

    begin

      write('Введите множитель: ');

      x := ReadReal;

      p *= x;

    end;

 

  writeln('Произведение равно ', p);

end.

№3. Двойной факториал n!!=n*(n-2)*(n-4)*...*2 (или 1)

begin

  write('Введите x: ');

  var x := ReadInteger;

 

  var p := 1;

  while x>=2 do

  begin

    p *= x;

    x -= 2;

  end;

 

  writeln('Двойной факториал равен ', p);

end.

№4. Сколько нечетных среди n введенных

begin

  write('Введите n: ');

  var n := ReadInteger;

 

  var c := 0;

  for var i:=1 to n do

  begin

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

    var x := ReadInteger;

    if x mod 2 <> 0 then

      c += 1;

  end;

 

  writeln('Количество нечетных равно ', c);

end.

№5. Защита от неверного ввода

var x: real;

begin

  repeat

    write('Введите x>0: ');

    x := ReadReal;

    if x<=0 then

      writeln('Неверный ввод');

  until x>0;

end.

№6. Табулирование функции f(x) на отрезке в точках, разбивающих отрезок на N частей

Дан отрезок [a,b]

function f(x: real): real;

begin

  result := sin(x)*x;

end;

 

var

  N: integer;

  a, b: real;

begin

  write('Введите N: ');

  N := ReadInteger;

  Assert(N>0);

  write('Введите a и b: ');

  a := ReadReal;

  b := ReadReal;

 

  var h := (b-a)/N;

  var x := a;

  for var i:=0 to N do

  begin

    writeln(x:5:2,f(x):10:4);

    x += h;

  end;

end.

№6a. Решение, использующее while. Погрешность округления и вычислительная погрешность

function f(x: real): real;

begin

  result := sin(x)*x;

end;

 

var

  N: integer;

  a, b: real;

begin

  write('Введите N: ');

  N := ReadInteger;

  Assert(N>0);

  write('Введите a и b: ');

  a := ReadReal;

  b := ReadReal;

 

  var h := (b-a)/N;

  var x := a;

  while x <= b+h/2 do

  begin

    writeln(x:5:2,f(x):10:4);

    x += h;

  end;

end.

Рекуррентные соотношения

№7. Вывод 10 первых степеней двойки

begin

  var x := 2;

  for var i := 1 to 10 do

  begin

    writeln(i:2,x:5);

    x *= 2;

  end;

end.

№8. Вывод всех двухзначных чисел, кратных 5

begin

  var x := 10;

  while x < 100 do

  begin

    writeln(x:3);

    x += 5;

  end;

end.

№9. Вывод n первых чисел Фибоначчи

begin

  write('Введите целое число n (n > 1): ');

  var n := ReadInteger;

  var a := 1;

  var b := 1;

  write(1, ' ', 1, ' ');

  for var i := 3 to n do

  begin

    var c := a + b;

    write(c, ' ');

    a := b;

    b := c;

  end;

end.

№10. Найти НОД(A,B), используя алгоритм Евклида:

НОД(A,B) = НОД(B,A mod B); НОД(A,0) = A

var A,B,C: integer;

begin

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

  readln(A,B);

  repeat

    C := A mod B;

    A := B;

    B := C;

  until C = 0;

  write('НОД(A,B) = ', A);

end.

№11. Найти сумму цифр целого положительного числа m

begin

  write('Введите целое положительное число m: ');

  var m := ReadInteger;

  assert(m > 0);

 

  var s := 0;

  while m > 0 do

  begin

    s += m mod 10;

    m := m div 10;

  end;

 

  writeln('Сумма цифр числа m равна ', s);

end.

Максимумы и минимумы

№12. Найти max из введенных чисел

begin

  write('Введите целое число n (n>0): ');

  var n := ReadInteger;

  assert(n>0);

 

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

  var x := ReadReal;

  var max := x;

  for var i := 2 to n do

  begin

    write('Введите ', i, ' число: ');

    x := ReadReal;

    if max < x then

      max := x;

  end;

 

  writeln('Максимальное из введенных чисел: ', max);

end.

№12a. Найти min, удовлетворяющее условию p(x)

// Условие взятое как пример (Если число положительное, то условие p(x) возвращает true, иначе false)

function p(x: real): boolean;

begin

  Result := x > 0;

end;

 

begin

  write('Введите целое число n (n>0): ');

  var n := ReadInteger;

  assert(n>0);

 

  var min := real.MaxValue;

  for var i := 1 to n do

  begin

    write('Введите ', i, ' число: ');

    var x := ReadReal;

    if (x < min) and p(x) then

      min := x;

  end;

 

  if min = real.MaxValue then

    writeln('Нет чисел, удовлетворяющих условию')

  else writeln('Минимальное из введенных чисел, удовлетворяющее условию: ', min);

end.

Суммирование рядов (конечных и бесконечных)

№13. Вычислить Σ(i=1..n) a^i/i!

var

  a: real;

  n: integer;

begin

  write('Введите a и n (n>0): ');

  readln(a,n);

  assert(n>0);

  var x := a;

  var s := x;

  for var i := 2 to n do

  begin

    x *= a / i;

    s += x;

  end;

  writeln('Сумма = ', s);

end.

№13a. Вычислить Σ(i=1..∞) (-1)^i * a^i/i!

var a: real;

begin

  write('Введите a (0 < a < 1): ');

  readln(a);

  assert((a>0) and (a<1));

 

  var eps := 0.0001;

  var i := 1;

  var s := 0.0;

  var y := -a;

  repeat

    s += y / i;

    i += 1;

    y *= -a;

  until abs(y/i) < eps;

 

  writeln('Сумма = ', s);  

end.

Поиск значения

№14. Есть ли среди введенных число k?

var n,k: integer;

begin

  write('Введите целые числа n (n>0) и k: ');

  readln(n,k);

  assert(n>0);

 

  var Exists := false;

  for var i := 1 to n do

  begin

    write('Введите ', i, ' целое число: ');

    var x := ReadInteger;

    if x = k then

    begin

      Exists := true;

      break;

    end;

  end;

 

  if Exists then

    writeln('Число ', k, ' было введено')

  else writeln('Число ', k, ' не было введено');

end.

№14b. Есть ли среди введенных число k? (то же с использованием while)

var n,k: integer;

begin

  write('Введите целые числа n (n>0) и k: ');

  readln(n,k);

  assert(n>0);

 

  var Exists := false;

  var i := 1;

  while (i <= n) and not Exists do

  begin

    write('Введите ', i, ' целое число: ');

    var x := ReadInteger;

    i += 1;

    if x = k then

      Exists := true;

  end;

 

  if Exists then

    writeln('Число ', k, ' было введено')

  else writeln('Число ', k, ' не было введено');

end.

№15. Является ли число N>1 простым?

begin

  write('Введите целое число N (N>1): ');

  var N := ReadInteger;

  assert(N>1);

 

  var IsSimple := True;

  for var i := 2 to round(sqrt(N)) do

    if N mod i = 0 then

    begin

      IsSimple := False;

      break;

    end;

 

  if IsSimple then

    writeln('Число ', N, ' является простым')

  else writeln('Число ', N, ' является составным');

end.

Другие алгоритмы

№16. Разложение числа на простые множители

begin

  write('Введите целое число x (x>1): ');

  var x := ReadInteger;

  assert(x>1);

 

  var i := 2;

  write(x, ' = 1');

  repeat

    if x mod i = 0 then

    begin

      write(' * ', i);

      x := x div i;

    end

    else i += 1;

  until x = 1;

end.

№17. Вычисление значения многочлена в точке x по схеме Горнера

var

  x,a: real;

  n: integer;

begin

  write('Введите x: ');

  readln(x);

  write('Введите степень многочлена n (n>0): ');

  readln(n);

  assert(n>=0);

  write('Введите коэффициенты: ');

  readln(a);

 

  var s := a;

  for var i := 1 to n do

  begin

    write('Введите a_{', i+1,'}: ');

    readln(a);

    s := s*x + a;

  end;

 

  writeln('Значение многочлена p(x) = a_{1}*x^n + a_{2}*x^(n-1) + ... + a_{n}*x + a_{n+1} в точке x = ', x, ' равно ', s);

end.

№18. Дана непрерывная на отрезке функция f(x), имеющая на отрезке ровно один корень. Найти его методом половинного деления

Дан отрезок [a,b] (f(a)*f(b)<=0)

// В качестве примера взяты eps = 0.0001 и функция f(x) = sin(x)

const eps = 0.0001;

const f = sin;

 

var a,b: real;

begin

  write('Введите числа a и b (a

  readln(a,b);

  assert(a

 

  var fa := f(a);

  var fb := f(b);

  assert(fb*fa<0);

 

  while (b-a) > eps do

  begin

    var x := (b+a)/2;

    var fx := f(x);

    if fa*fx <= 0 then

      b := x;

    else

    begin

      a := x;

      fa := fx;

    end;

  end;

 

  writeln('Корень функции на [a,b] равен ',(b+a)/2);

end.


По теме: методические разработки, презентации и конспекты

Контрольная работа. Знакомство с языком программирования Паскаль.

Контрольная работа представлена в 6 вариантах....

Язык программирования Паскаль.Знакомство

Презентация к уроку информатики и ИКТ в 8 классе по теме "Язык программирования Паскаль". Данная презентация состоит из 10 слайдов....

Основы программирования: ТЕМА 01. ЯЗЫК ПРОГРАММИРОВАНИЯ ПАСКАЛЬ.

ОСНОВЫ ПРОГРАММИРОВАНИЯВВЕДЕНИЕОдним из популярных сегодня ЯП является Паскаль. Он позволяет составлять программы для решения математических задач, обработки текстов, построения изображений на экране ...

Тест по теме "Циклы на языке программирования Паскаль"

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

Программирование. Язык программирования Паскаль

Цель•        Познакомить обучающихся с языком программирования Паскаль•         Отрабатывать практические умения обучающихся по работе в сре...