Когда вы устанавливаете новые программы в терминале, вы могли часто видеть появляющиеся информативные диалоговые блоки для обратной связи с вами. Типы диалоговых блоков различны: от диалогов да/нет до полей ввода, блоков паролей, чеклистов, меню и так далее. Преимущества использования таких дружественных к пользователю блоков очевидны, ведь они интуитивно направляют вас для ввода необходимой информации.
Когда вы пишите интерактивный шелл скрипт, вы на самом деле можете использовать такие диалоговые блоки для принятия ввода пользователя. Будучи предварительно установленной на всех современных дистрибутивах Linux, программа под названием whiptail может у процесс создания шелл скриптом диалоговых и информационных блоков в терминале наподобие тех, что графических интерфейсов, что кодируют Zenity или Xdialog для скриптов.
В этом уроке я опишу как с использованием whiptail создать дружественный пользователю диалоговые блоки в шел скрипте. Я также покажу Баш фрагменты кода различных диалоговых блоков, поддерживаемых в whiptail.
Объяснение:
Товарищ Бонч-Бруевич родился 28 июня или 10 июля 1873 года, местом рождения по праву считается город Москва. Бонч-Бруевич родился в семье землемера, выходца из шляхты Могилёвской губернии. К сожалению, дата его смерти - 14 июля 1955, умер также в городе Москва. Похоронен на Новодевичьем кладбище в Москве. По професии - российский революционер, большевик, советский партийный и государственный деятель, этнограф, публицист. Ближайший и фактический секретарь В. И. Ленина. Доктор исторических наук, имеет ученую степень в исторических науках. Брат Михаила Дмитриевича Бонч-Бруевича.
program LinearAlgorithm;
var
m, n, result: Real;
begin
// Ввод значений переменных m и n
write('Введите значение переменной m: ');
readln(m);
write('Введите значение переменной n: ');
readln(n);
// Вычисление общего ответа отношения m и n
result := m / n;
// Вывод результата
writeln('Общий ответ отношения m и n: ', result:0:2);
end.
В этом примере программа запрашивает у пользователя значения переменных m и n, а затем вычисляет и выводит результат отношения m и n с двумя знаками после запятой.
3.
program DistanceCalculation;
var
motorcycleSpeed, bicycleSpeed, time: Real;
distance: Real;
begin
// Ввод данных
motorcycleSpeed := 60; // Скорость мотоциклиста в км/ч
bicycleSpeed := 15; // Скорость велосипедиста в км/ч
time := 2; // Время встречи в часах
// Вычисление расстояния
distance := (motorcycleSpeed + bicycleSpeed) * time;
// Вывод расстояния
writeln('Расстояние от города до поселка: ', distance:0:2, ' км');
end.
В этом примере программа предоставляет заданные значения скорости мотоциклиста (60 км/ч), скорости велосипедиста (15 км/ч) и времени встречи (2 часа). Затем она вычисляет расстояние, перемножая сумму скоростей мотоциклиста и велосипедиста на время. Результат выводится на экран с точностью до двух знаков после запятой.
задачи на разветвляющиеся алгоритмы
1.
program BranchingAlgorithm;
var
num1, num2, product: Integer;
begin
// Ввод двух чисел
write('Введите первое число: ');
readln(num1);
write('Введите второе число: ');
readln(num2);
// Вычисление произведения
product := num1 * num2;
// Проверка знака произведения и вывод результата
if product < 0 then
begin
product := product * -2;
writeln('Произведение отрицательно. Результат: ', product);
end
else
begin
product := product * 3;
writeln('Произведение неотрицательно. Результат: ', product);
end;
end.
В этом примере программа запрашивает у пользователя два числа, а затем вычисляет и проверяет знак их произведения. Если произведение отрицательно, оно умножается на -2 и выводится на экран. В противном случае, если произведение неотрицательно, оно увеличивается в 3 раза и также выводится на экран.
2.
program BranchingAlgorithm;
var
number, sum: Integer;
begin
// Ввод двухзначного числа
write('Введите двухзначное число: ');
readln(number);
// Проверка на двухзначность числа
if (number < 10) or (number > 99) then
begin
writeln('Введено некорректное число.');
exit;
end;
// Вычисление суммы цифр числа
sum := (number div 10) + (number mod 10);
// Проверка на четность суммы цифр и изменение числа
if sum mod 2 = 0 then
begin
number := number + 2;
writeln('Сумма цифр четная. Результат: ', number);
end
else
begin
number := number - 2;
writeln('Сумма цифр нечетная. Результат: ', number);
end;
end.
Если число не соответствует требованию, программа выводит сообщение об ошибке. В противном случае, программа вычисляет сумму цифр числа и проверяет, является ли эта сумма четной. В зависимости от результата, число увеличивается на 2 или уменьшается на 2, а затем выводится на экран.
3.
program BranchingAlgorithm;
var
num1, num2, product: Real';
begin
// Ввод двух чисел
write('Введите первое число: ');
readln(num1);
write('Введите второе число: ');
readln(num2);
// Вычисление произведения
product := num1 * num2;
// Проверка знака произведения и вывод результата
if product < 0 then
begin
product := product * 8;
writeln('Произведение отрицательно. Результат: ', product:0:2);
end
else
begin
product := product * 1.5;
writeln('Произведение неотрицательно. Результат: ', product:0:2);
end;
end.
В этом примере программа запрашивает у пользователя два числа, а затем вычисляет и проверяет знак их произведения. Если произведение отрицательно, оно умножается на 8 и выводится на экран с двумя знаками после запятой. В противном случае, если произведение неотрицательно, оно увеличивается в 1,5 раза и также выводится на экран с двумя знаками после запятой.
задачи на циклы
1.
program LoopExample;
var
i: Integer;
begin
// Печать ряда повторяющихся чисел
for i := 1 to 10 do
begin
write('20 ');
end;
// Переход на новую строку
writeln;
end.
2.
program PrintNumbers;
var
a, b, i: Integer;
begin
// Ввод значений a и b
write('Введите значение a: ');
readln(a);
write('Введите значение b: ');
readln(b);
// Печать чисел от a до b
for i := a to b do
begin
writeln(i);
end;
end.
3.
program BirthdayGift;
var
age, dayCount: Integer;
giftAmount: Double;
begin
age := 1; // Начальный возраст
giftAmount := 1.0; // Начальная сумма подарка
dayCount := 1; // Счетчик дней рождений
// Подсчет дня, когда подарок превысит 100$
while giftAmount <= 100.0 do
begin
giftAmount := giftAmount * 2 + age;
Inc(dayCount);
Inc(age);
end;
// Вывод результата
writeln('Подарок превысит 100$ на ', dayCount, '-й день рождения');
end.