Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Пример 3




Задан массив X=(0,5,-3). Получить массив Y, при этом:

y1=x1; y2=x2; y3=x3.

Решение

У нас два массива: X и Y. Оба они одномерные, состоят из трех элементов: X=(x1, x2, x3); Y=(y1, y2, y3). По размерности, количеству элементов и типу они совпадают (они вообще совпадают, даже значения элементов одни и те же). Отсюда следует, что их можно описать вместе одним описанием.

1-й вариант

Var

x,y:array [1..3] of integer;

Begin

x[1]:=0;

x[2]:=5;

x[3]:=-3;

y[1]:=x[1];

y[2]:=x[2];

y[3]:=x[3];

Writeln(y[1],y[2],y[3])

End.

А если же у нас в массивах X,Y будет, например, по 100 элементов? Что же мы будем писать 100 операторов присваивания, например, для каж­дого элемента массива Y? Конечно, нет. В этом случае надо воспользоваться оператором цикла.

Заметим закономерность для операторов, в которых вычисляются значения для элементов массива Y. Индекс в квадратных скобках у элементов массива Y и соответствующих им элементах массива X изменяется от 1 до 3. Общий вид этих вычислений получается следующий:

т.е. при i=1 будем иметь: y1= x1 и т.д.

Итак, для i, изменяющейся от 1 до 3, производить вычисления по формуле:

yi = xi.

Запишем то же на языке PASCAL:

for i:=1 to 3 do

y[i]:=x[i];

Если элементов в массивах будет не 3, а, например, 100, изменится только заголовок цикла:

for i:=1 to 100 do

и количество элементов в массивах в описании.

Давайте организуем ввод массива X с клавиатуры. Во-первых, с целью изменять значения элементов массива X (т.к. сейчас они «зашиты» в программе и, если мы захотим взять другие значения для элементов этого массива, то придется изменять их в тексте программы), а, во-вторых, опять же, нам нужно будет писать, например, 100 операторов присваивания для задания исходных дан­ных, если в массиве X будет 100 элементов.

Любой массив вводят в цикле. Введем наш массив Х:

for i:=1 to 3 do

read(x[i]);

При i=1 будет вводиться элемент x[1];

при i=2 - x[2];

при i=3 - x[3].

Вывод - аналогичен.

Итак, какая же программа у нас получается?

Так как у нас появилась новая переменная i (целого типа), ее надо описать.

2-й вариант

Var

i:integer;

x,y:array [1..3] of integer;

Begin

for i:=1 to 3 do

Read(x[i]); {ВВОД с экрана}

for i:=1 to 3 do

y[i]:=x[i];

for i:=1 to 3 do Writeln(y[i])   {значения Y будут выведены в столбик}  
   

End.

Итак, любой массив выводят в цикле.

Вы, наверное, уже увидели, что эти три цикла можно объединить в один, т.е. организовать цикл следующим образом: ввод первого элемента массива Х, нахождение первого элемента массива Y и сразу же вывод его значения на экран; после этого ввод следующего элемента массива X и т.д. У нас получится такой вариант программы:

3-й вариант

Var

i:integer;

x,y:array [1..3] of integer;

Begin

for i:=1 to 3 do

begin

Read(x[i]);

y[i]:=x[i];

Writeln(y[i])

end

End.

Ниже приведен еще один вариант записи этой программы. Если массивы по типу описания совпадают, то присвоить значения элементов одного массива другому можно так, как показано в девятой строке программы.

4-й вариант

Type

ar = array [1..3] of integer;

Const

x: ar = (0,5,-3);

Var

i:integer;

y:ar;

Begin

y:=x; {Знач. массива X присваив. массиву Y}

for i:=1 to 3 do

Writeln(y[i])

End.

ЗАДАНИЯ

№3. Описать одномерный целочисленный массив R, первым элементом которого является R1, а последним - R28.

№4. Описать одномерный символьный массив Z, первым элементом которого является Z5, а последним - Z136.

№5. Описать двухмерный массив Y, содержащий элементы вещественного типа, в котором пять строк и семь столбцов.

№6. Дан одномерный массив C длиной 15 элементов. Получить массив D, причем

№7. Какие из приведенных заголовков циклов не содержат ошибок?

a) for j:=10 to 2 do

б) for v:=-7 to 0 do

в) for m[i]:=4 downto 0 do

г) for w:=5 to 20 step 2 do

д) for m:=14 downto k[4] do

№8. Определить значение переменной S после выполнения следующих операторов:

S:=1.0;

n:=1;

for i:= 2 to n do s:=s+1/i; s:=s-1;

№9. Перепишите следующую программу и подчеркните все ошибочные места. Укажите общее количество ошибок в данной программе.

Const

m=10;

Var

ch: char;

k: real;

i,n: integer;

a: array [1...n] of integer;

b,c: array [1...m] of integer;

i: array [1...i] of real;

Begin

Readln(n);

Read(A);

for ch:=0 to 9 do

write(ch);

for k=1 to m do

Read(B[k]);

Read(c[k]);

for i:=n to 1 do

a(i)=b(i)+c(i);

b(i)=c;

inc(i);

c(i)=c(i)*c(i);

a:=b;

b:=c;

a:=i;

c:=b+5;

Writeln(a,b);

for i:= 1 to n do

Writeln(Ci)

End.

ПРИМЕР 4

Представить в виде структурной схемы (два варианта) следующий цикл:

for k:=5 to 20 do

A[k]:=B[k]-1

Решение

1-й вариант

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

 

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

 

 

Затем проверяется условие работы цикла: должно ли при данном значении параметра цикла выполняться тело цикла?

 

 

Если условие истинно, то будет выполняться тело цикла при текущем значении параметра цикла. Здесь мы и записали тело цикла. Оно состоит из одного блока (оператора).

 

 

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

2-й вариант

Для записи второго варианта используем блок «МОДИФИКАЦИЯ». Этот вариант более прост в записи, но зато, не совсем будет понятно как работает оператор цикла с параметром языка PASCAL.

 


В этом блоке мы записали, как изменя­ется значение параметра цикла: от 5 до 20 с шагом 1. Если шаг равен 1, то его опускают вместе с запятой, стоящей перед ним.

 

Оба варианта записи схемы приемлемы, поэтому Вы можете пользоваться любым из них.

ЗАДАНИЯ

№10. Представить в виде структурной схемы (2 варианта) следующий цикл:

for L:=2 to 17 do

begin

k:=L+1;

A[k]:=B[L]

end

№11. Представить следующие схемы в виде фрагментов программ (с использованием оператора цикла с параметром):

1)

 

 

2)

 

 

Таким образом изображаются циклы в структурных схемах




Поделиться с друзьями:


Дата добавления: 2014-12-27; Просмотров: 331; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.024 сек.