Программа с ветвлением и циклом

Афоризм
Какие это деньги? Это сдача!
Наталья Резник
Поддержка проекта
Если Вам сайт понравился и помог, то будем признательны за Ваш «посильный» вклад в его поддержку и развитие
• Yandex.Деньги
410013796724260
• Webmoney
R335386147728
Z369087728698
Ветвление (условная инструкция) – это конструкция языка программирования, обеспечивающая выполнение определённой
команды или набора команд только при условии истинности некоторого логического выражения, либо выполнение одной
из нескольких команд (наборов команд) в зависимости от значения некоторого выражения.
Цикл — это разновидность управляющей конструкции, предназначенная для организации многократного исполнения
набора инструкций.
В основе ветвления и отдельных циклов лежат логические операторы сравнения, определяющие необходимость выполнение
следующих строк кода или перехода к другим.
Операторы сравнения
Большинство операторов сравнения применимы к числовым значениям. Всё это бинарные операторы, имеющие два
числовых аргумента, но возвращающие логическое значение.
- > оператор «больше»
- >= оператор «больше или равно»
- < оператор «меньше»
- <= оператор «меньше или равно»
- != оператор «не равно»
- == оператор эквивалентности (равенства)
Последние два оператора сравнения применяются не только для числовых значений, но для логических. Сравнение
двух текстовых операторов выполняется с использованием методов equals(String object), equalsIgnoreCase(String object).
Очень важно не путать оператор эквивалентности с операцией присваивания.
В выражениях, где встречаются операторы разных типов, сначала выполняются арифметические операции,
затем операции сравнения, после этого логические операции и в последнюю очередь присваивание.
Логические операторы
При выполнении операций сравнения или присваивания могут присутствовать логические операторы. Существует
один унарный и несколько бинарных логических операторов. В качестве аргументов для всех этих операторов выступают
логические литералы (константы), логические переменные и выражения, имеющие логическое значение.
Оператор | Назначение |
---|---|
! | символ отрицания, унарный оператор, меняет значение на противоположное (инвертирует: ложь превращает в истину, а истину — в ложь) |
&& | символ логического «и» («конъюнкция»), бинарная операция, возвращает истинное значение тогда и только тогда, когда оба операнда истины |
|| | символ логического «или» («дизъюнкция»), бинарная операция, возвращает истинное значение, когда хотя бы один из операндов истинный |
У логических операторов следующий приоритет: отрицание, конъюнкция, дизъюнкция.
Также, как и с арифметическими операторами, для коррекции приоритета выполнения операции используются круглые скобки.
Если одна пара скобок вложена в другую пару скобок, то сначала вычисляется значение во внутренних скобках.
Примеры использования логических операторов
boolean a = true;
boolean b;
boolean c;
b = a || true; // b истинно
b = !b; // b ложно
System.out.println(b); // вывод в консоль значения false
a = a || b; // a истинно
c = a && (a || b); // с истинно
System.out.println(c); // вывод в консоль значения true
boolean m;
boolean w;
m = 5 >= 4; // истина
m = 5 != 5 || false; // ложь
w = m == false; // истина
System.out.println(w);// вывод в консоль значения true
Операторы ветвления
Синтаксис оператора ветвления if else
if (условие){
… // составной оператор №1
} else {
… // составной оператор №2
}
Если составной оператор в основной или альтернативной ветви оператора управления содержит только один простой
оператор, то фигурные скобки можно опустить. В таком случае синтаксис оператора ветвления примет вид :
if (условие)
… // простой оператор №1;
else
… простой оператор №2;
Основное предназначение оператора ветвления – это реализация разветвляющихся алгоритмов. Например, фрагмент
программы, для вычисления функции: Y(x) = x*x, при x < 0 и Y(x) = 2*x, при x >= 0
int x, y;
// Чтение значений x, y из консоли
Scanner in = new Scanner(System.in);
System.out.println(“Enter x :”);
x = in.nextLine();
System.out.println(“Enter y :”);
y = in.nextLine();
if (x < 0)
y = x*x;
else
y = 2*x;
System.out.printf (“Результат: %in”, y);
При построении программ с несколькими подряд идущими операторами ветвления необходимо учитывать следующее правило:
оператор else относится к последнему оператору if. Например, рассмотрим фрагмент программы:
if (x > 10.0)
y = 2*x + 5;
if (y < z)
y = fabs(x);
else
y = 2.5*x;
Если необходимо нарушить этот порядок (т.е. ветвь else отнести к первому оператору if), то необходимо
второй оператор if включить в составной оператор прямой ветви первого оператора if:
if (x > 10.0) {
y = 2*x + 5;
if(y < z)
y = fabs(x);
} else
y = 2.5*x;
В программировании часто встречается необходимость создания каскадных операторов ветвления. Синтаксис такой
структуры имеет вид :
if (условие № 1) {
составной оператор № 1
} else if (условие № 2) {
составной оператор № 2
} … {
} else if (условие № N) {
составной оператор № N
} else {
составной оператор № N+1
}
Многовариантное ветвление, оператор switch
Конструкция if else может оказаться неудобной, если вы стоите перед необходимостью сделать выбор из
нескольких вариантов. Оператор switch обеспечивает ясный способ переключения между различными частями
программного кода в зависимости от значения одной переменной или выражения. Общая форма этого оператора такова:
switch ( choice ) {
case значение1:
break;
case значение2:
break;
case значением:
break;
default:
}
Выполнение кода начинается с метки case, соответствующей значению выражения choice, и продолжается
до следующего оператора break или конца оператора switch. Если ни одна метка не совпадает со значением
переменной, выполняется раздел default, если он предусмотрен.
Заметим, что метка case должна быть целочисленной. Нельзя проверять строки. Все значения case должны
быть уникальными литералами. Если в двух операторах case будут одинаковые значения, то транслятор выдаст
сообщение об ошибке.
Отметим, что оператор default необязателен. В случае, когда ни один из операторов case не соответствует
значению выражения и в switch отсутствует оператор default выполнение программы продолжается с оператора,
следующего за оператором switch.
Если case не заканчивается оператором break, то после текущего раздела case будет выполняться следующий.
Иногда бывает удобно иметь в операторе switch несколько смежных разделов case, не разделенных оператором break.
Циклы java
В java существует два типа циклов:
- цикл типа «пока» – while и do…while
- типа «n-раз» – for (инициализация; условие; итерация)
Первый тип «пока» предназначен для повторения какого-то действия до тех пор, пока выполняется некоторое условие.
Пример: увеличивать значение переменной на 3 до тех пор, пока оно не станет трёхзначным.
Второй тип «n-раз» предназначен для повторения каких-то действий заранее известное количество раз.
Пример: найти факториал числа 6.
Циклы while и do…while
Оператор while повторяет указанные действия до тех пор, пока его выражение имеет истинное значение.
Синтаксис цикла while
while (логическое выражение) {
… // тело цикла
}
Пример вывода в консоль значений массива :
String[] lst = {“Зима”, “Лето”, “Осень”, “Весна”};
int i = 0;
while(i++ < lst.length){
System.out.print(lst[i] + ” “);
}
Условие необходимости повторения цикла проверяется перед каждым шагом цикла, в том числе перед самым первым.
Java предлагает также возможность использования цикла с постпроверкой условия. Для его записи используется
конструкция из операторов do…while.
do {
… // тело цикла
} while (логическое выражение)
Следующий цикл будет выполнен 4 раза, и в консоль будет выведено «1 2 3 4 »:
int i = 0;
do {
i++;
System.out.print(Integer.valueOf(i) + ” “);
} while(5 > i);
Тело цикла do…while выполняется по крайней мере один раз. Этот оператор удобно использовать, когда
некоторое действие в программе нужно выполнить по крайней мере единожды, но при некоторых условиях придётся
повторять его многократно.
Цикл for
Оператор for содержит три параметра : параметр инициализации, параметр повторения, параметр итерации.
Синтаксис цикла for
for (инициализация; условие; итерация) {
// тело цикла, т. е. повторяемые циклично действия
}
В первом параметре определяют переменную, с помощью которой будет подсчитываться количество повторений цикла.
Её называют счетчиком. Счётчику задают некоторое начальное значение (указывают, начиная с какого значения он будет
изменяться). Во втором параметре указывают некоторое ограничение на счётчик, т.е. до какого значения он будет
изменяться. В третьем параметре указывают выражение, изменяющее счётчик после каждого шага цикла. Обычно это
инкремент или декремент, но можно использовать любое выражение, где счётчику будет присваиваться некоторое новое
значение.
Представленная программа выводит в консоль значения массива :
String[] lst = {“Зима”, “Лето”, “Осень”, “Весна”};
// в прямом порядке
for (int i = 0; i < lst.length; i++) {
System.out.print(lsti] + ” “);
}
// в обратном порядке
for (int i = (lst.length – 1); i >= 0; i–) {
System.out.print(lsti] + ” “);
}
В одном цикле можно задавать сразу несколько счётчиков. Для этого необходимо несколько выражений в итерации и в
инициализации разделять запятыми. Условие повторения можно задавать только одно, но оно может быть выражением,
содержащим сразу несколько счётчиков.
Представленный код выведет в консоль такую последовательность «0 -1 -4 -9 -16 -25»
for(int a = 0, b = 0; a – b <= 10; a++, b–){
System.out.print(” ” + a*b);
}
Прерывание цикла, break
Для досрочного прерывания цикла необходимо использовать оператор break. При этом происходит моментальный
выход из цикла; текущий шаг не будет завершен. Т.е. если после break присутствовали какие-то ещё операторы, то они
не выполнятся.
Примеры прерывания циклов :
// Прерывание цикла for
for (int a = 1; a <= 10; a++){
if (a == 5)
break;
System.out.println(“a = ” + a);
}
// Прерывание цикла while
int s = 100;
while(true) {
System.out.print(s +” “);
s = s / 2;
if (s == 0)
break;
System.out.println(“s = ” + s);
}
Прерывание цикла, continue
Для прерывания цикла можно использовать оператор continue. В отличие от оператора break, который
прерывает цикл, оператор continue прерывает только текущий шаг цикла и передает управление в начало цикла.
// Прерывание цикла while
int s = 100;
while(true) {
System.out.print(s +” “);
s = s / 2;
if (s == 25)
continue;
else if (s == 0) {
break;
} else
System.out.println(“s = ” + s);
}
В примере при значении s равном 25 очередная итерация цикла будет прервана и управление будет передано в начало
цикла.
Если оператор continue используется в цикле for, то он передаст управление оператору увеличения
счетчика цикла.
Наверх
Источник
Проверочная работа по программированию на языке Паскаль .
(Линейный, ветвление, условие).
Составить программы на языке Паскаль и проверить на компьютере. Ответить на задания тестов. Знать алфавит и основные команды языка Паскаль.
Линейная программа.
I.1. Составить программу для вывода на экран результата вычисления суммы 2-х чисел, умноженной на третье число.
Ввести a,b,c
Вычислить k := (a + b)*c
Вывести ответ k
2 3 5
25
program summa2chiselna3;
var a, b, c,k: integer;
begin
read ( a, b,c );
k := (a + b)*c;
writeln ( k );
end.
I.2. Вычислить функцию: y=2(t+m)s
4 3 2
28
Program funkcia;
var t, m, s,y: integer;
begin
read (t, m, s);
y:=2*(t+m)*s;
writeln ( y );
end.
I.3. Составить программу для вывода на экран (лесенкой) сведений о себе.
program FIO;
begin
writeln(‘ Я, ‘);
writeln(‘ Иванов’);
writeln(‘ Иван’);
writeln(‘ Иванович,’);
writeln(‘ родился’);
writeln(‘ 19.01.1999 года’);
end.
I.4. Составить программу для вывода на экран суммы и произведения 3 чисел
program summaiproizwedtnie3chisel;
var a, b, c,s,p: integer;
begin
read ( a, b,c );
s := a + b+c;
p := a * b*c;
writeln ( s );
writeln ( p );
end.
2 3 4
9
24
I.5.Составить программу для вывода на экран количества десятков в заданном числе.
program ch10;
var i,k: integer;
begin
read (i);
k:= (I div 10);
write(‘ ‘, k);
end.
75 7
Ветвление. Условный оператор.
II.1. Составить программу для решения задачи: «Если первое число больше или равно второму, то найти их сумму, иначе разность. (Программа с условием)
a+b, если a>=b;
y= a–b, если a<b.
Алг. Функция
Арг. a,b
Рез. Y
Нач.
Если a>=b, то y:= a+b
Всё
Иначе
y:= a-b
Вывод y
Кон.
9 1 Функция y=10
-6 7 Функция y=-13
6 6 Функция y=12
program f;
var a, b, y: integer;
begin
writeln(‘Введите два целых числа’);
read ( a, b );
if a>=b then begin
y:= a+b;
end
else
y:= a-b;
writeln (‘Функция y=’, y);
end.
II.2. Составить программу для решения задачи: «Если число больше нуля, то сообщить «число положительное» , если меньше нуля- «отрицательное, а если «нуль»- то вывести на экран 0.
program znakchisla;
var a:real;
begin
writeln(‘Введите числo’);
read (a);
if a>0 then begin
writeln(‘ число положительное ‘);
end;
if a<0 then begin
writeln(‘ число отрицательное ‘);
end;
if a=0 then begin
writeln (‘Это число 0’);
end;
end.
-9 число отрицательное
8 число положительное
0 Это число 0
II.3. Составить программу для решения задачи поиска максимального (минимального) из двух заданных чисел.
program maxiz2chisel;
var a, b, max: integer;
begin
writeln(‘Введите два целых числа’);
read ( a, b );
if a > b then begin
max:=a
end
else begin
max:=b
end;
writeln (‘Наибольшее число ‘, max);
end.
9 -345 Наибольшее число 9
II.4. Составить программу для решения задачи поиска максимального (минимального) из трех заданных чисел.
program maxiz3chisel;
var a, b,c,max: integer;
begin
writeln(‘Введите три целых числа’);
read ( a, b,c);
if a > b then begin
max:=a
end
else begin
max:=b
end;
if max > c then begin
max:=max
end
else begin
max:=c
end;
writeln (‘Наибольшее число ‘, max);
end.
3 5 8 Наибольшее число 8
II.5. Составить программу для вычисления функции.
2*f-3*d, если f>d;
y= f+d, если f=d;
f-d, если f
program funkcijay;
var f, d, y: integer;
begin
writeln(‘Введите два целых числа’);
read ( f, d );
if f>d then begin
y:= 2*f-3*d
end
else begin
y:= f+d
end;
if f
y:= f-d
end;
writeln (‘Функция y=’, y);
5 2 Функция y=4
1 5 Функция y=-4
11 11 Функция y=22
II.6.Составить программу для вывода числа, если в нем десятков меньше 5, в противном случае сообщить «НЕТ»
program ch10;
program fjay;
var i,k: integer;
begin
read (i);
k:=(I div 10);
if k<5 then begin
write(‘ ‘, k);
end;
if k>=5 then begin
write(‘НЕТ’);
end;
end.
49 4 50 НЕТ
Программа с использованием цикла с параметром, со счетчиком, с заданным числом повторений.
III.1.Составить программу для вывода на экран «Мы – молодцы!» 15 раз в строчку
Да
Нет
Program mymolodcy;
var x: integer;
begin
for x:=1 to 15 do
write (‘ Мы- молодцы!’);
end.
Мы- молодцы! Мы- молодцы! Мы- молодцы!
Мы- молодцы! Мы- молодцы! Мы- молодцы!
Мы- молодцы! Мы- молодцы! Мы- молодцы!
Мы- молодцы! Мы- молодцы! Мы- молодцы!
Мы- молодцы! Мы- молодцы! Мы- молодцы!
III.2.Составить программу для вывода на экран суммы всех цифр.
Нет Да
Program umma10;
var x,s:integer;
begin
s:=0;
for x:=0 to 9 do
s:=s+x;
writeln(‘ Сумма цифр равна’, s);
end.
Сумма цифр равна 45
III.3.Составить программу для вывода на экран 10 раз предложение «С Новым годом!»
program Cnowymgodom;
var i: integer;
begin
for i:=1 to 10 do
writeln(‘СНовымгодом!’);
end.
С Новым годом! С Новым годом! С Новым годом! С Новым годом! С Новым годом! С Новым годом! С Новым годом! С Новым годом! С Новым годом! С Новым годом!
III.4.Составить программу для вывода на экран всех двузначных чисел в строчку.
program dwuznahnyehicla;
var i: integer;
begin
for i:=10 to 99 do
write(‘ ‘, i);
end.
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
III.5.Составить программу для вывода на экран всех четных двузначных чисел в строчку.
program chetnye;
var i: integer;
begin
for i:=10 to 99 do
if i mod 2=0 then write(‘ ‘, i);
end.
10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 62 64 66 68 70 72 74 76 78 80 82 84 86 88 90 92 94 96 98
III.6.Составить программу для вывода на экран всех трехзначных чисел, оканчивающихся цифрой 7, в строчку.
program ch7;
var i: integer;
begin
for i:=100 to 999 do
if i mod 10=7 then write(‘ ‘, i);
end.
107 117 127 137 147 157 167 177 187 197 207 217 227 237 247 257 267 277 287 297 307 317 327 337 347 357 367 377 387 397 407 417 427 437 447 457 467 477 487 497 507 517 527 537 547 557 567 577 587 597 607 617 627 637 647 657 667 677 687 697 707 717 727 737 747 757 767 777 787 797 807 817 827 837 847 857 867 877 887 897 907 917 927 937 947 957 967 977 987 997
III.7.Составить программу для вывода на экран всех трехзначных чисел, оканчивающихся цифрами 99, в строчку.
program ch99;
var i: integer;
begin
for i:=100 to 999 do
if i mod 100=99 then write(‘ ‘, i);
end.
199 299 399 499 599 699 799 899 999
III.8.Составить программу для вывода трехзначных чисел, которые делятся нацело на 89
program ch89;
var i: integer;
begin
for i:=100 to 999 do
if (i mod 89) =0 then begin
write(‘ ‘, i);
end;
end.
178 267 356 445 534 623 712 801 890 979
III.9. Составить программу для вывода чисел, их квадратов и кубов.
program qwadrkub;
var i, i2, i3: integer;
begin
for i:=1 to 8 do begin
i2 := i*i;
i3 := i2*i;
writeln(i,’ ‘, i2,’ ‘, i3,’ ‘);
end;
end.
1 1 1
2 4 8
3 9 27
4 16 64
5 25 125
6 36 216
7 49 343
8 64 512
III.10. Составить программу для вывода n– факториал.
program faktorial;
var
n, i, s: integer;
begin
read(n);
s := 1;
for i := 1 to n do
s := s * i;
writeln(s);
end.
4 24
III.10. Составить программу для вывода степени числа.
program Exponent;
var x, n, i, r:integer;
begin
readln(x, n);
r := 1;
for i := 1 to n do begin
r := r * x;
end;
writeln(r);
end. 3481
Словарный диктант по основам языка Паскаль.
Деление нацело , отбрасывается остаток (69 Div 10 = 6) 25 div 20 = 1;20 div 25 = 0;39 div 5 = 7;158 div 3 = 52.
Div
Для на языке Паскаль- это
For
Если – условие на языке Паскаль- это
If
Имя, значение которой меняется- это
Переменная
Иначе , в противном случае на языке Паскаль- это
Else
Исключающее ИЛИ на языке Паскаль- это
Xor
Конец блока, завершение на языке Паскаль- это
End
Логическое И, конъюнкция, или логическое умножение на языке Паскаль- это
And
Логическое ИЛИ. Дизъю́нкция, логи́ческое сложе́ние на языке Паскаль- это
Or
Логическое НЕ – Отрица́ние – инверсия на языке Паскаль- это
Not
Направление перехода к следующему шагу алгоритма в блок- схеме– это фигура
Стрелка- вектор
Начало блока на языке Паскаль- это
Begin
Остаток от деления (69 Mod 10 = 9) на языке Паскаль- это25 mod 20 = 5;20 mod 25 = 0;39 mod 5 = 4;158 mod 3 = 2.
Mod
Паскаль (англ. Pascal) — один из наиболее известных языков программирования, создан (кем и когда?)-
1970г. (Н. Вирт)
Переменная , описание переменных на языке Паскаль- это
Var
Повторяющийся алгоритм – это есть
Цикл
Пока выполняется условие повторять на языке Паскаль- это
While
Программа, название, заголовок на языке Паскаль- это
Program
Средство общение или представления информации
Язык
Считывать на языке Паскаль- это
read
То (тогда, затем) на языке Паскаль- это
Then
Увеличивая на языке Паскаль- это
To
Файл на языке Паскаль- это
File
Целая величина на языке Паскаль- это
integer
Овал в блок- схеме означает
Начало или конец алгоритма
Тест.Тест № 1 по теме «Алгоритм. Свойства и виды алгоритмов»
Алгоритм — это:
а) правила выполнения определенных действий;
б) ориентированный граф, указывающий порядок исполнения некоторого набора команд;
в) понятное и точное предписание исполнителю совершить последовательность действий
2. Укажите наиболее полный перечень способов записи алгоритмов:
а) словесный, графический, псевдокод, программный;
б) словесный;
в) графический, программный;
Алгоритм включает в себя ветвление, если:
а) если он составлен так, что его выполнение – многократное повторение одних и тех же действий;
б) если ход его выполнения зависит от истинности тех или иных условий;
в) если он представим в табличной форме;
г) если он включает в себя вспомогательный алгоритм.
Алгоритм решения некоторой подзадачи, выполняющийся обычно неоднократно, называется:
а) линейным; б) ветвящимся; в) циклическим; г) вспомогательным; д) вложенным.
Какой тип алгоритма должен быть выбран при решении квадратного уравнения?
Линейный; Б) Циклический; В) Разветвляющийся; С) Циклически-разветвляющийся.
Графическое задание алгоритма (блок/схемы) – это:
Способ представления алгоритма с помощью геометрических фигур;
Представление алгоритма в форме таблиц и расчетных формул;
Система обозначения правил для единообразной и точной записи алгоритмов их исполнения;
Схематическое изображение в произвольной форме.
Исполнитель алгоритмов – это:
Человек или автомат, умеющий выполнять некоторый, вполне определенный набор действий;
Понятное и точное предписание;
Связи между этапами при помощи стрелок;
Какой из документов является алгоритмом?
Правила техники безопасности;
Инструкция по приготовлению пищи;
Расписание движения поездов;
Список книг в школьной библиотеке.
Линейный алгоритм – это:
А) Способ представления алгоритма с помощью геометрических фигур;
B) Набор команд, которые выполняются последовательно друг за другом;
C) Понятное и точное предписание исполнителю для выполнения различных ветвлений;
D) Строгое движение как вверх, так и вниз.
10. Отдельное указание исполнителю – это… команда.
Тест № 2 «Основы языка Pascal»
1.Первая версия языка Паскаль была разработана…- швейцарскимученым Никлаусом Виртом в1968году
2.Что такое программа…- алгоритм на языке ПК
3. Правило обозначения переменных…- латинские буквы (A-Z), цифры(но не начинать сних), _(подчеркивание)
4. С какого слова начинается тело программы…- begin .
5. Каким символом заканчивается строка заголовка программы, написанной на языке Паскаль…- ;
6. Многократное исполнение одного и того же участка программы называется циклическим процессом
7. Операция div выполняет следующие действия…- деление нацело
8. Язык программирования Pascal создал: а). Н. Вирт; б)Б. Паскаль; в) М. Фортран
9.Линейная структура построения программы подразумевает
Неоднократное повторение отдельных частей программы
Последовательное выполнение всех элементов программы
Выполнение лишь нескольких, удовлетворяющих заданному условию частей программы, – ветвление
10.Оператор присваивания имеет вид: а) = ; b) :=c) =:
11. VAR служит для …Описания переменных
Источник