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

Составьте программу по которой компьютер десять раз запросит ввод любых чисел и в результате выведет

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

Для вывода данных из оперативной памяти на экран монитора используется оператор вывода write :

Здесь в круглых скобках помещается список вывода — список выражений, значения которых выводятся на экран. Это могут быть числовые, символьные и логические выражения, в том числе переменные и константы.

Произвольный набор символов, заключённый в апострофы, считается строковой константой. Строковая константа может содержать любые символы, набираемые на клавиатуре.

Пример

Оператор write (‘s= ‘, s) выполняется так:

  1. на экран выводятся символы, заключённые в апострофы: s=
  2. на экран выводится значение переменной, хранящееся в ячейке оперативной памяти с именем s .

Если значение переменной s равно 15 и она имеет целочисленный тип, то на экране появится: s=15

Если значение переменной s равно 15, но она имеет вещественный тип, то на экране появится: s=1.5Е+01

При выполнении оператора вывода все элементы списка вывода печатаются непосредственно друг за другом. Так, в результате работы оператора write (1, 20, 300) на экран будет выведена последовательность цифр 120300, которая будет восприниматься нами как число 120300, а не как три отдельные числовые константы. Сделать выводимые данные более доступными для восприятия можно разными способами:

Способы вывода данных
Вариант организации вывода Оператор вывода Результат
Добавить разделители — запятые write (1, ‘,’, 20, ‘,’, 300) 1,20,300
Добавить разделители — пробелы write (1, ‘ ‘, 20, ‘ ‘, 300) 1 20 300
Указать формат вывода write (1:3, 20:4, 300:5) 1 20 300

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

Для вывода вещественного числа в списке вывода для каждого выражения указываются два параметра: 1) общее количество позиций, отводимых под число; 2) количество позиций в дробной части числа:

Способы вывода вещественных данных
Оператор вывода Результат выполнения оператора
write (‘s=’, s:2:0); s=15
write (‘s=’, s:3:1); s= 15.0
write (‘s=’, s:5:1); s= 15.0

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

Первая программа на языке Pascal

Пользуясь рассмотренными операторами, составим программу, вычисляющую длину окружности и площадь круга радиуса 5,4 см.

Исходным данным в этой задаче является радиус: r = 5,4 см. Результатом работы программы должны быть величины c — длина окружности и s — площадь круга. c, s и r — величины вещественного типа.

Исходные данные и результаты связаны соотношениями, известными из курса математики: c=2πr, s = πr 2 . Программа, реализующая вычисления по этим формулам, будет иметь вид:

Эта программа верна и решает поставленную задачу. Запустив её на выполнение, вы получите следующий результат:

Первая программа

Первая программа

И всё-таки составленная нами программа имеет существенный недостаток: она находит длину окружности и площадь круга для единственного значения радиуса (5,4 см).

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

Ввод данных с клавиатуры

Для ввода в оперативную память значений переменных используется оператор ввода read :

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

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

Пример

var i, j: integer; x: real; a: char;

Присвоим переменным i, j, x, а значения 1, 0, 2.5 и ‘А’. Для этого воспользуемся оператором

и организуем входной поток одним из следующих способов:

Пример ввода

Пример ввода

Здесь мы не только использовали различные разделители (пробел, запятая), но и представляли входной поток в виде одной, двух и четырёх строк.

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

Усовершенствуем программу p_1, организовав в ней ввод данных с помощью оператора read . А чтобы пользователь знал, для чего предназначена программа, и понимал, какое именно действие ожидает от него компьютер, выведем соответствующие текстовые сообщения с помощью оператора writeln :

Результат работы усовершенствованной программы

Результат работы усовершенствованной программы

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

САМОЕ ГЛАВНОЕ

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

Для вывода данных из оперативной памяти на экран монитора используются операторы вывода write и writeln .

Ввод исходных данных и вывод результатов должны быть организованы понятно и удобно; это обеспечивает дружественность пользовательского интерфейса.

Организация ввода и вывода данных
Организация ввода и вывода данных
  • оператор вывода print
  • формат вывода
  • оператор ввода input
Вывод данных

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

Для вывода данных из оперативной памяти на экран монитора используется оператор вывода print :

Здесь в круглых скобках помещается список вывода — список выражений, значения которых выводятся на экран. Это могут быть числовые, символьные и логические выражения, в том числе переменные и константы.

Произвольный набор символов, заключённый в апострофы, считается строковой константой. Строковая константа может содержать любые символы, набираемые на клавиатуре.

Пример

Оператор print (‘s= ‘, s) выполняется так:

  1. на экран выводятся символы, заключённые в апострофы: s=
  2. на экран выводится значение переменной, хранящееся в ячейке оперативной памяти с именем s .

Если значение переменной s равно 15, и она имеет целочисленный тип, то на экране появится: s=15

Оператор print вставляет между выводимыми значениями так называемый разделитель (или сепаратор, англ. separator). По умолчанию разделитель — это пробел, но мы можем его изменить, указав новый разделитель после слова sep

Способы вывода данных
Вариант организации вывода Оператор вывода Результат
По умолчанию print (1, 20, 300) 1 20 300
Убрать разделители — пробелы print (1, 20, 300, sep=») 120300
Добавить другой разделитель print (1, 20, 300, sep=’,’) 1,20,300

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

Для вывода вещественного числа в списке вывода для каждого выражения указываются два параметра: 1) общее количество позиций, отводимых под число; 2) количество позиций в дробной части числа: (◦ — обозначение пробела)

Способы вывода вещественных данных
Оператор вывода Результат выполнения оператора
a = 4
print (‘a=’, ».format(a, a * a))
a= ◦◦◦◦4◦◦◦16
a = 1 / 3
b = 1 / 9
print («».format(a, b))
◦◦0.333◦◦0.111
a = 1 / 3
b = 1 / 9
print (».format(a, b))
◦3.333e-0.1◦◦1.111e-01

При выполнении нового оператора print вывод продолжается в новой строке. Чтобы убрать переход к новой строке, используется параметр end .

Первая программа на языке Python

Пользуясь рассмотренными операторами, составим программу, вычисляющую длину окружности и площадь круга радиуса 5,4 см.

Исходным данным в этой задаче является радиус: r = 5,4 см. Результатом работы программы должны быть величины c — длина окружности и s — площадь круга. c, s и r — величины вещественного типа.

Исходные данные и результаты связаны соотношениями, известными из курса математики: c=2πr, s = πr 2 . Программа, реализующая вычисления по этим формулам, будет иметь вид:

Эта программа верна и решает поставленную задачу. Запустив её на выполнение, вы получите следующий результат:

Первая программа

Первая программа

Вывод по формату:

Первая программа с выводом по формату

Первая программа с выводом по формату

И всё-таки составленная нами программа имеет существенный недостаток: она находит длину окружности и площадь круга для единственного значения радиуса (5,4 см).

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

Ввод данных с клавиатуры

Для ввода в оперативную память значений переменных используется оператор ввода input . Каждая функция input() захватывает только ОДНУ строку данных и воспринимает ее как ТЕКСТ (строковый тип):

    Тип переменной можно преобразовать налету:
  • для целых: a = int (input())
  • для вещественных: a = float (input())

При выполнении функции input компьютер переходит в режим ожидания данных: пользователь должен ввести данные с клавиатуры и нажать клавишу Enter , система запишет это значение в переменную.

Есть задачи, в которых вводимые данные заданы в одной строке, например, 10 20. Чтобы была возможность работать с такими данными, их надо разделить.

Для этого нужно применить следующий синтаксис:

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

Теперь рассмотрим ситуацию, когда входные данные заданы в одной строке, но разделены особыми разделителями, отличными от пробела. Классическим примером таких входных данных является показания времени — 10:33.

В таких случаях надо для split() указывать конкретный символ разделителя. Разделителем будет символ ‘:’ , взятый в кавычки или апострофы.

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

При вызове функции input в скобках можно записать сообщение-подсказку:

Усовершенствуем программу 1, организовав в ней ввод данных с помощью оператора input , включив строку с приглашением для ввода:

Результат работы усовершенствованной программы

Результат работы усовершенствованной программы

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

САМОЕ ГЛАВНОЕ

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

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

Ввод исходных данных и вывод результатов должны быть организованы понятно и удобно; это обеспечивает дружественность пользовательского интерфейса.

Составьте программу по которой компьютер десять раз запросит ввод целых и в результате сообщит сколько среди введённых чисел чётных и сколько нечётных?

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

Практикум

Работа 3.4. Программирование циклических алгоритмов

Задание 1
Циклы с заданным числом повторений

Вычислить значение суммы или произведения числовой последовательности.

Уровень 1

1. Дано натуральное число N. Вычислить:

image

2. Дано натуральное число N. Вычислить:

image

3. Дано натуральное число N. Вычислить:

image

4. Дано натуральное число N. Вычислить:

image

5. Дано натуральное число N. Вычислить произведение первых N сомножителей:

image

6. Дано натуральное n. Вычислить:

image

image

Уровень 2

8. Дано натуральное число N. Вычислить:

image

9. Дано действительное число х. Вычислить:

image

10. Даны натуральное n, действительное х. Вычислить:

image

11. Дано действительное х. Вычислить:

image

12. Дано натуральное n. Вычислить:

image

13. Дано натуральное число n. Вычислить:

image

14. Вычислить по схеме Горнера:

image

15. Числа Фибоначчи (f n ) определяются формулами

image

Для данного значения р определить f p .

16. Даны натуральные числа n и k. Вычислить:

image

Задание 2
Итерационные циклы

Задание 3
Циклы при обработке целых чисел

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

Уровень 2

1. Натуральные числа а, b, с называются числами Пифагора, если выполняется условие а 2 + b 2 = с 2 . Напечатать все числа Пифагора, меньшие N.

2. Найти наибольшую и наименьшую цифры в записи данного натурального числа.

3. Дано натуральное число N. Найти и вывести все числа в интервале от 1 до N — 1, у которых сумма всех цифр совпадает с суммой цифр данного числа. Если таких чисел нет, то вывести слово «нет».

Пример: N = 44. Числа: 17, 26, 35.

4. Дано натуральное число N. Найти и вывести все числа в интервале от 1 до N — 1, у которых произведение всех цифр совпадает с суммой цифр данного числа. Если таких чисел нет, то вывести слово «нет».

Пример : N = 44. Числа: 18, 24.

5. Дано натуральное число N (N > 9). Определить количество нулей, идущих подряд в младших разрядах данного числа.

Пример: N = 1020000. Количество нулей равно четырем.

6. Найти все натуральные числа, не превосходящие заданного n, которые делятся на каждую из своих цифр.

7. Дано натуральное число N. Получить новое число М, которое образуется из числа N путем замены последней цифры на наименьшую цифру в записи числа N.

Пример: N = 128452, М = 128451.

8. Дано натуральное число N. Получить новое число М, которое образуется из числа N путем замены последней цифры на наибольшую цифру в записи числа N.

Пример: N = 128452, М = 128458.

Уровень 3

9. Даны два натуральных числа m и n. Проверить, есть ли в записи числа m цифры, одинаковые с цифрами в записи числа n.

10. Дано натуральное число N (N > 9). Определить количество нулей в цифровой записи числа, кроме нулей в младших разрядах.

Пример: N = 10025000. Количество нулей равно двум.

11. Натуральное число М называется совершенным, если оно равно сумме всех своих делителей, включая 1, но исключая себя. Напечатать все совершенные числа, меньшие заданного числа N.

12. Дано целое n > 2. Напечатать все простые числа из диапазона [2, n].

13. Дано натуральное число N. Определить количество цифр в цифровой записи данного числа, которые имеют наименьшее значение.

Пример: N = 4548. Количество цифр с наименьшим значением равно двум (две цифры 4).

14. Дано натуральное число N. Определить количество цифр в цифровой записи данного числа, которые имеют наибольшее значение.

Пример: N = 1808. Количество цифр с наибольшим значением равно двум (две цифры 8).

15. Палиндромэто сочетания символов, которые читаются одинаково слева направо и справа налево. Например, числа 4884, 121 являются палиндромами. Составить программу, которая определяет, является ли заданное натуральное число палиндромом.

16. Дано натуральное число n. Переставить его цифры так, чтобы образовалось максимальное число, записанное теми же цифрами.

17. Дано натуральное число n. Переставить его цифры так, чтобы образовалось наименьшее число, записанное теми же цифрами.

Итерационные циклы

image

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

image

Пример 1. Снова рассмотрим задачу вычисления суммы числового ряда:

image

Но теперь условие будет таким: в сумму нужно включить только слагаемые, значение которых больше некоторой малой величины ε. При этом полученная сумма будет отличаться от предельного значения (константы е) на величину, не большую ε.

Поскольку с увеличением значения i величина 1/i! уменьшается, в сумму надо включать все слагаемые, предшествующие первому значению, меньшему ε. Вот две программы решения этой задачи, использующие циклы с предусловием и постусловием:

image

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

В качестве результата выводится значение суммы и число вошедших в нее слагаемых. Выполнение этих программ для значения ε=10 -8 дает в результате:Е=2,71828182, Слагаемых: 12. Таким образом, за 12 повторений цикла значение константы е получено с точностью до 8 знаков после запятой. Слово «итерации» означает «приближения». С каждым повторением цикла вычисляемая величина приближалась к предельному значению константы.

image

Пример 2. На уроках 33 — 35 «Программирование линейных алгоритмов» была рассмотрена задача вычисления суммы цифр трехзначного натурального числа. Программа имела линейную структуру. Поставим задачу в более общем виде: для любого многозначного натурального числа вычислить сумму всех его цифр.

Выделение цифр происходит с помощью однотипных действий: использования операций mod и div. Очевидно, что их можно «зациклить». Однако число повторений цикла будет разным для чисел разной длины. Поэтому эта задача не решается с помощью цикла с заданным числом повторений. В таком случае в программе можно использовать либо оператор цикла While, либо Repeat и нельзя — цикл с параметром For.

Программа с использованием цикла с предусловием:

image

Поскольку при каждом повторении цикла от числа X отбрасывается одна младшая цифра, закончить цикл нужно тогда, когда X станет равным нулю. Обратите внимание на типы переменных. Надо помнить о разнообразии групп типов в Паскале. Назначение переменной X типа Longint дает возможность вводить в нее значения, включающие до десяти знаков. Для переменной Sum, назначен тип Word, поскольку сумма цифр может быть только положительным числом.

image

Оцените статью
Fobosworld.ru
Добавить комментарий

Adblock
detector