Перечень заданий лабораторной работы№4
Составить программу для следующих заданий:
1. Найти значение функции при данном значении х.
2. Найти среднее арифметическое трех чисел a, b и c,введенных с клавиатуры.
3. Найти решение системы линейных уравнений вида
заданной своими коэффициентами .
4. Найти сумму цифр трехзначного числа, введенного с клавиатуры.
5. Даны две переменные целого типа: А и В. Если их значения не равны, то присвоить каждой переменной сумму этих значений, а если равны, то присвоить переменным нулевые значения. Вывести новые значения на экран компьютера.
6. Составить программу, которая проверяет, является ли введенное с клавиатуры целое число четным или нечетным.
7. Даны пять целых числа. Найти количество положительных чисел в исходном порядке.
Лабораторная работа №5
Тема: Циклические алгоритмы: цикл с параметром; с предусловием, с постусловием. Оператор выбора.
Цель работы: научиться применять основные операторы (команды) и редактировать программы с циклической структурой; изучить на практике, как составляются программы с циклической структурой.
Материально-техническое оснащение: Персональный компьютер – 15шт.(для студентов) и 1шт.(преподавательская); Локальная сеть – academy; Проектор AcerX 1263; Экран настенный; Методические указания к выполнению лабораторной работы; ABCPascal.
Продолжительность:4ч.
Порядок выполнения лабораторной работы:
1. Ввод и тестирование примеров программ с циклической структурой;
2. Составление программ с циклической структурой;
3. Проверка, корректировка и сдача программ.
Теоретическая часть
Циклический алгоритм
Алгоритм называется понятное и точное предписание (указание) исполнителю совершить определенную последовательность действий для достижения поставленной цели решения поставленной задачи.
Цикл – процесс многократного повторения каких-либо действий.
Действия, повторяющиеся в цикле, называются телом цикла. Различают три вида циклов:
1) Цикл с параметром (для)
2) Цикл с предусловием (пока)
3) Цикл с постусловием (до)
Цикл с параметром FOR
Возьмем очень простой пример - таблицу умножения: число 2умножаем на числа от 1 до 10 и печатаем ответ. Какие действия повторяются? Повторяются действия умножения и вывод значенияпроизведения на экран. При этом заметим, что второй сомножительувеличивается при каждом действии на единицу, и операцияумножения повторяется заданное количество раз. Как мы видим, вэтом случае процесс вычислений носит циклический характер, причемчисло повторений цикла известно к началу его выполнения,управление циклом осуществляется с помощью переменной (счетчикцикла), которая в этом циклическом процессе принимаетпоследовательное значение от заданного начального значения дозаданного конечного значения.Значение таблицы умножения на 2 можно записать так :2 х i = а, где i изменяется от 1 до 10, а - от 2 до 20.
Оператор цикла с параметром применяют тогда, когда заранееизвестно число повторений одной и той же последовательностиоператоров. Начальные и конечные значения параметра цикла могутбыть представлены константами, переменными или арифметическимивыражениями.
For K:=N1 toN2do
Оператор1
For K:=N1 toN2 do
Begin
Оператор1;
…………….
Оператор2;
End;
ForK:=N2 downto N1do
Begin
Операторы циклической части
End;
Примечание:
1) Счетчикизменяется на единицу при каждом следующемисполнении оператора цикла.
2) Не забывайте, чтосчетчику присваивается начальное значение, т.е.K=начальное значение.
3) Если начальноезначение совпадает с конечным значением, тооператоры цикла (еще говорят «тело цикла») выполняются одинраз.
4) Если начальное значениесчетчика больше конечного значения, тотело цикла не выполняется ниразу.
5) При выходе из циклазначение счетчика совпадает с конечнымзначением, т.е. К=M2
Цикл с предусловием WHILE
Цикл с предусловием WHILE используется тогда, когда число повторений оператора цикла заранее не известно, а задается некоторое условие продолжение цикла.
While<условие>do
Begin
Операторы циклической части
end
while (пока) do (выполнять)
Сначала выполняется значения условия. Пока оно истинновыполняются операторы циклической части . Когда только оностановится ложным, происходит выход изцикла. Если условие ложно то цикл не выполняется ни разу.
Данная конструкция может работать, как конструкция цикла сосчетчиком, но при этом необходимо изменять переменную,являющуюся счетчиком, с помощью оператораприсваивания. Вконструкции WHILE вы можете выбирать любой необходимый вамшаг.
Цикл с постусловием REPEAT
Этот оператор отличается от цикла с предусловием WHILE тем, что проверка условия производится после очередного выполнения тела цикла. Этообеспечивает выполнение цикла хотя бы одинраз.
Repeat
Операторы циклической части
Until<условие>;
Repeat (повторить) Until (до тех пор)
Операторыциклической части выполняются повторно до тех порпока значение логического выражения ложно. Условием прекращения циклических вычислений являетсяистинное значение логического выражения.
Служебноеслово REPEAT открывает тело цикла затемвыполняются последовательно операторы тела цикла и проверяетсяусловие выхода из него.
Примечание:
1. Тело цикла выполняется хотя бы один раз в любом случае.
2. Входе работы цикла мы должныприйти к истинности условия.
Оператор выбора CASE
Case<переменная>of
<константа1>:<оператор1>;
<константа2>:<оператор2>;
………… …………. ………
<константаn>:<операторn>;
[else<оператор>]
End;
Если порядковая переменная равна одной из перечисленных констант, то выполняется соответствующий оператор. Затем управление передается за пределы оператора выбора. Если значение переменной не совпадает ни с одной константой, то выполняется оператор, стоящий после Else, если он есть, либо управление передается на оператор, следующий за End.
Пример 2.1. Вычислить сумму 12 целых чисел, введенных с клавиатуры.
Program primer2_1;
Var a:integer; {введенноечисло}
i:integer; {счетчикцикла}
s:integer; {сумма}
begin
s:=0;
for i:=1 to 12 do
begin
writeln(‘задайте значение очередного слагаемого’);
readln(a);
s:=s+a; end;
writeln(‘Сумма=’,s);
end.
Пример 2.2. Подсчитать количество отрицательных чисел из 10, введенных с клавиатуры.
Program primer2_2;
VAR a: integer; {входнаяпеременная}
i: integer; {счетчикцикла}
K :integer; {счетчикотрицательныхчисел}
BEGIN
K:=0;
FOR i:=1 TO 10 DO
BEGIN
write(’задайте значение переменной a: ’);
readln(a);
IF a<0 THEN K:=K+a
END;
IFK=0 THENwriteln(‘Отрицательныхчиселнет»);
ELSEwriteln(‘Количествоотрицательныхчисел’,K:4);
END.
Пример 2.3. Вычислить сумму четных и нечетных чисел
Program primer2_3;
var a: integer; {введенноечисло}
i: integer; {счетчикцикла}
S1: integer; {суммачетныхчисел}
S2: integer; {сумма нечетных чисел}
begin
S1:=0; S2:=0;
fori:=1 to 10 do
begin write(’задайте значение очередного слагаемого ’);
readln(a);
if a mod 2=0 then S1:=S1+a;
if a mod 2=1 then S2:=S2+a;
end;
if S1=0 then writeln(‘четныхчиселнет’)
else writeln(‘суммачетныхчисел =’, S1);
if S2=0 then writeln(‘нечетныхчиселнет’)
elsewriteln(‘сумма нечетных чисел =’, S2);
end.
Пример 2.4. Алгоритм вычисления n!. n!=1*2*3*...*n. 0!=1
Program primer2_4;
var f: integer;
i: integer;
n:integer;
begin
writeln(‘введите n!’);
readln(n);
f:=1;
for i:=1 to n do
f:=f*i;
Writeln(‘n!=’,f);
end.
Пример 2.5. Вычислить сумму ряда: 1!+2!+3!+…+n!
Program primer2_5;
var f: integer; {факториал}
i: integer; {счетчик}
n:integer; {конечноечислоряда}
s:integer; {суммаряда}
begin
writeln(‘введитеn!’);
readln(n);
f:=1; s:=0;
for i:=1 to n do
begin
f:=f*i;
s:=s+f;
end;
Writeln(‘суммаряда=’,s);
end.
Пример 2.6. Алгоритм вычисления
Program primer2_6;
var a: integer; {основание}
n:integer; {показательстепени}
i: integer; {счетчикцикла}
p: integer; {результат}
begin
write(‘задайтеоснованиеа=’); readln(a);
write(‘введите показатель n=’); readln(n);
p:=1;
for i:=1 to n do
p:=p*a;
writeln(a,’в степени ‘,n,’ равно ’,p);
end.
Цикл с предусловием WHILE
Пример 2.7. Вычислить сумму четных чисел на отрезке от 10 до 30.
Program primer2_7;
vark:integer; {очередноеслагаемое}
s:integer; {сумма}
begin
s:=0; k:=10;
while k<=30 do
begin
s:=s+k;
k:=k+2
end;
writeln(‘сумма четных чисел от 10 до 30=’,s);end.
Пример 2.8. Напечатать в виде таблицы значения функции , для значений x, изменяющегося от -4 до 2 с шагом 0.5
Program primer2_8;
var x:real;
y:real;
begin
x:=-4;
while x<=2 do
begin
writeln('при x=',x);
y:=4*x*x-2*x+3;
x:=x+0.5;
writeln(' y=',y:4:2);
end;
end.
Цикл с постусловием REPEAT
Пример 2.9. Вычислить сумму квадратов натуральных чисел до тех пор, пока квадрат очередного числа не превысит 81.
Program primer2_9;
var k:integer; {слагаемое}
s:integer; {сумма}
begin
k:=1; s:=0;
repeat
s:=s+k*k;
k:=k+1;
until sqr(k)>81;
writeln(‘сумма равна=’,s)
end.
Пример 2.10. Найти наибольший общий делитель (НОД) двух чисел. НОД - это наибольшее целое число, которое делит нацело оба числа
Program primer2_10;
var a,b:longint;
begin
writeln(‘введитедвачисла’);
readln(a,b);
repeat
if a>b then a:=a mod b
else b:=b mod a
until (a=0) or (b=0);
writeln(‘НОД=’, a+b);
end.
Оператор выбора CASE
Пример 2.11. Составьте программу, в которой определяется, какой буквой - гласной или согласной - является введенный символ английского алфавита..
Program primer2_11;
varch:char;
begin
Writeln(‘Введитесимвол’);
Readln(ch);
Case ch of
‘a’,’e’,’i’,’o’,’u’ : writeln(‘Этогласная’);
‘a’...’z’ :writeln(‘это согласная’);
else writeln(‘это не английский алфавит’);
end;
end.
Пример 2.12. Мастям игральных карт условно присвоены следующие
порядковые номера: «пики»-1, «трефы»-2, «бубны»-3, «червы»-4. По
заданному номеру масти m (1≤m≤4) определить название
соответствующеймасти.
Program primer2_12;
var m:integer;
begin
write(‘введитеномермасти’); readln(m);
case m of
1 : writeln(‘пики’);
2 : writeln(‘трефы’);
3 : writeln(‘бубны’);
4 : writeln(‘червы’);
else writeln(‘вы ввели неправильный номер’);
end;
end.