Общая форма записи цикла со счетчиком 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Общая форма записи цикла со счетчиком



for i:= A to B dofor i:= A downto B do

begin begin

......

end; end;

Здесь переменная i - управляющая переменная или переменная цикла,

А - начальное значение переменной цикла,

В - конечное значение переменной цикла.

При переходе к обработке оператора цикла for управляющей переменной присваивается заданное начальное значение. Затем в цикле выполняется исполнительный оператор (или составной оператор). каждый раз при выполнении исполнительного оператора управляющая переменная увеличивается на 1 (для for...to) или уменьшается на 1 (для for...downto). Цикл завершается при достижении управляющей переменной своего конечного значения.

Например,

1) for i:= 1 to ListSize do

begin

readln (Number):

S:= S +Number;

end;

2) for Dlina:= 15 downto 1 do

writeln (Sqr(Dlina));

3) for x:= 1 to 10 do

for y:= 1 to 10 do

writeln (x,’*’,y,’=‘,x*y);

4) for Range:= Number+1 to Multi*3 do

writeln (Sqrt(Range));

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

for i:= 1 to 10 do

begin

...

i:= i-1;

...

end;

Управляющая переменная должна описываться, как и любая другая переменная. Обычно переменная цикла имеет тип integer, но позднее Вы рассмотрите другие типы данных, которые могут указываться в цикле for.

Внимание! Следует помнить, что управляющая переменная не может быть типа real.

Исполнительная часть цикла может быть либо простым, либо составным оператором. Если начальное значение цикла for...to больше конечного значения, то никакие операции не выполнятся. Таким образом, следующий оператор не приведет ни к каким действиям

for j:= 1 to 0 do

writeln (j);

Однако цикл, представленный в такой форме, распечатает целые числа от единицы до десяти:

for j:= 1 to 10 do

writeln (j);

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

for j:= 10 downto 1 do

writeln (j);

Часто исполнительная часть одного из циклов For является новым оператором цикла For. Структуры такого рода называются вложенными циклами. При завершении внутреннего цикла управляющая переменная внешнего цикла увеличивается. Повторение этих действий будет продолжаться до вавершения внешнего цикла. Приведенный ниже вложенный цикл печатает пары чисел, начиная от (1,1), (1,2),... и кончая (10,10):

for х:= 1 to 10 do

for у:= 1 to 10 do

writeln (‘(‘,х,’,’,y,’), ’);

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


 

Занятие VII

Тема: Самостоятельное решение задач.

Выберите с учителем задачи для решения из предложенного ниже списка.

1. Найдите количество точек с целочисленными координатами попадающих в круг радиуса R.

2. Составить программу, которая распечатывает на экране таблицу умножения.

3. Найдите все трёхзначные числа, равные сумме кубов своих цифр. Учтите, что abc=100a+10b+c

4. Составить программу вывода всех трёхзначных чисел, сумма цифр которых равна данному целому числу. Программа должна печатать именно числа, а не набор цифр.

5. Имитировать на экране работу электронных часов.

6. Напишите программу отгадывания буквы.

7. Задано n троек чисел a,b,c. Определить, сколько из предложенных троек можно использовать для построения треугольника, если a,b,c - длины его сторон. (Известно, что a<=b<=c.)

8. Найти сумму целых положительных чисел, больших 20, меньших 100 и кратных 3.

9. Укажите все целые числа, которые увеличатся на 20%, если их цифры записать в обратном порядке.

10.Составьте программу взвешивания продавцом 2,5 кг муки.

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

12. Замените буквы цифрами так, чтобы равенство ФАКТ+ФАКТ=НАУКА стало верным. Одинаковым буквам должны соответствовать одинаковые цифры, разным - разные.

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

14. В бригаде, работающей на уборке сена, имеется N косилок. Первая из них работала m ч., а каждай следующая на 10 мин. больше, чем предыдущая. Сколько часов проработала вся бригада?

15. В компьютер вводятся по очереди данные о росте N учащихся класса. Определить средний рост учащихся класса.

16. Составьте программу вычисления степени числа а с натуральным показателем n.

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

18. Дана последовательность из N целых чисел. Определить произведение максимального и минимального элементов этой последовательности.

19. Для двух последовательностей из N и M элементов соответственно найти произведение максимального элемента первой последовательности и минимального элемента второй последовательности.

20. Дано целое n>0 и последовательность из n действительных чисел, среди которых есть хотя бы одно отрицательное число. Найти величину наибольшего из отрицательных чисел этой последовательности.

Проверьте себя, ответив на вопросы:

1. Что называется циклом? Приведите пример.

2. Какой алгоритм называется циклическим? Приведите примеры.

3. Какие виды циклов Вы знаете? Почему они имеют такие названия?

4. В теле какого цикла не нужно ставить операторные скобки, даже если выполняется составной оператор?

5. Каким должно быть условие, чтобы тело цикла while ни разу не выполнилось? Почему?

6. Каким должно быть условие, чтобы тело цикла repeat выполнилось один раз? Почему?

7. Каким должно быть условие, чтобы тело цикла for ни разу не выполнилось? Почему?

8. Чему равен шаг изменения параметра цикла в операторе for?

9. Укажите отличительные особенности каждой из конструкций циклов.

10. Будет ли выполняться циклическая часть программы, если логическое выражение в конструкции REPEAT истинно с самого начала?

11. Что такое стоп-код? Когда его применяют?

12. Какие условия предъявляются к переменной цикла?

13. Какого типа должна быть переменная цикла?

14. Может ли переменная цикла использоваться в вычислениях?

15. Что называется шагом? Что означает выражение “шаг равен пяти”?

16. Что происходит на каждом шаге выполнения тела цикла при выполнении оператора Summa:=Summa+Chislo?

17. Какой цикл Вы применяете чаще? Каковы его достоинства и недостатки?

18. Функция ReadKey и ее применение в программах.

19. Функция KeyPressed и ее применение в программах.

20. Какие клавиши входят в основной набор?

21. Какие клавиши входят в расширенный набор? Как обратится к этим клавишам в программе?

22. Что обозначает слово downto в операторе цикла for?


 

 


 

Тема. Понятие массива. Одномерные массивы. Способы задания одномерных массивов

На прошлом занятии мы завершили изучение простых типов Turbo Pascal и сегодня приступаем к изучению структурированных. Их в Turbo Pascal три:

1. Массивы

2. Записи

3. Множества

Мы начнем знакомство с ними с массивов.

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

Определение. Массив – это совокупность объектов, состоящая из фиксированного упорядоченного числа элементов, имеющих один и тот же тип.

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

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

Для описания массива используется словосочетание array of (массив из) и имеет вид:

array [тип индекса] of <тип>

Тип индекса – любой порядковый номер, определяющий границы изменения значений индекса.

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

<имя типа> = array [тип индекса] of <тип данных>;

Например,

Program Name;

Const

m=50;

Type

mas=array [1..m] of integer; {массив из m целых чисел}

digit = array [0.. 9] of char; {массив десяти символов, имеющих порядковые номера от 0 до 9}

matrix = array [byte] of string; {массив 256 строк, пронумерованных с 0 до 255}

Var

massiv: mas;

m: matrix;

d: digit;

a: array [1..n] of real; {явное описание переменной типа массив}

В качестве индексных типов можно использовать любые порядковые типы, кроме Longint и типов-диапазонов с базовым типом Longint.

Если несколько массивов имеют одинаковый тип индексов и одинаковый базовый тип, то можно при описании объединить массивы в один список. Например

Var

a, b, c: mas;

Такой записью мы объявили три массива вещественных чисел a, b, c, каждый из которых содержит по 50 элементов:

A[1], А[2],... A[50],_

В[1], В[2],... В[50],

С[1], С[2],... С[50].

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

Общий объем = количество ячеек памяти * объем одной ячейки

Например, если возьмем переменную

Var

M: digit;

то объем памяти, выделенный под хранение переменной m будет равен 10 байтам и выглядеть это будет приблизительно так:

 

Индекс элемента                    
m   *   = в о с е м ь

m[4] – элемент массива m, находящийся в ячейке с индексом 4 и равный символу ‘в’

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

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

Способы задания одномерных массивов

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

Рассмотрим процедуры, которые бы формировали одномерный массив двумя способами

1) случайным образом,

2) вводом элементов с клавиатуры

Предположим, что мы будем работать с массивом целых чисел. Пусть нам достаточно иметь максимальное количество элементов равное 50. Процедура принимает параметр по ссылке массив Massiv заданного типа и целую переменную n, отвечающую за количество заполняемых ячеек массива. Также нам нужна будет локальная переменная i, которая будет выполнять функции параметра цикла и использоваться для указания номера, определяющего местоположение элемента в массиве.

1. Формирование одномерного массива случайным образом. Зададим значение каждого элемента результатом случайной функции Random(10). Заполнение массива зададим циклическим оператором for, в теле которого выполняется вычисление случайного числа функцией Random(10), после чего это значение присваивается очередному i-му элементу массива.

Procedure InsertMas1(Var massiv:mas; n:integer);

Var

i: integer;

Begin

Randomize;

for i:=1 to n do

massiv[i]:= Random(10);

End;

2. Формирование одномерного массива вводом элементов с клавиатуры.

Procedure InsertMas2(Var massiv:mas; n:integer);

Var

i: integer;

Begin

for i:=1 to n do

begin

write('Введите ',i,'-ый элемент массива ');

readln(massiv[i]);

end;

End;

Вывод массива на экран осуществляется следующим образом:

Procedure PrintMas(massiv:mas; n:integer);

Var

i: integer;

Begin

for i:=1 to n

Write(Massiv[i]:5);

End;

Задание. Составьте программу-шаблон, в которой содержались бы два возможных варианта ввода элементов массива, оформленных в виде процедур, и одна процедура вывода полученного массива на экран. Результат работы покажите учителю для оценки.

Теперь проверьте себя, попробовав ответить на вопросы:

1. Что понимается под массивом?

2. Как обозначить в программе элементы массива?

3. Какие операции разрешены над элементами массива?

4. Как организовать в программе ввод и вывод элементов массива?

5. Приведите примеры, где можно использовать массивы.

6. Какие из приведенных описаний одномерных массивов являются правильными и почему?

a) Var a: Array[1..20] of Integer;

b) Type Myarrray: Array[1..20]

Var b: Myarrray;

c) Var sd:Array[1..n] of Integer;

d) Var dd:Array[1] of integer;

7. Сколько элементов в каждом из следующих массивов

a) Var mb: Array[2..20] of Integer;

b) Type myarray1[2..20] of Integer;

myarray2[-5..5] of Integer;

Var aa: myarray1;

bb: myarray2;

Дополнительное задание. (на усмотрение учителя)

1. Организуйте ввод в массив и выдайте на экран следующие последовательности:

а) 1, 3, 5, 7,..., 131

б) список учеников вашего класса

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

3. Дан произвольный массив N элементов. Организуйте вывод элементов массива на экран начиная с последнего элемента.


 

Тема. Доступ к элементам массива

Рассмотрите предложенные ниже фрагменты программ для решения некоторых типичных задач.



Поделиться:


Последнее изменение этой страницы: 2016-12-30; просмотров: 606; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.209.63.120 (0.077 с.)