Тема: Циклы в Паскале.
учебно-методический материал по информатике и икт (9 класс) на тему

Комарова Наталья Александровна

Презентация и подборка задач на циклы While, Repeat, For.

Скачать:

ВложениеРазмер
Office presentation icon tsikly.ppt400.5 КБ
Файл tsikly_v_pascal.docx65.5 КБ
Microsoft Office document icon tsikly_zadachi.doc29.5 КБ

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


Подписи к слайдам:

Слайд 1

Циклическое повторение блока команд, пока выполняется (или не выполняется) некоторое условие

Слайд 2

Найти все двузначные числа, кратные 7. Начало Конец k:=1 4 K < =99 k:=k+ 7 Вывести k + - При использовании логических циклов необходимо всегда заботиться о том, чтобы переменная, использующаяся в условии завершения цикла, каким-то образом обязательно изменялась в теле цикла. Это может быть команда присваивания ( как в данной программе) или команда ввода.

Слайд 3

Начало Конец sum:=0 k:=1 sum<= 10 Sum:=sum+1/k k:=k+1 Kolichestvo elementov =k + - При каком количестве слагаемых последовательности их сумма превысит 10?

Слайд 4

ЦИКЛ С ПАРАМЕТРОМ Цикл с параметром – повторное выполнение тела цикла, пока целочисленный параметр ( i ) пробегает множество всех значений от начального ( In ) до конечного ( Ik ) : I := In, Ik тело цикла

Слайд 5

ВЫЧИСЛИТЬ ввод n S:=0 i:= 1 ,n S:=S+sqr(i) конец вывод S начало

Слайд 6

Составить блок-схему: Найдите сумму чисел от 1 до n . (n – вводится с клавиатуры) Составить блок-схему: Найдите сумму четных чисел от 1 до n . Составить блок-схему: вводятся с клавиатуры целые числа и суммируются, до тех пор пока не будет введен 0. В первый час работы рабочий изготавливает а деталей, за каждый последующий час – на d деталей больше. Сколько деталей будет изготовлено за n часов? Задачи

Слайд 9

1. Вычислить среднее арифметическое 5 чисел, вводимых с клавиатуры. 2. Даны три действительных числа. Возвести в квадрат четные числа, и в четвертую степень — нечетные.



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

Циклы в Pascal: repeat, while, for.

Циклы

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

Циклы

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

Возьмем одну задачу, которую будем решать, используя различные виды циклов.

Задача 1. Вывести все цифры от 1 до числа, введенного с клавиатуры.

While, или цикл с предусловием

while — это цикл, в котором условие стоит перед телом. Причем тело цикла выполняется тогда и только тогда, когда условие true; как только условие становится false, выполнение цикла прекращается.

While имеет формат:      while < условие> do <оператор 1>;                             {Пока … делай ….}

Данный цикл подходит только для одного оператора, если же вы хотите использовать несколько операторов в своем коде, вам следует заключить их в операторные скобки — begin и end; .

Решение задачи.

  1. program example_while;
  2. var
  3.   i, N: integer; { объявляем переменные }
  4. begin
  5.   i := 1; { Присваиваем i значение 1 }
  6.   readln(N); { Считываем последнее число }
  7.   while i <= N do {Как только i станет больше N, цикл прекратится (можно было бы написать просто <, но пришлось бы добавлять 1 к N) }
  8.   begin {Открываем операторные скобки}
  9.     write(i, ' '); {Выводим i}
  10.     Inc(i);  {увеличиваем i на один.}
  11.   end; { закрываем скобки }
  12. end.

 

Repeat, или цикл с постусловием

Repeat  — полная противоположность while. Repeat — это цикл, в котором условие стоит после тела . Причем оно выполняется тогда и только тогда, когда результат условия false; как только логическое выражение становится true, выполнение цикла прекращается.

Repeat имеет формат:

repeat { повторяй … }
<оператор 1>;
< оператор 2>;

until {до…} <условие>

Begin и end не требуются.

Решение задачи.

  1. program example_repeat;
  2. var
  3.   i, N: integer;{ объявляем переменные }
  4. begin
  5.   i := 1; { Присваиваем i значение 1 }
  6.   readln(N); { Считываем последнее число }
  7.   repeat {после repeat не требуется begin и end }
  8.     write(i, ' '); {Выводим i}
  9.     Inc(i);  {увеличиваем i на один.}
  10.   until i = N + 1; {Например,i = 11,а N = 10. Цикл прекратится, так условие стало true.}
  11. end.

For, или цикл с параметром

For — это  цикл, в котором тело выполняется заданное количество раз.

Существует две формы записи этого цикла:

Первая форма

for <счетчик1> := <значение1> to <конечное_значение> do <оператор1>;

После каждой итерации значение <счетчик1> будет увеличиваться на 1.

<значение1> — это начальное значение счетчика. Это может быть переменная или число.
<конечное_значение> : как только значение <счетчик1> станет больше <конечное_значение>, выполнение цикла прекратится.

Если требуется написать несколько операторов в теле цикла, используем begin и end.

И <счетчик1>, и <конечное_значение>, и <значение1> —  переменные целого типа.

Чаще всего в качестве счетчика используется переменная i.

Вторая форма

  1. for <счетчик2> := <значение2> downto <конечное_значение> do <оператор1>;

После каждой итерации значение <счетчик2> будет уменьшатся на 1.

<значение2> — это начальное значение счетчика.
<конечное_значение> : как только значение <счетчик2> станет меньше <конечное_значение>, выполнение цикла прекратится.

Два важных примечания:

  1. Цикл повторяется, пока значение значение счетчика лежит в отрезке [значение ; конечное_значение].
  2. Изменять значение счетчика внутри тела нельзя!  

Решение задачи:

  1. program example_for;
  2. var
  3.   i, N: integer;
  4. begin
  5.   read(N); {предположим, что мы ввели 10}
  6.   for i := 1 to N do write(i, ' '); {количество итераций - 10 - 1 + 1 = 10}
  7. end.

Давайте разберем несколько задач.

For1. Даны целые числа K и N  (N > 0). Вывести N раз число K.

Организовываем простой цикл от 1 до требуемого числа.

  1. program for1;
  2. var
  3.   K, N, i: integer;
  4. begin
  5.   read(K, N);
  6.   for i := 1 to N do write(K, ' '); {Пишем К через пробел }
  7. end.

For2. Даны два целых числа A и B (A < B). Вывести в порядке возрастания все целые числа, расположенные между A и B (включая сами числа A и B), а также количество N этих чисел.

Так как A < B, то цикл должен будет выводить все числа от А до B. Чтобы сосчитать количество чисел, используем формулу: <конечное_значение> — <начальное_значение> + 1.

  1. program for2;
  2. var
  3.   A, B, i, count: integer;
  4. begin
  5.   read(A, B);
  6.   for i := A to B do write(i, ' '); {выписываем числа от меньшего к большему}
  7.   count := B - A + 1; {считаем количество чисел}
  8.   writeln;
  9.   write( 'Количество чисел - ', count);
  10. end.

For9. Даны два целых числа A и B (A < B). Найти сумму квадратов всех целых чисел от A до B включительно.

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

  1. program for9;
  2. var
  3.   A, B, i, S: integer;
  4. begin
  5.   read(A, B);
  6.   S := 0; {PascalABC делает это автоматически, но если у вас другой компилятор советуем обнулять переменные вручную}
  7.   for i := A to B do S := S + Sqr(i);  {складываем все квадраты}
  8.   writeln;
  9.   write( 'Сумма квадратов - ', S);
  10. end.

For13°. Дано целое число N (> 0). Найти значение выражения 1.1 – 1.2 + 1.3 – … (N слагаемых, знаки чередуются). Условный оператор не использовать.

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

  1. program for13;
  2. var
  3.   N, A, i: integer;
  4.   S: real;
  5. begin
  6.   Write('N = ');
  7.   readln(N);
  8.   S := 1.1;
  9.   A := 1; {Сначала положительное}
  10.   for i := 2 to N do {первую итерацию цикла мы уже произвели, поэтому начинаем отсчет с 2}
  11.   begin
  12.    A := -A; {Теперь отрицательное}
  13.    S := S + A * (1 + i / 10);  {Складываем}
  14.   end;
  15.   Writeln(S:5:1); {Отдадим под дробную часть одно знакоместо}
  16. end.

While1°. Даны положительные числа A и B (A > B). На отрезке длины A размещено максимально возможное количество отрезков длины B (без наложений). Не используя операции умножения и деления, найти длину незанятой части отрезка A.

Каждый раз вычитаем B из А, пока А — В  >= 0.

  1. program while1;
  2. var
  3.   A, B: integer;
  4. begin
  5.   readln(A,B);
  6.   while (A - B) >=  0 do A := A - B; {Пока разница положительная, вычитаем. Необходимо предусмотреть вариант с кратностью А и B, поэтому >=}
  7.   write(A);
  8. end.


While4°. Дано целое число N (> 0). Если оно является степенью числа 3, то вывести True, если не является — вывести False.

Действуем следующим образом: пока N делится нацело на три, делим N нацело. Затем, если N = 1 — число является степенью тройки; если N <> 1, тогда число — не степень тройки. Для того чтобы решить эту задачу, требуется знать, что такое div и   mod,  и как работают логические выражения.

  1. program while4;
  2. var
  3.   N: integer;
  4. begin
  5.   readln(N);
  6.   while N mod 3 = 0 do N := N div 3; {Пока остаток от деления на три равен нулю, делим N нацело }
  7.   writeln(N = 1); {логическое выражение}
  8. end.

Repeat .



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

Задачи на циклы.

  1. Напишите программу вывода всех четных чисел от 2 до 100 включительно. (2 балла)
  2. Составьте программу, вычисляющую сумму квадратов всех чисел от 1 до N. (1 балл)
  3. Напишите программу, определяющую сумму всех нечетных чисел от 1 до 99. (2 балла)
  4. Составьте программу, подсчитывающую количество цифр вводимого вами целого неотрицательного числа. Можно использовать операцию целочисленного деления. (3 балла)
  5. Вычислите сумму квадратов N четных натуральных чисел. (2 балла)
  6. Вычислить:  1+2+4+8+…+210 (3 балла)
  7. Вычислить:  (1+2)*(1+2+3)*…*(1+2+…+10) (3 балла)  
  8. В бригаде, работающей на уборке сена, имеется N косилок. Первая из них работала M часов, а каждая следующая на 10 минут больше, чем предыдущая. Сколько часов проработала вся бригада? (2 балла)
  9. В ЭВМ вводятся по очереди данные о росте N учащихся класса. Определить средний рост учащихся в классе. (1 балл)
  10. Составьте программу вычисления степени числа A с натуральным показателем N. (3 балла)
  11. Составьте программу, вычисляющую A*B, не пользуясь операцией умножения. А и B любое натуральное число. (2 балла)
  12. Для заданного числа N составьте программу вычисления суммы S=1+1/2+1/3+1/4+…+1/N, где N – натуральное число. (2 балла)
  13. Каждая бактерия делится на две в течение одной минуты. В начальный момент имеется одна бактерия. Составьте программу, которая рассчитывает количество бактерий на заданное вами целое значение момента времени (15 минут, 7 минут и т.п.). (2 балла)
  14. Вывести на экран кубы целых чисел от A до B. (1 балл)
  15. Найти сумму n-го количества элементов ряда 1, -0.5, 0.25, -0.125, … (2 балла)
  16. Вывести все квадраты натуральных чисел, не превосходящие данного числа N. Пример: N=50 | 1 4 9 16... (1 балл)
  17. Вывести на экран ряд чисел Фибоначчи, состоящий из n элементов. Числа Фибоначчи – это элементы числовой последовательности: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, …, в которой каждое последующее число равно сумме двух предыдущих. (2 балла)
  18. Найти сумму целых чисел от N до M. (1 балл)
  19. Даны натуральные числа от 20 до 50. Напечатать те из них, которые делятся на 3, но не делятся на 5. (3 балла)
  20. Найти произведение двузначных нечетных чисел кратных 13. (3 балла)
  21. Даны действительное число а и натуральное число n. Вычислить: a(a+1)...(a+n-1). (2 балла)
  22. Составьте программу, выводящую на экран квадраты чисел от 10 до 20. (2 балла)
  23. Бизнесмен взял ссуду m тысяч рублей в банке под 20% годовых. Через сколько лет его долг превысит s тысяч рублей, если за это время он не будет отдавать долг? (3 балла)

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

язык паскаль. Практикум по теме "Циклы" для 9 класса

язык паскаль. Практикум по теме "Циклы" для 9 класса...

Конспект урока по теме "Циклы в Паскале"

Конспект урока по информатике "Циклы в Паскале" предназначен для учащихся 9 класс....

Самостоятельная работа по теме "Циклы в Паскале"

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

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

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

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

Контрольная работа содержит 4 варианта проверяет знания "базовая структура Цикл" и "запись циклов на языке Паскаль"...

Операторы цикла на Паскале. Цикл с предусловием

Конспект урока "Операторы цикла на Паскале. Цикл с предусловием"....