Как найти сумму двух чисел в кумире

Линейные алгоритмы.

1.     Найти
сумму двух чисел

алг сумма
нач вещ a,b
. вывод “введите два числа”
. ввод a,b
. вывод “сумма равна”,a+b
кон

 или

алг сумма
нач вещ a,b,с
. вывод “введите два числа”
. ввод a,b

с:=a+b
. вывод “сумма равна”,
c

кон

2.    
Найти разность двух чисел

алг разность
нач вещ a,b, c
. вывод “введите два числа”
. ввод a,b
. c:=a-b
. вывод “разность равна”, c
кон

Задания по теме  «Алгоритм линейной
структуры»

Задача 1.

Написать программу нахождения гипотенузы прямоугольного
треугольника по двум катетам

алг гипотенуза
нач вещ a,b,c
. вывод “введите катеты треугольника”
. ввод a,b
. c:=sqrt(a**2+b**2)
. вывод “гипотенуза равна”,c
.
кон

Задача 2.

Найти объем куба, если известна его сторона.

алг объем куба
нач вещ a,v
. вывод “введите сторону куба”
. ввод a
. v:=a**3
. вывод “объем куба равен”, v
. кон

Задача 3.

Найти площадь прямоугольника, если известно, что одна сторона
больше другой на 2

алг площадь прямоугольника
нач вещ a,b,s
. вывод “введите а”
. ввод a
. b:=a+2
. s:=a*b
. вывод “площадь равна”,s
.кон

Задача 4.

Найти периметр треугольника, зная длину всех его сторон.

алг периметр треугольника
нач вещ a,b,c,p
. вывод “введите три стороны треугольника”
. ввод a,b,c
. p:=a+b+c
. вывод “периметр треугольника равен”,p
.
кон

Задача 5.

Найти периметр прямоугольника и площадь.

алг p s прямоугольника
нач вещ a,b,s,p
. вывод “введи стороны прямоугольника”
. ввод a,b
. p:=2*(a+b)
. s:=a*b
. вывод “периметр равен”,p
. вывод нс, “площадь равна”,s
кон

Задача 6.

 Найти среднее
арифметическое пяти чисел
.

алг среднее арифметическое
нач цел a,b,c,e,f
 вещ d
 вывод “введите пять чисел”
 ввод a, b, c, e, f
 d:=(a+b+c+e+f)/5
 вывод “среднее арифметическое равно”, d
 кон

Как сделать программу в кумире сложение двух чисел на клавиатуре?

помогите!

Найди верный ответ на вопрос ✅ «Как сделать программу в кумире сложение двух чисел на клавиатуре? помогите! …» по предмету 📙 Информатика, а если ответа нет или никто не дал верного ответа, то воспользуйся поиском и попробуй найти ответ среди похожих вопросов.

Искать другие ответы

Новые вопросы по информатике

Главная » Информатика » Как сделать программу в кумире сложение двух чисел на клавиатуре? помогите!

МБОУ «Школа-гимназия»

ПРОЕКТ

по информатике

на тему:

«Решение простейших математических задач

в системе программирования КуМир»

Выполняли

ученики 5 А класса:

Шипарёв Владислав,

Степанов Дмитрий

Руководитель:

учитель информатики,

Слащинина Е. В.

                                                Ярцево,

                                                  2018

Паспорт проектной работы 

Название проекта 

«Решение простейших математических задач в системе программирования «КуМир»»

Руководитель проекта и консультант 

Слащинина Елена Владимировна 

Образовательная область 

Информатика

Состав проектной группы 

Шипарёв Владислав, Степанов Дмитрий

Тип проекта (информационный, исследовательский, ролевой, практико-ориентированный, творческий) 

информационный 

Заказчик проекта (гимназия, родители, учитель-предметник) 

  МБОУ «Школа-гимназия»

Цель проект 

  • научиться решать простейшие математические задачи в системе программирования Кумир;
  • составить электронный сборник заданий для 5-6 класса.

Задачи проекта 

– изучить систему команд Кумира;

– рассмотреть способы решения  задач с использованием разных типов алгоритма (линейный, ветвление, циклический)

– составить подборку задач по математике 5-6 класса, которые можно решить в системе Кумир, представить тексты всех задний в электронной форме.

– решить задачи в системе программирования Кумир

Предполагаемый продукт(ы) проекта 

Сборник задач с решением

Этапы работы над проектом 

Подготовительный: 

– определение темы проекта; 

– уточнение цели и задач; 

– определение источников информации. 

Основной этап: 

– распределение обязанностей в группе 

– определение шагов действий для каждого участника группы 

– высказывание возможных путей разрешения спорных вопросов, обсуждения спорных вопросов; 

– поиск и сбор информации каждым участником проекта с помощью литературы, средств массовой информации, сети интернета, собственного опыта и исследования. 

Заключительный: 

– анализ полученной информации и её систематизации 

– подведение выводов; 

– изготовление буклетов и презентации как продуктов проекта; 

– защита проекта 

– обсуждение результатов работы 

Образовательные и культурно-просветительские учреждения, на базе которых выполнялся проект: база гимназии, библиотека, музей и др. 

МБОУ «Школа-гимназия» 

Содержание

  1. Введение ……………………………………………………………………………….. 4стр
  2. Основная часть
  1. Изучаем алгоритмы. Алгоритмы и исполнители ………………. 6стр
  2. Система программирования КуМир. Простые команды ……..7стр
  3. Величины в алгоритмах. Описание переменных …………………8стр
  1. Заключение ………………………………………………………………………………. 11стр
  2. Список литературных источников ……………………………………..12стр
  3. Приложение …………………………………………………………..13стр

Актуальность:

В наш информационный век профессия программиста является не только популярной, но и очень востребованной. Само название профессии происходит от слова «программа», оно здесь ключевое. Мы, как и многие современные школьники, тоже мечтаем быть программистами. Работа любого программиста начинается с написания первой простейшей программы.  Создавать свои программы, и быть с компьютером на «ты», что может быть интереснее. Но так ли проста работа программиста, легко ли писать программы? Попробуем с этим разобраться.

Первая система программирования, с которой мы познакомились в этом учебном году, называется Кумир. С помощью исполнителя Чертёжник мы научились создавать рисунки в координатах. А затем решили научиться решать простейшие математические задачи из курса математики 5-6 класса.

Проблема: Можно ли простейшие алгебраические задачи решить средствами программирования?

Цель:  научиться решать простейшие математические задачи в системе программирования Кумир; составить электронный сборник заданий для 5-6 класса.

Задачи:

  • Изучить систему команд Кумира;
  • Рассмотреть способы решения  задач с использованием разных типов алгоритма (линейный, ветвление, циклический)
  • Составить подборку задач по математике 5-6 класса, которые можно решить в системе Кумир, представить тексты всех задний в электронной форме.
  • Решить задачи в системе программирования Кумир

Методы исследования: изучение теории по выбранной теме, анализ литературы, практическое применение.  

Материалы и ресурсы: ватман, бумага формата А4, клей, карандаши. 

Программные средства: веб-браузер, текстовый процессор OpenOfficeWritter, презентация. 

Этапы работы над проектом 

Подготовительный: 

– определение темы проекта; 

– уточнение цели и задач; 

– определение источников информации. 

Основной этап: 

– распределение обязанностей в группе 

– определение шагов действий для каждого участника группы 

– высказывание возможных путей разрешения спорных вопросов, обсуждения спорных вопросов; 

– поиск и сбор информации каждым участником проекта с помощью литературы, средств массовой информации, сети интернета, собственного опыта и исследования. 

Заключительный: 

– анализ полученной информации и её систематизации 

– подведение выводов; 

– защита проекта 

-обсуждение результатов работы 

Основная часть

Изучаем алгоритмы

Алгоритмы и исполнители

Все, что бы мы ни делали, имеет какую-то цель. Не всегда ее удается достигнуть, но для того чтобы это было возможно необходимо как следует сформулировать желаемый для себя результат, а потом продумать четкий план его достижения. Часто план сформулирован в виде предписаний или инструкций.

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

 Исполнитель – тот объект или субъект, для управления которым составлен алгоритм.
Характеристики исполнителя:

  • СКИ — система команд исполнителя – вся совокупность команд, которые исполнитель умеет выполнять.
  • среда – обстановка, в которой функционирует исполнитель.

Свойства алгоритма:

  • Понятность – алгоритм должен быть составлен только из команд, входящих в СКИ.
  • ​ Дискретность (детализация) – алгоритм разбивается на отдельные элементарные шаги, которые могут быть исполнены при помощи СКИ.
  • Однозначность (определенность или детерминированность) – каждый шаг алгоритма имеет единственность толкования выполнения действия и порядка их выполнения.
  • ​ Результативность (конечность) – выполнение алгоритма должно приводить к результату за конечное число шагов.
  • ​ Массовость – возможность применения алгоритма к классу однотипных задач, различающихся исходными данными.

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

Способы записи алгоритмов

На практике наиболее распространены следующие формы представления алгоритмов:

  • словесная (запись на естественном языке);
  • графическая (изображения из графических символов блок-схемы);
  • псевдокоды (полуформализованные описания алгоритмов на условном алгоритмическом языке, включающие в себя как элементы языка программирования, так и фразы естественного языка, общепринятые математические обозначения и др.);
  • программная (тексты на языках программирования).

Система программирования КуМир

КуМир (Комплект Учебных МИРов) – система программирования, предназначенная для поддержки начальных курсов информатики и программирования в средней и высшей школе.

Сайт: http://www.niisi.ru/kumir/ и http://lpm.org.ru/kumir2/

В системе КуМир используется школьный алгоритмический язык с русской лексикой и встроенными исполнителями Робот и Чертёжник.

При вводе программы КуМир осуществляет постоянный полный контроль ее правильности, сообщая на полях программы об всех обнаруженных ошибках.

При выполнении программы в пошаговом режиме КуМир выводит на поля результаты операций присваивания и значения логических выражений. Это позволяет ускорить процесс освоения азов программирования.

В простейшем случае программа на КуМире выглядит так:

алг Первый

нач

.

кон

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

Приведенный алгоритм «Первый» не будет ничего делать, т. к. между «нач» и «кон» у него нет  команд.

Вот пример уже работоспособного алгоритма:

алг Площадь прямоугольника

нач

. вещ длина, ширина, площадь

. вывод “введите значения длины и ширины прямоугольника”

. ввод длина, ширина

. площадь := длина * ширина

. вывод “Площадь прямоугольника равна “, площадь

.кон

Его уже можно запустить на выполнение, он запросит у пользователя значения длины и ширины, вычислит и напечатает результат вычислений…

Простые команды

Эти команды используются практически во всех алгоритмах.

  • команда описания переменных
  • команда присваивания
  • команды ввода-вывода

Величины в алгоритмах

Для запоминания информации в памяти используют величины.

Компьютер работает с информацией, хранящейся в его памяти. Отдельный информационный объект (число, символ, строка, таблица и пр.) называется величиной.

Величины в программировании, как и в математике, делятся на переменные и константы. Значение константы остается неизменной в течении всей работы программы, значение переменной величины может изменяться.

У каждой переменной есть имя, тип и текущее значение.

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

Для этого из условия задачи выделить:

* что дано (например, сколько чисел и какие они: целые или вещественные)

* что требуется вывести как результат.

Придумывать имена переменным, как и самим алгоритмам, не обязательно, но желательно так, чтобы по ним было понятно назначение переменной в алгоритме. Имя – это последовательность слов, разделенных пробелами. Первое слово имени не должно начинаться с цифры. Ни одно из слов не должно быть ключевым словом (уже имеющим значение в АЯ, например: цел, кон и др.)
В именах можно использовать:

  • буквы (русские и латинские, прописные и строчные)
  • цифры
  • два специальных знака: @ _

Примеры возможных имен: m, x2, площадь, погода на завтра, Ноябрь 7, Седьмое ноября, дом_57б.

Также будьте внимательны при использовании имен, одинаково выглядящих на русском языке и записанных латинскими буквами. Переменные “x” (икс) и “x” (хэ) – это разные переменные.

Типы переменных

Существуют три основных типа величин, с которыми работает компьютер: числовой, символьный и логический.

Тип величины определяет какие значения она может принимать и какие действия с ней можно выполнять. В зависимости от типа переменной в памяти компьютера будет выделена определенная область. В КуМире числовые типы бывают двух видов: целочисленные и вещественные.

Числовые типы

  • цел – целые числа от -2147483647 до 2147483647
  • вещ – действительные числа от -1.797693 × 10308 до 1.797693 × 10308

Текстовые типы

  • сим – один любой символ
  • лит – строка символов

Описание переменных

Для того чтобы компьютер мог работать с величиной, нужно указать тип и имя величины, например «цел n». Такое указание называется описанием величины.

алг

нач

 цел а, б

 вещ частное

кон

Команда присваивания

Для того чтобы запомнить или изменить значение величины есть специальная команда — команда присваивания, которая записывается в виде:

имя величины := выражение

Например:

частное := а/б

с:= div(а,б)

k:= sqrt(a)

Команда вывода

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

вывод “тексты”, имена величин, выражения, нс

Обратите внимание:

  • текстовые сообщения берутся в кавычки;
  • имена переменных и выражения перечисляются через запятую без кавычек;
  • нс – команда перехода на новую строку

Команда ввода

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

ввод а, б

Заключение

Вывод:

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

Выяснили, что такое алгоритм решения задачи, познакомились с системой программирования КуМир и изучили ее команды, составили свой сборник заданий, на основе учебников математики 5-6 класса и сопроводили его подробным решением каждой задачи.

Практическая значимость проекта: разработанный нами сборник заданий можно использовать на уроках информатики как дидактический материал, а также для самостоятельного изучения курса программирования в среде КуМир.

Литературные источники

  1. Сайт К. Полякова. Практикум по программированию в среде КумМир. URL: http://kpolyakov.spb.ru/school/kumir.htm
  2. Программирование в среде КуМир. URL: http://pskumir.blogspot.ru/
  3. Wiki. Изучаем алгоритмы. URL: https://wiki.lyc84.ru/index.php?
  4. Алгоритмизация в среде КуМир. URL: https://edusar.soiro.ru/course/view.php?id=475
  5. Практикум по программированию Д. Кириенко. URL: http://server.179.ru/wiki/?page=DenisKirienko/Kumir

Приложение

Решаем задачи и примеры

                                                Сложение

алг сложение
нач
. цел а, б, сумма
. вывод “введите два  целых числа” 
. ввод а, б
. сумма:=а+б
. вывод “Сумма равна “, а,“+”,б,“=”,сумма
кон
                                          
Вычитание

алг вычитание
нач
.
цел а, б, разность
. вывод
“введите два целых числа”
. ввод а, б
. разность:=а-б
. вывод
“Разность равна “, а,“-“,б,“=”,разность
кон

Умножение

алг умножение 
нач
.
цел а, б, произвидение
. вывод
“введите два целых числа”
. ввод а, б
. произвидение:=а*б
. вывод
“Произведение равно “, а,“*”,б,“=”,произвидение
кон

Деление

алг деление
нач
.
вещ а, б, частное
. вывод
“введите три числа”
. ввод а, б
. частное:=а/б
. вывод
“Частное равно “, а,“/”,б,“=”,частное
кон

Периметр прямоугольника

алг Периметр прямоугольника 
нач
.
цел а, б, в, P |а-длина б-ширина в-2 P-периметр
. вывод
“введите три целых числа а, б, в”
. ввод а, б, в
.
P:=(а+б)*в
. вывод
“Периметр равен “, ” (“, а, “+”, б, “)”, “*”, в, “=”, P
кон

Площадь прямоугольника

алг площадь прямоугольника
нач
.
цел а, б, S
. ввод а, б
.
S:=а*б
. вывод
“площадь равна “,  S
кон

Объём  параллелепипеда

алг объем
нач
.
цел a, b, h, V
. вывод
“Введите три целых числа”
. ввод
a, b, h
.
V:=a*b*h
. вывод
“Объём равен “, a,“*”,b,“*”,h,“=”,V 
кон

Немного задач…

Скорость сближения

алг скорость сближения
нач
.
вещ а, б, р, ч|
. вывод
“введите три целых числа”
. ввод а, б, р
. ч:=р/(а+б)
. вывод
“СКОРОСТЬ СБЛЖЕНИЕ =”, ч
кон

Нахождение скорости

алг задача
нач
.
цел а, б, в, г | а-скорость лодки=6км/ч б-скорость лодки=9км/ч в-2 востолько раз больше скорость гидроцикла г-скорость гидроцикла=?
. вывод
“введите три целых числа”
. ввод а, б, в
. г:=(а+б)*в
. вывод
“скорость гидроцикла-“ , “(“, а, “+”, б, “)”, “*”, в, “=”, г
кон

Найти сумму n-го числа слагаемых


алг
сумма
нач
.
цел i,n |i – счетчик , n – число слагаемых
.
вещ s | s -сумма 
. вывод
‘введите число слагаемых n =’, нс
.
s:=0
. ввод
n
. нц
n раз
. . вывод
‘введите слагаемое’,нс
. . ввод
i
. .
s:=s+i
. кц
. вывод
‘сумма ‘,n,‘-х слагаемых =’,s:0:2
кон

Найти произведение n-го числа множителей


алг
произведение
нач
.
цел i,n |i – счетчик , n – число множителей
.
вещ p | p -произведение
. вывод
‘введите число множителей n =’, нс
.
p:=1
. ввод
n
. нц
n раз
. . вывод
‘введите множитель’,нс
. . ввод
i
. .
p:=p*i
. кц
. вывод
‘произведение ‘,n,‘ множителей =’,p:0:2
кон

Сравнить а) два числа и вывести их в порядке возрастания;

 
алг сравнить два числа
нач
. цел a,b | a,b -числа
. вывод ‘введите два числа’, нс
. ввод a,b
. если a>b
. . то вывод ‘число ‘,a,‘ > числа ‘,b иначе
. . . вывод ‘число ‘,a,‘ < числа ‘,b
. все
кон


Сравнить б) три числа и вывести их в порядке возрастания; 


алг сравнить три числа
нач
. цел a,b,c,m | a,b,c -числа, m – наибольшее число
. вывод ‘введите три числа’, нс
. ввод a,b,c
. если a>b
. . то 
. . . если a>c
. . . . то 
. . . . . m:=a
. . . . иначе m:=c
. . . все
. . иначе 
. . . если b>c
. . . . то m:=b
. . . . иначе m:=c
. . . все
. все
. вывод ‘наибольшое число = ‘,m
кон

Представить двухзначное число в виде суммы разрядных слагаемых 


алг сумма разрядных слагаемых
нач
. цел x,a,b| x – число, a,b – цифры числа
. вывод ‘введите число’, нс
. ввод x
. a:=div(x,10)
. b:= mod(x, 10)
. вывод x,‘=’,a,‘*10’,‘+’,b,‘*1’
кон

Представить трехзначное число в виде суммы разрядных слагаемых

 
алг
сумма разрядных слагаемых
нач
.
цел x,a,b,c| x – число, a,b – цифры числа
. вывод
‘введите число’, нс
. ввод
x
.
a:=div(x,100)
.
b:= div(mod(x, 100),10)
.
c:=mod(x,10)
. вывод
x,‘=’,a,‘*100’,‘+’,b,‘*10’,‘+’,c,‘*1’
кон

Округлить число до тыс., сот.,  дес., до старшего разряда

алг округлить число
нач
.
цел x,a,b,c,d| x – число, a,b,c,d – цифры числа
. вывод
‘введите число’, нс
. ввод
x
.
a:=div(x,1000)
.
b:= mod(div(x, 100),10)
.
c:=div(mod(x,100),10)
.
d:=mod(x,10)
. если
b>5 или b=5
. . то
. . . вывод
x,‘~’,(a+1)*1000, ‘до тысяч’,нс
. . иначе
. . . вывод
x,‘~’,a*1000, ‘до тысяч’,нс
. все
. если
c>5 или c=5
. . то
. . . вывод
x,‘~’,a*1000 +(b+1)*100,‘до сотен’,нс
. . иначе
. . . вывод
x,‘~’,a*1000+b*100, ‘до сотен’,нс
. все
. если
d>5 или d=5
. . то
. . . вывод
x,‘~’,a*1000 +b*100+(c+1)*10, ‘до десятков’,нс
. . иначе
. . . вывод
x,‘~’,a*1000+b*100+c*10, ‘до десятков’, нс
. все
. вывод
x,‘~’,a*1000+b*100+c*10+d, ‘до единиц’, нс
кон

Сколько существует двузначных чисел, у которых

первая цифра больше второй.


алг двузначные числа
нач
. цел i,a,b,s| i – счетчик, a,b – цифры, s – сумма
. i:=10
. s:=0
. нц 90 раз
. . a:=div(i,10)
. . b:=mod(i,10)
. . если a>b
. . . то
. . . . s:=s+1
. . все
. . i:=i+1
. кц
. вывод s
кон

Найти сумму 1+2+3+4+5+ …+n-го числа слагаемых (с помощью цикла)

алг сумма n числа слагаемых
нач
. цел i,n,s| i – счетчик, n – число слагаемых, s – сумма
. вывод ‘введите число слагаемых n =’
. ввод n
. i:=1
. s:=0
. нц n раз
. . s:=s+i
. . i:=i+1
. кц
. вывод s
кон

Найти сумму 1+2+3+4+5+ …+n-го числа слагаемых (с помощью  метода Гауса)


алг
сумма n числа слагаемых
нач
.
вещ i,n,s| i – счетчик, n – число слагаемых, s – сумма
. вывод
‘введите число слагаемых n =’
. ввод
n
.
s:=((1+n)*n)/2
. вывод
s
кон


Найдите сумму: а) нечетных чисел 1+3+5+ …+n и б) четных чисел 2+4+6+.. +n(с помощью цикла)

алг сумма нечетных_четных слагаемых
нач
.
цел i,n,s1,s2| i – счетчик, n – число слагаемых, s1 – сумма четных слагаемых, s2 – сумма нечетных слагаемых
. вывод
‘введите число слагаемых n =’
. ввод
n
.
i:=1
.
s1:=0
.
s2:=0
. нц
n раз
. . если
mod(i,2)=0
. . . то
. . . .
s1:=s1+i
. . . иначе
. . . .
s2:=s2+i
. . все
. .
i:=i+1
. кц
. вывод
‘сумма четных слагаемых = ‘,s1, нс
. вывод
‘сумма нечетных слагаемых = ‘,s2, нс
.
кон

Найдите сумму: а) нечетных чисел 1+3+5+ …+n

(по формуле см. № 226 учебника 6 кл.)


алг
сумма нечетных слагаемых
нач
.
цел i,n,s2| i – счетчик, n – число слагаемых, s2 – сумма нечетных слагаемых
. вывод
‘введите число слагаемых n =’
. ввод
n
.
i:=1
.
s2:=0
. нц
n раз
. . если
mod(i,2)<>0
. . . то
. . . .
s2:=s2+1
. . все
. .
i:=i+1
. кц
. вывод
‘сумма нечетных слагаемых = ‘,s2*s2, нс
.
Кон

Определить вид треугольника(если таковой существует): а) (остроугольный, прямоугольный, тупоугольный), если известные градусные меры всех его улов.


алг вид треугольника по углам
нач
. цел a,b,c| a,b,c – градусные меры всех углов треугольника
. вывод ‘введите величины углов треугольника a =,b=,c=’
. ввод a,b,c
. если a+b+c=180 и a<>0 и b<>0 и c<>0
. . то
. . . если a>90 или b>90 или c>90
. . . . то
. . . . . вывод ‘треугольник тупоугольный’
. . . . иначе
. . . . . если a=90 или b=90 или c=90
. . . . . . то
. . . . . . . вывод ‘треугольник прямоугольный’
. . . . . . иначе
. . . . . . . вывод ‘треугольник остроугольный’ 
. . . . . все
. . . все
. . иначе 
. . . вывод‘треугольник не существует’
. все
кон

Определить вид треугольника(если таковой существует): б) (равнобедренный, равносторонний, разносторонний), если известны длины всех его сторон.

алг вид треугольника по сторонам
нач
. цел a,b,c| a,b,c – длины всех сторон треугольника
. вывод ‘введите длины сторон треугольника a =,b=,c=’
. ввод a,b,c
. если a<b+c и b<a+c и c<a+b
. . то
. . . если a=c=b
. . . . то
. . . . . вывод ‘треугольник равносторонний’
. . . . иначе
. . . . . если a=b или b=c  или a=c
. . . . . . то
. . . . . . . вывод ‘треугольник равнобедренный’
. . . . . . иначе
. . . . . . . вывод ‘треугольник разносторонний’ 
. . . . . все
. . . все
. . иначе 
. . . вывод‘треугольник не существует’
. все
кон

Найти НОД(а,в) 

алг НОД
нач
.
цел a,b,x,y| a,b – числа
. вывод
‘введите числа ‘
. ввод
a,b
.
x:=a
.
y:=b
. нц пока
a<>b
. . если
a>b
. . . то
a:=ab
. . . иначе
b:=ba
. . все
. кц
. вывод
‘НОД(‘,x,‘,’,y,‘)=’,a
кон

Как сделать программу в кумире сложение двух чисел на клавиатуре?

Помогите!

На этой странице находится вопрос Как сделать программу в кумире сложение двух чисел на клавиатуре?. Здесь же – ответы на него,
и похожие вопросы в категории Информатика, которые можно найти с помощью
простой в использовании поисковой системы. Уровень сложности вопроса
соответствует уровню подготовки учащихся 5 – 9 классов. В комментариях,
оставленных ниже, ознакомьтесь с вариантами ответов посетителей страницы. С
ними можно обсудить тему вопроса в режиме on-line. Если ни один из
предложенных ответов не устраивает, сформулируйте новый вопрос в поисковой
строке, расположенной вверху, и нажмите кнопку.

 Программирование (АлгЯзык) § 17.  Введение § 18.  Линейные программы § 19.  Ветвления § 2 0.  Программирование циклических алгоритмов § 21 .  Массивы § 22 .  Алгоритмы обработки массивов

Программирование (АлгЯзык)

§ 17. Введение

§ 18. Линейные программы

§ 19. Ветвления

§ 2 0. Программирование циклических алгоритмов

§ 21 . Массивы

§ 22 . Алгоритмы обработки массивов

 Программирование (АлгЯзык) § 17. Введение

Программирование (АлгЯзык)

§ 17. Введение

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

Что такое программирование?

Программирование — это создание программ для компьютеров. Этим занимаются программисты .

Чем занимаются программисты:

анализ задачи (выделение исходных данных, связей между ними, этапов решения задачи)

системные аналитики

разработка алгоритмов

алгоритмисты

написание и отладка программ

кодировщики

тестирование программ

тестировщики

написание документации

технические писатели

 Направления в программировании системный программист операционные системы, утилиты, драйверы прикладной программист прикладные программы, в т.ч. для мобильных устройств веб-программист веб-сайты программист  баз данных системы управления базами данных

Направления в программировании

системный программист

операционные системы, утилиты, драйверы

прикладной программист

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

веб-программист

веб-сайты

программист баз данных

системы управления базами данных

 Простейшая программа название программы алг Куку нач | начало программы  | тело программы кон | конец программы комментарии после |   не обрабатываются ?  Что делает эта программа ?

Простейшая программа

название программы

алг Куку

нач | начало программы

| тело программы

кон | конец программы

комментарии после | не обрабатываются

?

Что делает эта программа ?

 Вывод на экран алг Привет нач  вывод ' Привет! ' кон оператор вывода Оператор — это команда языка программирования. ? вывод ' Привет ' , Вася !  Что плохо? вывод ' Привет , Вася !' вся строка в апострофах

Вывод на экран

алг Привет

нач

вывод Привет!

кон

оператор вывода

Оператор — это команда языка программирования.

?

вывод Привет , Вася !

Что плохо?

вывод Привет , Вася !’

вся строка в апострофах

 Переход на новую строку вывод ' Привет , Вася !' вывод ' Привет , Петя !' ожидание: Привет , Вася ! Привет , Петя ! реальность: Привет , Вася ! Привет , Петя ! решение: новая строка вывод ' Привет , Вася !' , нс вывод ' Привет , Петя !' нс

Переход на новую строку

вывод Привет , Вася !’

вывод Привет , Петя !’

ожидание:

Привет , Вася !

Привет , Петя !

реальность:

Привет , Вася ! Привет , Петя !

решение:

новая строка

вывод Привет , Вася !’ , нс

вывод Привет , Петя !’

нс

 Системы программирования Системы программирования — это средства для создания новых программ. Транслятор — это программа, которая переводит тексты программ, написанных программистом, в машинные коды (команды процессора). компилятор  — переводит всю программу в машинные коды, строит исполняемый файл ( .exe ) интерпретатор  —  сам выполняет программу по частям ( по одному оператору). алг Привет нач  вывод ' Привет! ' кон 1010010100 privet.exe

Системы программирования

Системы программирования — это средства для создания новых программ.

Транслятор — это программа, которая переводит тексты программ, написанных программистом, в машинные коды (команды процессора).

  • компилятор — переводит всю программу в машинные коды, строит исполняемый файл ( .exe )
  • интерпретатор — сам выполняет программу по частям ( по одному оператору).

алг Привет

нач

вывод Привет!

кон

1010010100

privet.exe

 Системы программирования Отладчик — это программа для поиска ошибок в других программах. пошаговый режим  — выполнение программы по шагам (по одному оператору) просмотр значений переменных  во время выполнения программы точки останова – операторы в программе, перед выполнением которых нужно остановиться. Среда программирования ( IDE ) : редактор текста программ транслятор отладчик

Системы программирования

Отладчик — это программа для поиска ошибок в других программах.

  • пошаговый режим — выполнение программы по шагам (по одному оператору)
  • просмотр значений переменных во время выполнения программы
  • точки останова – операторы в программе, перед выполнением которых нужно остановиться.

Среда программирования ( IDE ) :

  • редактор текста программ
  • транслятор
  • отладчик

 Задачи « B »: Вывести на экран текст «лесенкой»   Вася  пошел  гулять « C »: Вывести на экран рисунок из букв     Ж    ЖЖЖ  ЖЖЖЖЖ  ЖЖЖЖЖЖЖ  HH HH  ZZZZZ

Задачи

« B »: Вывести на экран текст «лесенкой»

Вася

пошел

гулять

« C »: Вывести на экран рисунок из букв

Ж

ЖЖЖ

ЖЖЖЖЖ

ЖЖЖЖЖЖЖ

HH HH

ZZZZZ

 Программирование (АлгЯзык) § 1 9. Линейные программы

Программирование (АлгЯзык)

§ 1 9. Линейные программы

 Пример задачи Задача . Ввести два числа и вычислить их сумму. алг Сумма нач  | ввести два числа  | вычислить их сумму  | вывести сумму на экран кон ?  Выполнится? Псевдокод – алгоритм на русском языке с элементами языка программирования. !  Компьютер не может исполнить псевдокод!

Пример задачи

Задача . Ввести два числа и вычислить их сумму.

алг Сумма

нач

| ввести два числа

| вычислить их сумму

| вывести сумму на экран

кон

?

Выполнится?

Псевдокод – алгоритм на русском языке с элементами языка программирования.

!

Компьютер не может исполнить псевдокод!

 Зачем нужны переменные? алг Сумма нач  | ввести два числа  | вычислить их сумму  | вывести сумму на экран кон Где запомнить? Переменная — это величина, которая имеет имя, тип и значение. Значение переменной может изменяться во время выполнения программы. объявление переменных цел  a, b, c ячейки памяти

Зачем нужны переменные?

алг Сумма

нач

| ввести два числа

| вычислить их сумму

| вывести сумму на экран

кон

Где запомнить?

Переменная — это величина, которая имеет имя, тип и значение. Значение переменной может изменяться во время выполнения программы.

объявление переменных

цел a, b, c

ячейки памяти

 Имена переменных Идентификатор — это имя программы или переменной.    цел  a, b, c заглавные и строчные буквы различаются МОЖНО  использовать латинские буквы ( A-Z , a-z) , русские буквы (А-Я , а-я) цифры   знак подчеркивания _ латинские буквы ( A-Z , a-z) , русские буквы (А-Я , а-я) цифры   знак подчеркивания _   !  Имя не может начинаться с цифры! Какие имена правильные?  AXby R&B 4Wheel Вася “PesBarbos” TU154 [QuQu] _ABBA A+B

Имена переменных

Идентификатор — это имя программы или переменной.

цел a, b, c

заглавные и строчные буквы различаются

МОЖНО использовать

  • латинские буквы ( A-Z , a-z) , русские буквы (А-Я , а-я) цифры знак подчеркивания _
  • латинские буквы ( A-Z , a-z) , русские буквы (А-Я , а-я)
  • цифры
  • знак подчеркивания _

!

Имя не может начинаться с цифры!

Какие имена правильные?

AXby R&B 4Wheel Вася “PesBarbos” TU154 [QuQu] _ABBA A+B

14 Работа с переменными Присваивание (запись значения) a  ← 5 a := 5 := оператор присваивания a := 5 a := 18 ?  Что будет храниться в a ? Вывод на экран ? вывод a  В чём разница? с:= 14 вывод с с:= 14 вывод ' с ' 14 c

14

Работа с переменными

Присваивание (запись значения)

a 5

a := 5

:=

оператор присваивания

a := 5

a := 18

?

Что будет храниться в a ?

Вывод на экран

?

вывод a

В чём разница?

с:= 14

вывод с

с:= 14

вывод с

14

c

 Работа с переменными  Изменение значения увеличить на 1 i   ←  i +  1 i:=  i +  1 a b 4 a:=  4 b:=  7 a:=  a +  1 b:=  b +  1 a:=  a + b b:=  b + a a:= a + 2 b:= b + a 7 5 8 13 21 1 5 36

Работа с переменными

Изменение значения

увеличить на 1

i i + 1

i:= i + 1

a

b

4

a:= 4

b:= 7

a:= a + 1

b:= b + 1

a:= a + b

b:= b + a

a:= a + 2

b:= b + a

7

5

8

13

21

1 5

36

 Ввод с клавиатуры Цель – изменить исходные данные, не меняя программу. 5 ввод a ! Программа ждет, пока пользователь введет значение и нажмет Enter . Введенное значение записывается в переменную a .

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

Цель – изменить исходные данные, не меняя программу.

5

ввод a

!

  • Программа ждет, пока пользователь введет значение и нажмет Enter .
  • Введенное значение записывается в переменную a .

 Ввод с клавиатуры ввод a, b через пробел:  25 30  через запятую:  25,30 a 25 b 30 a 25 b 30

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

ввод a, b

через пробел:

25 30

через запятую:

25,30

a

25

b

30

a

25

b

30

 Программа сложения чисел алг Сумма нач  цел a, b, c  ввод a, b  | ввести два числа  c:=  a  +  b  | вычислить их сумму  вывод c  | вывести сумму на экран кон ?  Что плохо? ожидание: Введите два числа: 5 7 5+7=12 реальность: 5 7 12 ?  Как улучшить диалог?

Программа сложения чисел

алг Сумма

нач

цел a, b, c

ввод a, b | ввести два числа

c:= a + b | вычислить их сумму

вывод c | вывести сумму на экран

кон

?

Что плохо?

ожидание:

Введите два числа: 5 7

5+7=12

реальность:

5 7

12

?

Как улучшить диалог?

 Вывод данных с текстом значение b значение a значение с 5+7=12 текст вывод a вывод '+' вывод b вывод '=' вывод c вывод a ,  '+' ,  b ,  '=' ,  c

Вывод данных с текстом

значение b

значение a

значение с

5+7=12

текст

вывод a

вывод ‘+’

вывод b

вывод ‘=’

вывод c

вывод a , ‘+’ , b , ‘=’ , c

 Программа сложения чисел алг Сумма нач  цел a, b, c  вывод ' Введите два числа: '  ввод a, b  c:=  a  +  b  вывод a ,  '+' ,  b ,  '=' ,  c кон ?  Как переделать для 3-х чисел?

Программа сложения чисел

алг Сумма

нач

цел a, b, c

вывод Введите два числа:

ввод a, b

c:= a + b

вывод a , ‘+’ , b , ‘=’ , c

кон

?

Как переделать для 3-х чисел?

 Задачи « A »: Ввести три числа, найти их сумму.  Пример:   Введите три числа:   4   5   7   4+5+7=16 « B »: Ввести три числа, найти их сумму и произведение.  Пример:   Введите три числа:   4   5   7   4+5+7=16   4*5*7=140

Задачи

« A »: Ввести три числа, найти их сумму.

Пример:

Введите три числа:

4

5

7

4+5+7=16

« B »: Ввести три числа, найти их сумму и произведение.

Пример:

Введите три числа:

4

5

7

4+5+7=16

4*5*7=140

 Задачи « C »: Ввести три числа, найти их сумму, произведение и среднее арифметическое.  Пример:   Введите три числа:   4   5   7   4+5+7=16   4*5*7=140   (4+5+7) / 3 =5.33 3333

Задачи

« C »: Ввести три числа, найти их сумму, произведение и среднее арифметическое.

Пример:

Введите три числа:

4

5

7

4+5+7=16

4*5*7=140

(4+5+7) / 3 =5.33 3333

 Арифметические выражения Линейная запись (в одну строку): a:=(c+b- 1 )/ 2 *d Операции : + – * – умножение  / – деление ** – возведение в степень ( x 2    x**2 ) цел  x, a, b ввод a, b x:= a / b ?  Что плохо? a / b вещ  x

Арифметические выражения

Линейная запись (в одну строку):

a:=(c+b- 1 )/ 2 *d

Операции :

+ –

* – умножение

/ – деление

** – возведение в степень ( x 2  x**2 )

цел x, a, b

ввод a, b

x:= a / b

?

Что плохо?

a / b

вещ x

24 Порядок выполнения операций действия в скобках возведение в степень умножение и деление, слева направо сложение и вычитание, слева направо 1 2 3 4 5 6 a  :=  c  + (1 – 2 * b)  /  2  *  d

24

Порядок выполнения операций

  • действия в скобках
  • возведение в степень
  • умножение и деление, слева направо
  • сложение и вычитание, слева направо

1

2

3

4

5

6

a := c + (1 – 2 * b) / 2 * d

 Частное и остаток div  – деление нацело (остаток отбрасывается) mod  – остаток от деления div  – деление нацело (остаток отбрасывается) mod  – остаток от деления ? 175 сек = 2 мин 55 сек  Как получить 2 и 55? цел  t, m, s цел  t, m, s t := 17 5 m := div ( t, 6 0 ) | 2  s := mod (t, 6 0 ) | 5 5  t := 17 5 m := div ( t, 6 0 ) | 2  s := mod (t, 6 0 ) | 5 5

Частное и остаток

div – деление нацело (остаток отбрасывается)

mod – остаток от деления

  • div – деление нацело (остаток отбрасывается) mod – остаток от деления

?

175 сек = 2 мин 55 сек

Как получить 2 и 55?

цел t, m, s

  • цел t, m, s

t := 17 5

m := div ( t, 6 0 ) | 2

s := mod (t, 6 0 ) | 5 5

  • t := 17 5 m := div ( t, 6 0 ) | 2 s := mod (t, 6 0 ) | 5 5

 Частное и остаток ?  Что получится? n := 123 d := div ( n, 10 ) | 1 2  k := mod (n, 10 ) | 3 n := 123 d := div ( n, 10 ) | 1 2  k := mod (n, 10 ) | 3 При делении на 10 нацело отбрасывается последняя цифра числа. Остаток от деления на 10 – это последняя цифра числа.

Частное и остаток

?

Что получится?

n := 123

d := div ( n, 10 ) | 1 2

k := mod (n, 10 ) | 3

  • n := 123 d := div ( n, 10 ) | 1 2 k := mod (n, 10 ) | 3

При делении на 10 нацело отбрасывается последняя цифра числа.

Остаток от деления на 10 – это последняя цифра числа.

 Форматный вывод цел  a= 1 , b= 2 , c= 3 цел  a= 1 , b= 2 , c= 3 вывод a, b, c вывод a, b, c 123 1  2  3 вывод a, ' ' ,b, ' ' ,c вывод a, ' ' ,b, ' ' ,c 1 2 3 вывод a, b: 3 , c: 5 вывод a, b: 3 , c: 5 3 5 количество знаков на вывод числа ?  Сколько знаков для вывода a ?

Форматный вывод

цел a= 1 , b= 2 , c= 3

  • цел a= 1 , b= 2 , c= 3

вывод a, b, c

  • вывод a, b, c

123

1 2 3

вывод a, ‘ ‘ ,b, ‘ ‘ ,c

  • вывод a, ‘ ‘ ,b, ‘ ‘ ,c

1 2 3

вывод a, b: 3 , c: 5

  • вывод a, b: 3 , c: 5

3

5

количество знаков на вывод числа

?

Сколько знаков для вывода a ?

 Задачи « A »: Ввести число, обозначающее количество секунд. Вывести то же самое время в минутах и секундах. Пример :  Введите число секунд: 175  2 мин. 55 с. « B »: Ввести число, обозначающее количество секунд. Вывести то же самое время в часах, минутах и секундах. Пример :  Введите число секунд: 8325  2 ч. 18 мин. 45 с

Задачи

« A »: Ввести число, обозначающее количество секунд. Вывести то же самое время в минутах и секундах.

Пример :

Введите число секунд: 175

2 мин. 55 с.

« B »: Ввести число, обозначающее количество секунд. Вывести то же самое время в часах, минутах и секундах.

Пример :

Введите число секунд: 8325

2 ч. 18 мин. 45 с

 Задачи «С»: Занятия в школе начинаются в 8-30. Урок длится 45 минут, перерывы между уроками – 10 минут. Ввести номер урока и вывести время его окончания.  Пример :  Введите номер урока: 6  13-50

Задачи

«С»: Занятия в школе начинаются в 8-30. Урок длится 45 минут, перерывы между уроками – 10 минут. Ввести номер урока и вывести время его окончания.

Пример :

Введите номер урока: 6

13-50

 Форматный вывод вещ  x= 12.34567891234 вещ  x= 12.34567891234 вывод x вывод x 12 . 3 45679 6 вывод x : 10 : 3 вывод x : 10 : 3  12 . 3 46 по умолчанию 3 всего на число в дробной части 10 вывод x : 8 : 2 вывод x : 8 : 2  12 . 3 4 вывод x : 2 : 2 вывод x : 2 : 2 12 . 3 4 вывод x : 0 : 1 вывод x : 0 : 1 12 . 3 минимально возможное

Форматный вывод

вещ x= 12.34567891234

  • вещ x= 12.34567891234

вывод x

  • вывод x

12 . 3 45679

6

вывод x : 10 : 3

  • вывод x : 10 : 3

12 . 3 46

по умолчанию

3

всего на число

в дробной части

10

вывод x : 8 : 2

  • вывод x : 8 : 2

12 . 3 4

вывод x : 2 : 2

  • вывод x : 2 : 2

12 . 3 4

вывод x : 0 : 1

  • вывод x : 0 : 1

12 . 3

минимально возможное

 Научный формат чисел вещ  x= 123456789 вещ  x= 123456789 вывод x вывод x 1 . 23 4568 e+008 1,23 4568   10 8 вещ  x= 0.0000 123456789 вещ  x= 0.0000 123456789 вывод x вывод x 1 . 23 4568 e-005 1,23 4568   10 –5

Научный формат чисел

вещ x= 123456789

  • вещ x= 123456789

вывод x

  • вывод x

1 . 23 4568 e+008

1,23 4568  10 8

вещ x= 0.0000 123456789

  • вещ x= 0.0000 123456789

вывод x

  • вывод x

1 . 23 4568 e-005

1,23 4568  10 –5

 Операции с вещественными числами int  – целая часть числа   (ближайшее целое слева !) int  – целая часть числа   (ближайшее целое слева !) вещ  x= 1 .5 вещ  x= 1 .5 вывод int ( x ) вывод int ( x ) 1 – 1,5 вещ  x= -1.5 вещ  x= -1.5 вывод int ( x ) вывод int ( x ) -2 x – 1 – 2 – 3 0 1 sqrt  – квадратный корень sqrt  – квадратный корень вещ  x= 2 . 2 5 вещ  x= 2 . 2 5 вывод sqrt ( x ) вывод sqrt ( x ) 1.5

Операции с вещественными числами

int – целая часть числа (ближайшее целое слева !)

  • int – целая часть числа (ближайшее целое слева !)

вещ x= 1 .5

  • вещ x= 1 .5

вывод int ( x )

  • вывод int ( x )

1

– 1,5

вещ x= -1.5

  • вещ x= -1.5

вывод int ( x )

  • вывод int ( x )

-2

x

– 1

– 2

– 3

0

1

sqrt – квадратный корень

  • sqrt – квадратный корень

вещ x= 2 . 2 5

  • вещ x= 2 . 2 5

вывод sqrt ( x )

  • вывод sqrt ( x )

1.5

 Операции с вещественными числами 1 /3 = 0,33333… бесконечно много знаков !  Большинство вещественных чисел хранятся в  памяти компьютера с ошибкой! вещ  x , y, z вещ  x , y, z x:= 1 / 2 y:= 1 / 3 z:= 5 / 6  | 5/6=1/2+1/3 вывод x +y-z x:= 1 / 2 y:= 1 / 3 z:= 5 / 6  | 5/6=1/2+1/3 вывод x +y-z -1.110223e-016

Операции с вещественными числами

1 /3 = 0,33333…

бесконечно много знаков

!

Большинство вещественных чисел хранятся в памяти компьютера с ошибкой!

вещ x , y, z

  • вещ x , y, z

x:= 1 / 2

y:= 1 / 3

z:= 5 / 6 | 5/6=1/2+1/3

вывод x +y-z

  • x:= 1 / 2 y:= 1 / 3 z:= 5 / 6 | 5/6=1/2+1/3 вывод x +y-z

-1.110223e-016

 Задачи « A »: Ввести число, обозначающее размер одной фотографии в Мбайтах. Определить, сколько фотографий поместится на флэш-карту объёмом  2 Гбайта. Пример :  Размер фотографии в Мбайтах: 6.3  Поместится фотографий: 325.

Задачи

« A »: Ввести число, обозначающее размер одной фотографии в Мбайтах. Определить, сколько фотографий поместится на флэш-карту объёмом 2 Гбайта.

Пример :

Размер фотографии в Мбайтах: 6.3

Поместится фотографий: 325.

 Задачи « B »: Оцифровка звука выполняется в режиме стерео с частотой дискретизации 44,1 кГц и глубиной кодирования 24 бита. Ввести время записи в минутах и определить, сколько Мбайт нужно выделить для хранения полученного файла (округлить результат в большую сторону). Пример :  Введите время записи в минутах: 10  Размер файла 152 Мбайт

Задачи

« B »: Оцифровка звука выполняется в режиме стерео с частотой дискретизации 44,1 кГц и глубиной кодирования 24 бита. Ввести время записи в минутах и определить, сколько Мбайт нужно выделить для хранения полученного файла (округлить результат в большую сторону).

Пример :

Введите время записи в минутах: 10

Размер файла 152 Мбайт

 Задачи «С»: Разведчики-математики для того, чтобы опознать своих, используют числовые пароли. Услышав число-пароль, разведчик должен возвести его в квадрат и сказать в ответ первую цифры дробной части полученного числа. Напишите программу, которая по полученному паролю (вещественному числу) вычисляет число-ответ.  Пример :  Введите пароль: 1.92  Ответ: 6 потому что 1,92 2 = 3, 6 864…, первая цифра дробной части – 6

Задачи

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

Пример :

Введите пароль: 1.92

Ответ: 6

потому что 1,92 2 = 3, 6 864…, первая цифра дробной части – 6

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

Случайные и псевдослучайные числа

Случайные явления

  • встретил слона – не встретил слона
  • жеребьёвка на соревнованиях
  • лотерея
  • случайная скорость (направление выстрела ) в игре

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

 Случайные и псевдослучайные числа !  Компьютер неслучаен! Псевдослучайные числа — похожи на случайные, но строятся по формуле. следующее предыдущее X n+1 : =  mod ( a*X n +b, c)  | от 0 до c-1 X n+1 : =  mod ( X n + 3 ,  10 )  | от 0 до 9   2   8   5   3   9   6 X  =  0   0 8   1   4   7 зерно зацикливание

Случайные и псевдослучайные числа

!

Компьютер неслучаен!

Псевдослучайные числа — похожи на случайные, но строятся по формуле.

следующее

предыдущее

X n+1 : = mod ( a*X n +b, c) | от 0 до c-1

X n+1 : = mod ( X n + 3 , 10 ) | от 0 до 9

2

8

5

3

9

6

X = 0

0

8

1

4

7

зерно

зацикливание

 Датчик случайных чисел Целые числа на отрезке: цел K , L K:=  ira nd ( 1 ,  6 )  | отрезок [1,6] L :=  ira nd ( 1 ,  6 )  | это уже другое число! англ. integer – целый random – случайный Вещественные числа в полуинтервале: цел x , y x:=  ra nd ( 0 ,  1 0 )  | полуинтервал [ 0 , 10) y :=  ra nd ( 0 ,  1 0 )  | это уже другое число!

Датчик случайных чисел

Целые числа на отрезке:

цел K , L

K:= ira nd ( 1 , 6 ) | отрезок [1,6]

L := ira nd ( 1 , 6 ) | это уже другое число!

англ. integer – целый

random – случайный

Вещественные числа в полуинтервале:

цел x , y

x:= ra nd ( 0 , 1 0 ) | полуинтервал [ 0 , 10)

y := ra nd ( 0 , 1 0 ) | это уже другое число!

 Задачи « A »: В игре «Русское лото» из мешка случайным образом выбираются бочонки, на каждом из которых написано число от 1 до 90. Напишите программу, которая выводит наугад первые 5 выигрышных номеров. « B »: + Доработайте программу «Русское лото» так, чтобы все 5 значений гарантированно были бы разными (используйте разные диапазоны).

Задачи

« A »: В игре «Русское лото» из мешка случайным образом выбираются бочонки, на каждом из которых написано число от 1 до 90. Напишите программу, которая выводит наугад первые 5 выигрышных номеров.

« B »: + Доработайте программу «Русское лото» так, чтобы все 5 значений гарантированно были бы разными (используйте разные диапазоны).

 Задачи «С»: + Игральный кубик бросается три раза (выпадает три случайных значения). Из этих чисел составляется целое число, программа должна найти его квадрат.  Пример :  Выпало очков:  1 2 3  Число 123  Его квадрат 15129

Задачи

«С»: + Игральный кубик бросается три раза (выпадает три случайных значения). Из этих чисел составляется целое число, программа должна найти его квадрат.

Пример :

Выпало очков:

1 2 3

Число 123

Его квадрат 15129

 Задачи « D »: + Получить случайное трёхзначное число и вывести в столбик его отдельные цифры.  Пример :  Получено число 123  сотни: 1  десятки: 2  единицы: 3

Задачи

« D »: + Получить случайное трёхзначное число и вывести в столбик его отдельные цифры.

Пример :

Получено число 123

сотни: 1

десятки: 2

единицы: 3

 Программирование (АлгЯзык) § 19. Ветвления

Программирование (АлгЯзык)

§ 19. Ветвления

b то M:= a иначе M:= b все a b? M:= a M:= b вывод M ? Если a = b? конец ” width=”640″

Выбор наибольшего из двух чисел

полная форма ветвления

начало

ввод a , b

да

нет

если a b то

M:= a

иначе

M:= b

все

a b?

M:= a

M:= b

вывод M

?

Если a = b?

конец

b то иначе все вывод ‘Наибольшее число ‘ , M кон полная форма условного оператора M:=a M:=b ” width=”640″

45

Вариант 1. Программа

алг Максимум нач цел a, b, M вывод ‘Введите два целых числа’ , нс ввод a, b если a b то иначе все вывод ‘Наибольшее число ‘ , M кон

полная форма условного оператора

M:=a

M:=b

a? M:= b вывод M конец ” width=”640″

Выбор наибольшего из двух чисел-2

начало

ввод a,b

неполная форма ветвления

M:= a

да

нет

b a?

M:= b

вывод M

конец

a то M:= b все вывод ‘Наибольшее число ‘, M кон неполная форма условного оператора ” width=”640″

Вариант 2. Программа

алг Максимум 2 нач цел a, b, M вывод ‘Введите два целых числа’, нс ввод a, b

M:= a если b a то M:= b все вывод ‘Наибольшее число ‘, M кон

неполная форма условного оператора

 Примеры Поиск минимального : если a  b то  M:= a все если b    a то  M:= b все ?  Что плохо ? ?  Когда работает неверно ? ? если a  b то  c := a  a:= b  b:= c все  Что делает эта программа ?

Примеры

Поиск минимального :

если a b то

M:= a

все

если b a то

M:= b

все

?

Что плохо ?

?

Когда работает неверно ?

?

если a b то

c := a

a:= b

b:= c

все

Что делает эта программа ?


 В других языках программирования Паскаль : С : if a  b then begin  c: = a ;   a:= b;  b:= c; end; if  ( a  b ) {  c = a ;   a = b;  b = c;  } Python: if a  b :  c = a  a = b  b = c

В других языках программирования

Паскаль :

С :

if a b then begin

c: = a ;

a:= b;

b:= c;

end;

if ( a b ) {

c = a ;

a = b;

b = c;

}

Python:

if a b :

c = a

a = b

b = c


b то вывод ‘Андрей старше’ иначе вывод ‘Борис старше’ все ” width=”640″

Вложенные условные операторы

Задача . В переменной a записан возраст Антона, а в переменной b – возраст Бориса. Определить, кто из них старше.

?

Сколько вариантов ответа ?

если a = b то

вывод ‘Одного возраста’

иначе

если a=b то

вывод ‘Одного возраста’

иначе

вывод ‘Борис старше’

все

все

вложенный условный

оператор

если a b то

вывод ‘Андрей старше’

иначе

вывод ‘Борис старше’

все

 Задачи « A »: Ввести два целых числа, найти наибольшее и наименьшее из них. Пример : Введите два целых числа: 1 5 Наибольшее число 5 Наименьшее число 1 « B »: Ввести четыре целых числа, найти наибольшее из них. Пример : Введите четыре целых числа: 1 5 4 3 Наибольшее число 5

Задачи

« A »: Ввести два целых числа, найти наибольшее и наименьшее из них.

Пример :

Введите два целых числа:

1 5

Наибольшее число 5

Наименьшее число 1

« B »: Ввести четыре целых числа, найти наибольшее из них.

Пример :

Введите четыре целых числа:

1 5 4 3

Наибольшее число 5

 Задачи « C »: Ввести последовательно возраст Антона, Бориса и Виктора. Определить, кто из них старше. Пример : Возраст Антона: 15  Возраст Бориса: 17  Возраст Виктора: 16  Ответ: Борис старше всех. Пример : Возраст Антона: 17  Возраст Бориса: 17  Возраст Виктора: 16  Ответ: Антон и Борис старше Виктора.

Задачи

« C »: Ввести последовательно возраст Антона, Бориса и Виктора. Определить, кто из них старше.

Пример :

Возраст Антона: 15

Возраст Бориса: 17

Возраст Виктора: 16

Ответ: Борис старше всех.

Пример :

Возраст Антона: 17

Возраст Бориса: 17

Возраст Виктора: 16

Ответ: Антон и Борис старше Виктора.

 Сложные условия Задача . Фирма набирает сотрудников от 25 до 40 лет включительно. Ввести возраст человека и определить, подходит ли он фирме (вывести ответ 'подходит' или 'не подходит' ) . Особенность : надо проверить, выполняются ли два условия одновременно:   возраст  25 возраст  40 ?  Можно ли решить известными методами ?

Сложные условия

Задача . Фирма набирает сотрудников от 25 до 40 лет включительно. Ввести возраст человека и определить, подходит ли он фирме (вывести ответ ‘подходит’ или ‘не подходит’ ) .

Особенность : надо проверить, выполняются ли два условия одновременно:

возраст 25 возраст 40

?

Можно ли решить известными методами ?

= 25 то если x 40 то вывод ‘Подходит!’ иначе вывод ‘Не подходит.’ все иначе вывод ‘Не подходит.’ все кон вложенный условный оператор ” width=”640″

Плохое решение

алг Сотрудник

нач

цел x

вывод ‘Введите ваш возраст’ , нс

ввод x

если x = 25 то

если x 40 то

вывод ‘Подходит!’

иначе

вывод ‘Не подходит.’

все

иначе

вывод ‘Не подходит.’

все

кон

вложенный условный оператор


= 25 и x 40 то вывод ‘Подходит!’ иначе вывод ‘Не подходит.’ все кон сложное условие ” width=”640″

Хорошее решение (операция «И»)

алг Сотрудник

нач

цел x

вывод ‘Введите ваш возраст’ , нс

ввод x

если x = 25 и x 40 то

вывод ‘Подходит!’

иначе

вывод ‘Не подходит.’

все

кон

сложное условие


 Примеры Задача . Вывести ' Да ' , если число в переменной a – двузначное. если 10   a  и  a  99  то  вывод 'Да' все Задача . Вывести ' Да ' , если число в переменной a – двузначное  и делится на 7. если 10   a  и  a  99  и  mod (a, 7 )= 0  то  вывод 'Да' все

Примеры

Задача . Вывести ‘ Да ‘ , если число в переменной a – двузначное.

если 10 a и a 99 то

вывод ‘Да’

все

Задача . Вывести ‘ Да ‘ , если число в переменной a – двузначное и делится на 7.

если 10 a и a 99 и mod (a, 7 )= 0 то

вывод ‘Да’

все


 Сложные условия Задача . Самолёт летает по понедельникам и четвергам. Ввести номер дня недели и определить, летает ли в этот день самолёт. Особенность : надо проверить, выполняется ли одно из двух условий:   день =  1  день = 4 если d = 1  или  d = 4 то  вывод 'Летает' d = 1  или  d = 4  иначе  вывод 'Не летает' все сложное условие

Сложные условия

Задача . Самолёт летает по понедельникам и четвергам. Ввести номер дня недели и определить, летает ли в этот день самолёт.

Особенность : надо проверить, выполняется ли одно из двух условий:

день = 1 день = 4

если d = 1 или d = 4 то

вывод ‘Летает’

d = 1 или d = 4

иначе

вывод ‘Не летает’

все

сложное условие

40 если ??? то вывод ‘Не подходит!’ иначе вывод ‘Подходит.’ все ” width=”640″

Ещё пример

Задача . Фирма набирает сотрудников от 25 до 40 лет включительно. Ввести возраст человека и определить, подходит ли он фирме (вывести ответ ‘подходит’ или ‘не подходит’ ) . Использовать « ИЛИ ».

x 25 или x 40

если ??? то

вывод ‘Не подходит!’

иначе

вывод ‘Подходит.’

все


= = Сложное условие – это условие, состоящее из нескольких простых условий (отношений), связанных с помощью логических операций: И – одновременное выполнение условий И – одновременное выполнение условий x = 25 и x x = 25 и x ИЛИ – выполнение хотя бы одного из условий ИЛИ – выполнение хотя бы одного из условий x или x = 40 x или x = 40 НЕ – отрицание, обратное условие НЕ – отрицание, обратное условие не ( x 25 )  ??? не ( x 25 )  ??? равно не равно x ” width=”640″

Простые и сложные условия

Простые условия (отношения)

= =

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

  • И – одновременное выполнение условий
  • И – одновременное выполнение условий

x = 25 и x

  • x = 25 и x
  • ИЛИ – выполнение хотя бы одного из условий
  • ИЛИ – выполнение хотя бы одного из условий

x или x = 40

  • x или x = 40
  • НЕ – отрицание, обратное условие
  • НЕ – отрицание, обратное условие

не ( x 25 ) ???

  • не ( x 25 ) ???

равно

не равно

x


=, =, НЕ И ИЛИ , =, =, НЕ И ИЛИ 1 4 2 3 5 6 если не a 2 или c 5 и b то … все если не a 2 или c 5 и b то … все ” width=”640″

Порядок выполнения операций

  • выражения в скобках
  • выражения в скобках
  • , =, =, НЕ И ИЛИ
  • , =, =,
  • НЕ
  • И
  • ИЛИ

1

4

2

3

5

6

если не a 2 или c 5 и b то

все

  • если не a 2 или c 5 и b то все


b) не (a b) a и b a c или b c a и b c a c и b d a и b a c или b c a и b c a c и b d не (a = b) или c = d не (a = b) или c = d a = b или не (c a c или b c или b a a = b или не (c a c или b c или b a Да Да Нет Нет Нет Да Да Да ” width=”640″

Сложные условия

Истинно или ложно при a := 2; b := 3; c := 4;

не (a b)

  • не (a b)

a и b

a c или b c

a и b c

a c и b d

  • a и b a c или b c a и b c a c и b d

не (a = b) или c = d

  • не (a = b) или c = d

a = b или не (c

a c или b c или b a

  • a = b или не (c a c или b c или b a

Да

Да

Нет

Нет

Нет

Да

Да

Да


 Задачи « A »: Напишите программу, которая получает три числа - рост трёх спортсменов, и выводит сообщение «По росту.», если они стоят по возрастанию роста, или сообщение «Не по росту!», если они стоят не по росту. Пример : Введите рост трёх спортсменов: 165 170 172 По росту. Пример : Введите рост трёх спортсменов: 175 170 172 Не по росту!

Задачи

« A »: Напишите программу, которая получает три числа – рост трёх спортсменов, и выводит сообщение «По росту.», если они стоят по возрастанию роста, или сообщение «Не по росту!», если они стоят не по росту.

Пример :

Введите рост трёх спортсменов:

165 170 172

По росту.

Пример :

Введите рост трёх спортсменов:

175 170 172

Не по росту!

 Задачи « B »: Напишите программу, которая получает номер месяца и выводит соответствующее ему время года или сообщение об ошибке. Пример : Введите номер месяца: 5 Весна. Пример : Введите номер месяца: 15 Неверный номер месяца.

Задачи

« B »: Напишите программу, которая получает номер месяца и выводит соответствующее ему время года или сообщение об ошибке.

Пример :

Введите номер месяца:

5

Весна.

Пример :

Введите номер месяца:

15

Неверный номер месяца.

 Задачи « C »: Напишите программу, которая получает возраст человека (целое число, не превышающее 120) и выводит этот возраст со словом «год», «года» или «лет». Например, «21 год», «22 года», «25 лет». Пример : Введите возраст: 18 Вам 18 лет. Пример : Введите возраст: 21 Вам 21 год. Пример : Введите возраст: 2 2 Вам 22 года.

Задачи

« C »: Напишите программу, которая получает возраст человека (целое число, не превышающее 120) и выводит этот возраст со словом «год», «года» или «лет». Например, «21 год», «22 года», «25 лет».

Пример :

Введите возраст: 18

Вам 18 лет.

Пример :

Введите возраст: 21

Вам 21 год.

Пример :

Введите возраст: 2 2

Вам 22 года.

 Логические переменные лог b лог b ... b:= да b:= нет ... b:= да b:= нет только два возможных значения Пример: лог выходной лог выходной ... выходной:=  (d= 6  или d= 7 ) ... если не выходной то  вывод 'Рабочий день.' иначе  вывод 'Выходной!' все ... выходной:=  (d= 6  или d= 7 ) ... если не выходной то  вывод 'Рабочий день.' иначе  вывод 'Выходной!' все

Логические переменные

лог b

  • лог b

b:= да

b:= нет

  • b:= да b:= нет

только два возможных значения

Пример:

лог выходной

  • лог выходной

выходной:= (d= 6 или d= 7 )

если не выходной то

вывод ‘Рабочий день.’

иначе

вывод ‘Выходной!’

все

  • выходной:= (d= 6 или d= 7 ) если не выходной то вывод ‘Рабочий день.’ иначе вывод ‘Выходной!’ все

 Задачи « A »: Напишите программу, которая получает с клавиатуры целое число и записывает в логическую переменную значение «да» ( True ), если это число трёхзначное. После этого на экран выводится ответ на вопрос: «Верно ли, что было получено трёхзначное число?». Пример : Введите число: 165 Ответ: да. Пример : Введите число: 1651 Ответ: нет.

Задачи

« A »: Напишите программу, которая получает с клавиатуры целое число и записывает в логическую переменную значение «да» ( True ), если это число трёхзначное. После этого на экран выводится ответ на вопрос: «Верно ли, что было получено трёхзначное число?».

Пример :

Введите число: 165

Ответ: да.

Пример :

Введите число: 1651

Ответ: нет.

 Задачи « B »: Напишите программу, которая получает с клавиатуры трёхзначное число и записывает в логическую переменную значение «да» ( True ), если это число – палиндром, то есть читается одинаково слева направо и справа налево. После этого на экран выводится ответ на вопрос: «Верно ли, что введённое число – палиндром?». Пример : Введите число: 165 Ответ: нет. Пример : Введите число: 656 Ответ: да.

Задачи

« B »: Напишите программу, которая получает с клавиатуры трёхзначное число и записывает в логическую переменную значение «да» ( True ), если это число – палиндром, то есть читается одинаково слева направо и справа налево. После этого на экран выводится ответ на вопрос: «Верно ли, что введённое число – палиндром?».

Пример :

Введите число: 165

Ответ: нет.

Пример :

Введите число: 656

Ответ: да.

 Задачи «С»: Напишите программу, которая получает с клавиатуры трёхзначное число и записывает в логическую переменную значение «да» ( True ), если это все его цифры одинаковы. После этого на экран выводится ответ на вопрос: «Верно ли, что все цифры введённого числа одинаковы?» Пример : Введите число: 161 Ответ: нет. Пример : Введите число: 555 Ответ: да.

Задачи

«С»: Напишите программу, которая получает с клавиатуры трёхзначное число и записывает в логическую переменную значение «да» ( True ), если это все его цифры одинаковы. После этого на экран выводится ответ на вопрос: «Верно ли, что все цифры введённого числа одинаковы?»

Пример :

Введите число: 161

Ответ: нет.

Пример :

Введите число: 555

Ответ: да.

 Экспертная система Экспертная система — это компьютерная программа, задача которой — заменить человека-эксперта при принятии решений в сложной ситуации. База знаний = факты + правила вывода : если у животного есть перья, то это птица ; если животное кормит детенышей молоком, то это — млекопитающее ; если животное — млекопитающее и ест мясо, то  это  — хищник. Диалог : Это животное кормит детей молоком? Нет Это животное имеет перья? Да Это птица .

Экспертная система

Экспертная система — это компьютерная программа, задача которой — заменить человека-эксперта при принятии решений в сложной ситуации.

База знаний = факты + правила вывода :

  • если у животного есть перья, то это птица ;
  • если животное кормит детенышей молоком, то это — млекопитающее ;
  • если животное — млекопитающее и ест мясо, то это — хищник.

Диалог :

Это животное кормит детей молоком? Нет

Это животное имеет перья? Да

Это птица .

 Дерево решений Кормит детей молоком? да нет млекопитающее Имеет перья? Ест мясо? да да нет нет ? птица ? хищник

Дерево решений

Кормит детей молоком?

да

нет

млекопитающее

Имеет перья?

Ест мясо?

да

да

нет

нет

?

птица

?

хищник

 Программирование экспертной системы Ответы пользователя: да и нет – символьные строки. лит ответ лит ответ вывод 'Кормит детей молоком? ' ввод ответ если ответ = 'да' то  ... | вариант 1 иначе  ... | вариант 2 все вывод 'Кормит детей молоком? ' ввод ответ если ответ = 'да' то  ... | вариант 1 иначе  ... | вариант 2 все | вариант 1 | вариант 1 вывод 'Млекопитающее.' , нс вывод 'Ест мясо? ' ввод ответ если ответ = 'да' то  вывод 'Хищник.' , нс иначе  вывод 'Не знаю.' , нс все вывод 'Млекопитающее.' , нс вывод 'Ест мясо? ' ввод ответ если ответ = 'да' то  вывод 'Хищник.' , нс иначе  вывод 'Не знаю.' , нс все

Программирование экспертной системы

Ответы пользователя: да и нет – символьные строки.

лит ответ

  • лит ответ

вывод ‘Кормит детей молоком? ‘

ввод ответ

если ответ = ‘да’ то

| вариант 1

иначе

| вариант 2

все

  • вывод ‘Кормит детей молоком? ‘ ввод ответ если ответ = ‘да’ то | вариант 1 иначе | вариант 2 все

| вариант 1

  • | вариант 1

вывод ‘Млекопитающее.’ , нс

вывод ‘Ест мясо? ‘

ввод ответ

если ответ = ‘да’ то

вывод ‘Хищник.’ , нс

иначе

вывод ‘Не знаю.’ , нс

все

  • вывод ‘Млекопитающее.’ , нс вывод ‘Ест мясо? ‘ ввод ответ если ответ = ‘да’ то вывод ‘Хищник.’ , нс иначе вывод ‘Не знаю.’ , нс все

 Заглавные и строчные буквы лит ответ лит ответ ... если ответ = 'да' то  ... ... если ответ = 'да' то  ... не сработает на ' Да ' ?  Как исправить ? если ответ = 'да' или ответ = 'Да' то  ... если ответ = 'да' или ответ = 'Да' то  ... Ещё лучше: если нижний регистр (ответ) = 'да' то  ... если нижний регистр (ответ) = 'да' то  ... преобразовать все заглавные в строчные если верхний регистр (ответ) = 'ДА' то  ... если верхний регистр (ответ) = 'ДА' то  ...

Заглавные и строчные буквы

лит ответ

  • лит ответ

если ответ = ‘да’ то

  • если ответ = ‘да’ то

не сработает на ‘ Да ‘

?

Как исправить ?

если ответ = ‘да’ или ответ = ‘Да’ то

  • если ответ = ‘да’ или ответ = ‘Да’ то

Ещё лучше:

если нижний регистр (ответ) = ‘да’ то

  • если нижний регистр (ответ) = ‘да’ то

преобразовать все заглавные в строчные

если верхний регистр (ответ) = ‘ДА’ то

  • если верхний регистр (ответ) = ‘ДА’ то

 Программирование (АлгЯзык) § 2 0. Отладка программ

Программирование (АлгЯзык)

§ 2 0. Отладка программ

 Виды ошибок Синтаксические ошибки – нарушение правил записи операторов языка программирования. Обнаруживаются транслятором. Логические ошибки – неверно составленный алгоритм. Отказ  (ошибка времени выполнения) – аварийная ситуация во время выполнения программы. Отладка – поиск и исправление ошибок в программе.

Виды ошибок

Синтаксические ошибки – нарушение правил записи операторов языка программирования.

Обнаруживаются транслятором.

Логические ошибки – неверно составленный алгоритм.

Отказ (ошибка времени выполнения) – аварийная ситуация во время выполнения программы.

Отладка – поиск и исправление ошибок в программе.

 Пример отладки программы Программа решения квадратного уравнения алг КвУр нач  вещ  a, b, c, D, x1, x2  вывод 'Введите a, b, c: '  ввод a, b, c  D:=b*b- 4 *a*a  x1:=(-b+ sqrt (D))/ 2 *a  x2:=(-b- sqrt (D))/ 2 *a  вывод ' x1=' , x1, ' x2=' , x2 кон алг КвУр нач  вещ  a, b, c, D, x1, x2  вывод 'Введите a, b, c: '  ввод a, b, c  D:=b*b- 4 *a*a  x1:=(-b+ sqrt (D))/ 2 *a  x2:=(-b- sqrt (D))/ 2 *a  вывод ' x1=' , x1, ' x2=' , x2 кон

Пример отладки программы

Программа решения квадратного уравнения

алг КвУр

нач

вещ a, b, c, D, x1, x2

вывод ‘Введите a, b, c: ‘

ввод a, b, c

D:=b*b- 4 *a*a

x1:=(-b+ sqrt (D))/ 2 *a

x2:=(-b- sqrt (D))/ 2 *a

вывод x1=’ , x1, ‘ x2=’ , x2

кон

  • алг КвУр нач вещ a, b, c, D, x1, x2 вывод ‘Введите a, b, c: ‘ ввод a, b, c D:=b*b- 4 *a*a x1:=(-b+ sqrt (D))/ 2 *a x2:=(-b- sqrt (D))/ 2 *a вывод x1=’ , x1, ‘ x2=’ , x2 кон

 Тестирование Тест 1 . a = 1, b = 2, c = 1. Реальность: Ожидание: x1=-1.0 x2=-1.0 x1=-1.0 x2=-1.0 Тест 2 . a = 1, b = – 5 , c = 6 . x1=3.0 x2=2.0 x1=4.791 x2=0.209 Найден вариант, когда программа работает неверно. Ошибка воспроизводится ! Возможные причины : неверный ввод данных неверное вычисление дискриминанта неверное вычисление корней неверный вывод результатов

Тестирование

Тест 1 . a = 1, b = 2, c = 1.

Реальность:

Ожидание:

x1=-1.0 x2=-1.0

x1=-1.0 x2=-1.0

Тест 2 . a = 1, b = – 5 , c = 6 .

x1=3.0 x2=2.0

x1=4.791 x2=0.209

Найден вариант, когда программа работает неверно. Ошибка воспроизводится !

Возможные причины :

  • неверный ввод данных
  • неверное вычисление дискриминанта
  • неверное вычисление корней
  • неверный вывод результатов

 Отладочная печать Идея : выводить все промежуточные результаты. ввод a, b, c вывод a, ' ' , b, ' ' , c, нс D:=b*b- 4 *a*a вывод ' D=' , D, нс ... ввод a, b, c вывод a, ' ' , b, ' ' , c, нс D:=b*b- 4 *a*a вывод ' D=' , D, нс ... вывод a, ' ' , b, ' ' , c, нс вывод a, ' ' , b, ' ' , c, нс вывод ' D=' , D, нс вывод ' D=' , D, нс Результат: Введите a, b, c: 1 -5 6 1.0 -5.0 6.0 D=21.0 D=21.0 ! D:=b*b- 4 *a*  с  ; D:=b*b- 4 *a*  с  ; с  Одна ошибка найдена!

Отладочная печать

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

ввод a, b, c

вывод a, ‘ ‘ , b, ‘ ‘ , c, нс

D:=b*b- 4 *a*a

вывод D=’ , D, нс

  • ввод a, b, c вывод a, ‘ ‘ , b, ‘ ‘ , c, нс D:=b*b- 4 *a*a вывод D=’ , D, нс

вывод a, ‘ ‘ , b, ‘ ‘ , c, нс

  • вывод a, ‘ ‘ , b, ‘ ‘ , c, нс

вывод D=’ , D, нс

  • вывод D=’ , D, нс

Результат:

Введите a, b, c: 1 -5 6

1.0 -5.0 6.0

D=21.0

D=21.0

!

D:=b*b- 4 *a* с ;

  • D:=b*b- 4 *a* с ;

с

Одна ошибка найдена!

 Отладка программы Тест 1 . a = 1, b = 2, c = 1. Ожидание: Реальность: x1=-1.0 x2=-1.0 x1=-1.0 x2=-1.0 Тест 2 . a = 1, b = – 5 , c = 6 . x1=3.0 x2=2.0 x1=3.0 x2=2.0 ?  Программа работает верно? Тест 3 . a = 8 , b = – 6 , c = 1 . x1= 0 . 5 x2= 0 . 25 x1=3 2 .0 x2= 16 .0 ( 2 *a ) x1:=(-b+ sqrt (D))/ 2 *a x2:=(-b- sqrt (D))/ 2 *a x1:=(-b+ sqrt (D))/ 2 *a x2:=(-b- sqrt (D))/ 2 *a ?  Что неверно? ( 2 *a )

Отладка программы

Тест 1 . a = 1, b = 2, c = 1.

Ожидание:

Реальность:

x1=-1.0 x2=-1.0

x1=-1.0 x2=-1.0

Тест 2 . a = 1, b = – 5 , c = 6 .

x1=3.0 x2=2.0

x1=3.0 x2=2.0

?

Программа работает верно?

Тест 3 . a = 8 , b = – 6 , c = 1 .

x1= 0 . 5 x2= 0 . 25

x1=3 2 .0 x2= 16 .0

( 2 *a )

x1:=(-b+ sqrt (D))/ 2 *a

x2:=(-b- sqrt (D))/ 2 *a

  • x1:=(-b+ sqrt (D))/ 2 *a x2:=(-b- sqrt (D))/ 2 *a

?

Что неверно?

( 2 *a )

 Задачи « A »: Загрузите программу , которая должна вычислять сумму цифр трёхзначного числа: « A »: Загрузите программу , которая должна вычислять сумму цифр трёхзначного числа: « A »: Загрузите программу , которая должна вычислять сумму цифр трёхзначного числа: цел N, d1, d2, s цел N, d1, d2, s цел N, d1, d2, s ввод 'N = ' ; вывод N d0:= mod (N, 10 ) d1:= mod (N, 100 ) d2:= div (N, 100 ) d0 + d2 := s вывод s  ввод 'N = ' ; вывод N d0:= mod (N, 10 ) d1:= mod (N, 100 ) d2:= div (N, 100 ) d0 + d2 := s вывод s  ввод 'N = ' ; вывод N d0:= mod (N, 10 ) d1:= mod (N, 100 ) d2:= div (N, 100 ) d0 + d2 := s вывод s  Выполните отладку программы: исправьте синтаксические ошибки определите ситуации, когда она работает неверно исправьте логические ошибки.

Задачи

« A »: Загрузите программу , которая должна вычислять сумму цифр трёхзначного числа:

  • « A »: Загрузите программу , которая должна вычислять сумму цифр трёхзначного числа:
  • « A »: Загрузите программу , которая должна вычислять сумму цифр трёхзначного числа:

цел N, d1, d2, s

  • цел N, d1, d2, s
  • цел N, d1, d2, s

ввод ‘N = ‘ ; вывод N

d0:= mod (N, 10 )

d1:= mod (N, 100 )

d2:= div (N, 100 )

d0 + d2 := s

вывод s

  • ввод ‘N = ‘ ; вывод N d0:= mod (N, 10 ) d1:= mod (N, 100 ) d2:= div (N, 100 ) d0 + d2 := s вывод s
  • ввод ‘N = ‘ ; вывод N d0:= mod (N, 10 ) d1:= mod (N, 100 ) d2:= div (N, 100 ) d0 + d2 := s вывод s

Выполните отладку программы:

  • исправьте синтаксические ошибки
  • определите ситуации, когда она работает неверно
  • исправьте логические ошибки.

 Задачи « B »: Доработайте программу из п. А так, чтобы она правильно работала с отрицательными трёхзначными числами: при вводе числа «–123» программа должна выдавать ответ 6. « B »: Доработайте программу из п. А так, чтобы она правильно работала с отрицательными трёхзначными числами: при вводе числа «–123» программа должна выдавать ответ 6. « B »: Доработайте программу из п. А так, чтобы она правильно работала с отрицательными трёхзначными числами: при вводе числа «–123» программа должна выдавать ответ 6.

Задачи

« B »: Доработайте программу из п. А так, чтобы она правильно работала с отрицательными трёхзначными числами: при вводе числа «–123» программа должна выдавать ответ 6.

  • « B »: Доработайте программу из п. А так, чтобы она правильно работала с отрицательными трёхзначными числами: при вводе числа «–123» программа должна выдавать ответ 6.
  • « B »: Доработайте программу из п. А так, чтобы она правильно работала с отрицательными трёхзначными числами: при вводе числа «–123» программа должна выдавать ответ 6.

b то M:= a иначе M:= b если c b то M:= b иначе M:= c вывод M ввод ‘a = ‘ ; ввод a вывод ‘b = ‘ ; вывод b ввод ‘c = ‘ ; ввод c если a b то M:= a иначе M:= b если c b то M:= b иначе M:= c вывод M ввод ‘a = ‘ ; ввод a вывод ‘b = ‘ ; вывод b ввод ‘c = ‘ ; ввод c если a b то M:= a иначе M:= b если c b то M:= b иначе M:= c вывод M Выполните отладку программы: исправьте синтаксические ошибки определите ситуации, когда она работает неверно исправьте логические ошибки. ” width=”640″

Задачи

«С»: Загрузите программу, которая должна вычислять наибольшее из трёх чисел:

  • «С»: Загрузите программу, которая должна вычислять наибольшее из трёх чисел:
  • «С»: Загрузите программу, которая должна вычислять наибольшее из трёх чисел:

цел a, b, c, M

  • цел a, b, c, M
  • цел a, b, c, M

ввод ‘a = ‘ ; ввод a

вывод ‘b = ‘ ; вывод b

ввод ‘c = ‘ ; ввод c

если a b то M:= a

иначе M:= b

если c b то M:= b

иначе M:= c

вывод M

  • ввод ‘a = ‘ ; ввод a вывод ‘b = ‘ ; вывод b ввод ‘c = ‘ ; ввод c если a b то M:= a иначе M:= b если c b то M:= b иначе M:= c вывод M
  • ввод ‘a = ‘ ; ввод a вывод ‘b = ‘ ; вывод b ввод ‘c = ‘ ; ввод c если a b то M:= a иначе M:= b если c b то M:= b иначе M:= c вывод M

Выполните отладку программы:

  • исправьте синтаксические ошибки
  • определите ситуации, когда она работает неверно
  • исправьте логические ошибки.

 Программирование (АлгЯзык) § 2 0. Программирование циклических алгоритмов

Программирование (АлгЯзык)

§ 2 0. Программирование циклических алгоритмов

 Зачем нужен цикл? Задача . Вывести 5 раз «Привет!». вывод 'Привет' , нс вывод 'Привет' , нс вывод 'Привет' , нс вывод 'Привет' , нс вывод 'Привет' , нс ?  А если 5000? Цикл « N раз» : нц 5 раз  вывод 'Привет' , нс кц

Зачем нужен цикл?

Задача . Вывести 5 раз «Привет!».

вывод ‘Привет’ , нс

вывод ‘Привет’ , нс

вывод ‘Привет’ , нс

вывод ‘Привет’ , нс

вывод ‘Привет’ , нс

?

А если 5000?

Цикл « N раз» :

нц 5 раз

вывод ‘Привет’ , нс

кц

 Как работает цикл? !  Нужно запоминать, сколько раз цикл уже выполнен! переменная-счётчик ещё не делали счётчик:= 0 нц пока счётчик   5  вывод 'Привет' , нс  счётчик:= счётчик + 1 кц сделали ещё раз

Как работает цикл?

!

Нужно запоминать, сколько раз цикл уже выполнен!

переменная-счётчик

ещё не делали

счётчик:= 0

нц пока счётчик 5

вывод ‘Привет’ , нс

счётчик:= счётчик + 1

кц

сделали ещё раз


??? вывод ‘Привет’ , нс счётчик:= счётчик ??? кц 0 – 1 ” width=”640″

Как работает цикл?

Идея : запоминать, сколько шагов осталось.

счётчик:= 5

нц пока счётчик ???

вывод ‘Привет’ , нс

счётчик:= счётчик ???

кц

0

1

 Цикл с предусловием условие проверяется при входе в цикл как только условие становится ложным, работа цикла заканчивается если условие ложно в самом начале, цикл не выполняется ни разу нц пока условие  ... кц тело цикла ?  Если условие никогда не станет ложно? бесконечный цикл (зацикливание) нц пока да  ... кц

Цикл с предусловием

  • условие проверяется при входе в цикл
  • как только условие становится ложным, работа цикла заканчивается
  • если условие ложно в самом начале, цикл не выполняется ни разу

нц пока условие

кц

тело цикла

?

Если условие никогда не станет ложно?

бесконечный цикл (зацикливание)

нц пока да

кц

 Сумма цифр числа Задача. Вычислить сумму цифр введённого числа.  123  1 + 2 + 3 = 6 Выделить последнюю цифру числа  в переменной N : d:= mod (N, 10 ) 123   3 Отбросить последнюю цифру числа  в переменной N : N:= div (N, 10 ) 123  12 Добавить к переменной sum  значение переменной d : sum = 6    6 + 4 = 1 0 d = 4 sum:= sum + d

Сумма цифр числа

Задача. Вычислить сумму цифр введённого числа.

123  1 + 2 + 3 = 6

Выделить последнюю цифру числа в переменной N :

d:= mod (N, 10 )

123  3

Отбросить последнюю цифру числа в переменной N :

N:= div (N, 10 )

123  12

Добавить к переменной sum значение переменной d :

sum = 6  6 + 4 = 1 0

d = 4

sum:= sum + d

 Сумма цифр числа выделяем последнюю цифру числа ( mod ) увеличиваем сумму на значение цифры ( sum:=sum+d ) отсекаем последнюю цифру числа ( div ) N d 123 sum 12 3 0 1 3 2 0 1 5 6 начальные значения

Сумма цифр числа

  • выделяем последнюю цифру числа ( mod )
  • увеличиваем сумму на значение цифры ( sum:=sum+d )
  • отсекаем последнюю цифру числа ( div )

N

d

123

sum

12

3

0

1

3

2

0

1

5

6

начальные значения

 Сумма цифр числа начало обнулить сумму ввод N sum:=  0 выполнять  'пока N    0 ' нет N    0 ? да вывод sum d:=  mod (N,  10 ) sum:=  sum  + d N:=  div (N,  10 ) конец

Сумма цифр числа

начало

обнулить сумму

ввод N

sum:= 0

выполнять ‘пока N 0

нет

N 0 ?

да

вывод sum

d:= mod (N, 10 )

sum:= sum + d

N:= div (N, 10 )

конец

 Сумма цифр числа алг Сумма цифр нач  цел  N, d, sum  вывод 'Введите целое число' , нс  ввод N  sum : =  0       вывод 'Сумма цифр числа  ' ,  N,  '  равна' ,  sum кон , N1 ; N1:=  N нц пока N 0   d :=  mod ( N , 10 )  sum:=  sum  +  d  N:=  div (N, 10 ) кц ?  Что плохо ? N1,

Сумма цифр числа

алг Сумма цифр

нач

цел N, d, sum

вывод ‘Введите целое число’ , нс

ввод N

sum : = 0

вывод ‘Сумма цифр числа , N, равна’ , sum

кон

, N1

; N1:= N

нц пока N 0

d := mod ( N , 10 )

sum:= sum + d

N:= div (N, 10 )

кц

?

Что плохо ?

N1,

 Задачи « A »: Напишите программу, которая получает с клавиатуры количество повторений и выводит столько же раз какое-нибудь сообщение. Пример : Сколько раз повторить? 3 Привет! Привет! Привет! « B »: Напишите программу, которая получает с клавиатуры натуральное число и определяет, сколько раз в его десятичной записи встречается цифра 1. Пример : Введите число? 311 Единиц: 2

Задачи

« A »: Напишите программу, которая получает с клавиатуры количество повторений и выводит столько же раз какое-нибудь сообщение.

Пример :

Сколько раз повторить? 3

Привет!

Привет!

Привет!

« B »: Напишите программу, которая получает с клавиатуры натуральное число и определяет, сколько раз в его десятичной записи встречается цифра 1.

Пример :

Введите число? 311

Единиц: 2

 Задачи « C »: Напишите программу, которая получает с клавиатуры натуральное число и находит наибольшую цифру в его десятичной записи. Пример : Введите число :  311 Наибольшая цифра: 3 « D »: Напишите программу, которая получает с клавиатуры натуральное число и определяет, есть ли в его десятичной записи одинаковые цифры, стоящие рядом. Пример : Введите число :  553 Введите число :  5 3 5 Ответ: да.    Ответ: нет.

Задачи

« C »: Напишите программу, которая получает с клавиатуры натуральное число и находит наибольшую цифру в его десятичной записи.

Пример :

Введите число : 311

Наибольшая цифра: 3

« D »: Напишите программу, которая получает с клавиатуры натуральное число и определяет, есть ли в его десятичной записи одинаковые цифры, стоящие рядом.

Пример :

Введите число : 553 Введите число : 5 3 5

Ответ: да. Ответ: нет.

 Алгоритм Евклида Задача. Найти наибольший общий делитель (НОД) двух натуральных чисел. Заменяем большее из двух чисел разностью большего и меньшего до тех пор, пока они не станут равны. Это и есть НОД. НОД( a,b)=  НОД( a-b,  b)   =  НОД( a,  b-a) Евклид (365-300 до. н. э.) Пример: НОД  (14 ,  21 )  =  НОД  (14 ,  21-14 )  =  НОД  (14 ,  7 ) =  НОД  (7 ,  7 )  =  7 много шагов при большой разнице чисел: НОД  (1998 ,  2 )  =  НОД  (1996 ,  2 )  = … =  2

Алгоритм Евклида

Задача. Найти наибольший общий делитель (НОД) двух натуральных чисел.

Заменяем большее из двух чисел разностью большего и меньшего до тех пор, пока они не станут равны. Это и есть НОД.

НОД( a,b)= НОД( a-b, b)

= НОД( a, b-a)

Евклид

(365-300 до. н. э.)

Пример:

НОД (14 , 21 ) = НОД (14 , 21-14 ) = НОД (14 , 7 )

= НОД (7 , 7 ) = 7

много шагов при большой разнице чисел:

НОД (1998 , 2 ) = НОД (1996 , 2 ) = … = 2

b? нет да b:=b-a a:=a-b ” width=”640″

Алгоритм Евклида

начало

a = b?

да

конец

нет

a b?

нет

да

b:=b-a

a:=a-b

b то a:= a – b иначе b:= b – a все кц ? Где будет НОД? Как его вывести? ? Как вывести НОД в формате НОД(14,21) = 7? ? А без дополнительных переменных? ” width=”640″

Алгоритм Евклида

нц пока a b

если a b

то a:= a b

иначе b:= b a

все

кц

?

Где будет НОД? Как его вывести?

?

Как вывести НОД в формате НОД(14,21) = 7?

?

А без дополнительных переменных?

 Модифицированный алгоритм Евклида Заменяем большее из двух чисел остатком от деления большего на меньшее до тех пор, пока меньшее не станет равно нулю . Тогда большее — это НОД. НОД( a,b)=  НОД( mod (a,b),  b)   =  НОД( a,  mod (b,a)) Пример : НОД  (14 ,  21 )  =  НОД  (14 ,  7 )  =  НОД  (0 ,  7 )  =  7

Модифицированный алгоритм Евклида

Заменяем большее из двух чисел остатком от деления большего на меньшее до тех пор, пока меньшее не станет равно нулю . Тогда большее — это НОД.

НОД( a,b)= НОД( mod (a,b), b)

= НОД( a, mod (b,a))

Пример :

НОД (14 , 21 ) = НОД (14 , 7 ) = НОД (0 , 7 ) = 7

b то a:= mod (a, b) иначе b:= mod (b, a) все кц ? Где будет НОД? Как его вывести? если a 0 вывод a иначе вывод b все вывод ??? a +b ” width=”640″

Модифицированный алгоритм

нц пока a 0 и b 0

если a b то

a:= mod (a, b)

иначе

b:= mod (b, a)

все

кц

?

Где будет НОД? Как его вывести?

если a 0

вывод a

иначе

вывод b

все

вывод ???

a +b


b) a = a % b; else b = b % a; } while (a 0 ) and (b 0 ) do if ab then a:= a mod b else b:= b mod a; Python: while a!= 0 and b!= 0 : if a b: a = a % b else: b = b % a ” width=”640″

В других языках программирования

С :

Паскаль :

while (a!= 0 && b!= 0 )

{

if (a b)

a = a % b;

else

b = b % a;

}

while (a 0 ) and

(b 0 ) do

if ab then

a:= a mod b

else

b:= b mod a;

Python:

while a!= 0 and b!= 0 :

if a b:

a = a % b

else:

b = b % a

 Задачи « A »: Ввести с клавиатуры два натуральных числа и найти их НОД с помощью алгоритма Евклида. Пример : Введите два числа: 21 14 НОД(21,14)=7 « B »: Ввести с клавиатуры два натуральных числа и найти их НОД с помощью модифицированного алгоритма Евклида. Заполните таблицу: a b 64168 НОД( a,b ) 358853 82678 6365133 691042 17905514 11494962 23108855 549868978 298294835

Задачи

« A »: Ввести с клавиатуры два натуральных числа и найти их НОД с помощью алгоритма Евклида.

Пример :

Введите два числа:

21 14

НОД(21,14)=7

« B »: Ввести с клавиатуры два натуральных числа и найти их НОД с помощью модифицированного алгоритма Евклида. Заполните таблицу:

a

b

64168

НОД( a,b )

358853

82678

6365133

691042

17905514

11494962

23108855

549868978

298294835

 Задачи « C »: Ввести с клавиатуры два натуральных числа и сравнить количество шагов цикла для вычисления их НОД с помощью обычного и модифицированного алгоритмов Евклида. Пример : Введите два числа: 1998 2 НОД(1998,2)=2 Обычный алгоритм: 998 Модифицированный: 1

Задачи

« C »: Ввести с клавиатуры два натуральных числа и сравнить количество шагов цикла для вычисления их НОД с помощью обычного и модифицированного алгоритмов Евклида.

Пример :

Введите два числа:

1998 2

НОД(1998,2)=2

Обычный алгоритм: 998

Модифицированный: 1

 Обработка потока данных Задача . На вход программы поступает поток данных — последовательность целых чисел, которая заканчивается нулём . Требуется найти сумму элементов этой последовательности. нц пока x 0  | добавить x к сумме  | x := следующее число кц ?  Откуда возьмётся  x в первый раз?

Обработка потока данных

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

нц пока x 0

| добавить x к сумме

| x := следующее число

кц

?

Откуда возьмётся x в первый раз?

 Обработка потока данных цел  x, sum sum:=  0 ввод x  | ввести первое число нц пока x 0  sum:=  sum  +  x  ввод x  | ввести следующее кц вывод 'Сумма ' , sum ?  Как найти сумму положительных?

Обработка потока данных

цел x, sum

sum:= 0

ввод x | ввести первое число

нц пока x 0

sum:= sum + x

ввод x | ввести следующее

кц

вывод ‘Сумма ‘ , sum

?

Как найти сумму положительных?

 Задачи « A »: На вход программы поступает неизвестное количество чисел целых, ввод заканчивается нулём. Определить, сколько получено чисел, которые делятся на 3. « B »: На вход программы поступает неизвестное количество чисел целых, ввод заканчивается нулём. Определить, сколько получено двузначных чисел, которые заканчиваются на 3. « C »: На вход программы поступает неизвестное количество чисел целых, ввод заканчивается нулём. Найти максимальное из введённых чётных чисел.

Задачи

« A »: На вход программы поступает неизвестное количество чисел целых, ввод заканчивается нулём. Определить, сколько получено чисел, которые делятся на 3.

« B »: На вход программы поступает неизвестное количество чисел целых, ввод заканчивается нулём. Определить, сколько получено двузначных чисел, которые заканчиваются на 3.

« C »: На вход программы поступает неизвестное количество чисел целых, ввод заканчивается нулём. Найти максимальное из введённых чётных чисел.

0: ‘ ввод N кц при N 0 N N 0 ? нет условие окончания работы цикла да конец ” width=”640″

Цикл с постусловием

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

начало

нц

вывод ‘Введите N 0: ‘

ввод N

кц при N 0

N

N 0 ?

нет

условие окончания работы цикла

да

конец

 Задачи « A »: Напишите программу, которая предлагает ввести пароль и не переходит к выполнению основной части, пока не введён правильный пароль. Основная часть – вывод на экран «секретных сведений». « B »: Напишите программу, которая получает с клавиатуры натуральное число, которое больше 1, и определяет, простое оно или нет. Для этого нужно делить число на все натуральные числа, начиная с 2, пока не получится деление без остатка. « C »: Напишите программу, которая получает с клавиатуры два целых числа и вычисляет их произведение, используя только операции сложения.

Задачи

« A »: Напишите программу, которая предлагает ввести пароль и не переходит к выполнению основной части, пока не введён правильный пароль. Основная часть – вывод на экран «секретных сведений».

« B »: Напишите программу, которая получает с клавиатуры натуральное число, которое больше 1, и определяет, простое оно или нет. Для этого нужно делить число на все натуральные числа, начиная с 2, пока не получится деление без остатка.

« C »: Напишите программу, которая получает с клавиатуры два целых числа и вычисляет их произведение, используя только операции сложения.

 Задачи « D »: Напишите программу, которая получает с клавиатуры натуральное число и вычисляет целый квадратный корень из него – наибольшее число, квадрат которого не больше данного числа.

Задачи

« D »: Напишите программу, которая получает с клавиатуры натуральное число и вычисляет целый квадратный корень из него – наибольшее число, квадрат которого не больше данного числа.

 Цикл по переменной Задача . Вывести на экран степени числа 2 от 2 1 до 2 10 . k:=  1 N:=  2 нц пока k    10  вывод N, нс  N:=  N* 2  k:=  k  +  1 кц ! k:=  1  Работа с k  в трёх местах! Идея : собрать всё вместе. k    10 N:=  2 нц для k от 1 до 10  вывод N, нс  N:=  N* 2 кц k:=  k  +  1 k от 1 до 10 увеличение на 1 по умолчанию

Цикл по переменной

Задача . Вывести на экран степени числа 2 от 2 1 до 2 10 .

k:= 1

N:= 2

нц пока k 10

вывод N, нс

N:= N* 2

k:= k + 1

кц

!

k:= 1

Работа с k в трёх местах!

Идея : собрать всё вместе.

k 10

N:= 2

нц для k от 1 до 10

вывод N, нс

N:= N* 2

кц

k:= k + 1

k от 1 до 10

увеличение на 1 по умолчанию


 Цикл по переменной Задача . Найти сумму чисел от 1 до 1000. цел  sum, i sum:=  0 нц для i от 1 до 1000  sum:=  sum  +  i кц Задача . Вывести квадраты чисел от 10 до 1 по убыванию. нц для k от 10 до 1 шаг –1  вывод k*k, нс кц шаг –1 любое целое

Цикл по переменной

Задача . Найти сумму чисел от 1 до 1000.

цел sum, i

sum:= 0

нц для i от 1 до 1000

sum:= sum + i

кц

Задача . Вывести квадраты чисел от 10 до 1 по убыванию.

нц для k от 10 до 1 шаг –1

вывод k*k, нс

кц

шаг –1

любое целое

 Цикл по переменной Задача . Найти сумму чётных чисел от 2 до 1000. sum:=  0 нц для i от 1 до 1000  если mod (i, 2 ) = 0  то   sum:=  sum  +  i  все кц ?  Что плохо? sum:=  0 нц для i от 2 до 1000 шаг 2  sum:=  sum  +  i кц шаг 2

Цикл по переменной

Задача . Найти сумму чётных чисел от 2 до 1000.

sum:= 0

нц для i от 1 до 1000

если mod (i, 2 ) = 0 то

sum:= sum + i

все

кц

?

Что плохо?

sum:= 0

нц для i от 2 до 1000 шаг 2

sum:= sum + i

кц

шаг 2

 В других языках программирования С : Паскаль : int sum, i; sum = 0 ; for (i= 1 ; i 1000 ; i++)  sum += i; sum:=  0 ; for i:= 1 to 1000 do  sum:=  sum  +  i; i=i+1; шаг только 1 или  –1 ( downto ) sum=sum+i; Python: Sum  =  0 for i in  range ( 1 , 1001 ):  S um  +=  i диапазон [1;1001)

В других языках программирования

С :

Паскаль :

int sum, i;

sum = 0 ;

for (i= 1 ; i 1000 ; i++)

sum += i;

sum:= 0 ;

for i:= 1 to 1000 do

sum:= sum + i;

i=i+1;

шаг только 1 или –1 ( downto )

sum=sum+i;

Python:

Sum = 0

for i in range ( 1 , 1001 ):

S um += i

диапазон [1;1001)


 Задачи « A »: Ипполит задумал трёхзначное число, которое при делении на 15 даёт в остатке 11, а при делении на 11 даёт в остатке 9. Напишите программу, которая находит все такие числа. « B »: С клавиатуры вводится натуральное число N. Программа должна найти факториал этого числа (обозначается как N!) – произведение всех натуральных чисел от 1 до N. Например,  5! = 1 • 2 • 3 • 4 • 5 = 120. « C »: Натуральное число называется числом Армстронга , если сумма цифр числа, возведенных в N -ную степень (где N – количество цифр в числе) равна самому числу. Например, 153 = 1 3 + 5 3 + 3 3 . Найдите все трёхзначные Армстронга.

Задачи

« A »: Ипполит задумал трёхзначное число, которое при делении на 15 даёт в остатке 11, а при делении на 11 даёт в остатке 9. Напишите программу, которая находит все такие числа.

« B »: С клавиатуры вводится натуральное число N. Программа должна найти факториал этого числа (обозначается как N!) – произведение всех натуральных чисел от 1 до N. Например,

5! = 1 • 2 • 3 • 4 • 5 = 120.

« C »: Натуральное число называется числом Армстронга , если сумма цифр числа, возведенных в N -ную степень (где N – количество цифр в числе) равна самому числу. Например, 153 = 1 3 + 5 3 + 3 3 . Найдите все трёхзначные Армстронга.

 Программирование (АлгЯзык) § 21 . Массивы

Программирование (АлгЯзык)

§ 21 . Массивы

 Что такое массив? ?  Как ввести 10000 переменных? Массив – это группа переменных одного типа, расположенных в памяти рядом (в соседних ячейках) и имеющих общее имя. Надо : выделять память записывать данные в нужную ячейку читать данные из ячейки

Что такое массив?

?

Как ввести 10000 переменных?

Массив – это группа переменных одного типа, расположенных в памяти рядом (в соседних ячейках) и имеющих общее имя.

Надо :

  • выделять память
  • записывать данные в нужную ячейку
  • читать данные из ячейки

 Выделение памяти (объявление) ! минимальный индекс  Массив = таблица ! максимальный индекс целтаб A[ 1 : 5 ] вещтаб V[ 0 : 5 ] логтаб L[ -5 : 5 ] симтаб S[ 65 : 90 ] Индекс элемента — это значение, которое указывает на конкретный элемент массива. размер через константу цел N  =  10 целтаб A[ 1 : N ]  ?  Зачем?

Выделение памяти (объявление)

!

минимальный индекс

Массив = таблица !

максимальный индекс

целтаб A[ 1 : 5 ]

вещтаб V[ 0 : 5 ]

логтаб L[ -5 : 5 ]

симтаб S[ 65 : 90 ]

Индекс элемента — это значение, которое указывает на конкретный элемент массива.

размер через константу

цел N = 10

целтаб A[ 1 : N ]

?

Зачем?

 Что неправильно? целтаб A  [ 10 : 1 ] ... A[ 5 ]  :=  4.5 ; [ 1 : 10 ]  целтаб  A[ 1 : 10 ] ... A[ 15 ]  :=  'a'

Что неправильно?

целтаб A [ 10 : 1 ]

A[ 5 ] := 4.5 ;

[ 1 : 10 ]

целтаб A[ 1 : 10 ]

A[ 15 ] := ‘a’

116 Обращение к элементу массива НОМЕР  элемента массива (ИНДЕКС) A массив 3 1 2 3 4 5 15 5 10 15 20 25 A[1] A[2] A[3] A[4] A[5] ЗНАЧЕНИЕ элемента массива НОМЕР (ИНДЕКС)  элемента массива : 2  A[2]  ЗНАЧЕНИЕ  элемента массива : 10

116

Обращение к элементу массива

НОМЕР элемента массива

(ИНДЕКС)

A

массив

3

1

2

3

4

5

15

5

10

15

20

25

A[1]

A[2]

A[3]

A[4]

A[5]

ЗНАЧЕНИЕ элемента массива

НОМЕР (ИНДЕКС) элемента массива : 2

A[2]

ЗНАЧЕНИЕ элемента массива : 10

 Обращение к элементу массива 1 2 3 4 5 23 12 7 43 51 цел  i i:=  2 A[ 3 ]:=  A[i]  +  2 *A[i- 1 ]  +  A[ 2 *i] вывод A[ 3 ]+A[ 5 ] ?  Что получится? 101 A[ 3 ]:=  A[ 2 ]  +  2 *A[ 1 ]  +  A[ 4 ] вывод A[ 3 ]+A[ 5 ] 1 52

Обращение к элементу массива

1

2

3

4

5

23

12

7

43

51

цел i

i:= 2

A[ 3 ]:= A[i] + 2 *A[i- 1 ] + A[ 2 *i]

вывод A[ 3 ]+A[ 5 ]

?

Что получится?

101

A[ 3 ]:= A[ 2 ] + 2 *A[ 1 ] + A[ 4 ]

вывод A[ 3 ]+A[ 5 ]

1 52

 Что неверно? целтаб A[ 1 : 5 ] цел x ... x:= 2 вывод A[x- 3 ] A[x+ 4 ]:=A[x- 1 ]+A[ 2 *x] ?  Что плохо? вывод A[ - 1 ] A[ 6 ]:=A[ 1 ]+A[ 4 ] Выход за границы массива — это обращение к элементу с индексом, который не существует в массиве.

Что неверно?

целтаб A[ 1 : 5 ]

цел x

x:= 2

вывод A[x- 3 ]

A[x+ 4 ]:=A[x- 1 ]+A[ 2 *x]

?

Что плохо?

вывод A[ 1 ]

A[ 6 ]:=A[ 1 ]+A[ 4 ]

Выход за границы массива — это обращение к элементу с индексом, который не существует в массиве.

 Перебор элементов массива цел N  =  10 целтаб A[ 1 : N ]  Перебор элементов : просматриваем все элементы массива и, если нужно, выполняем с каждым из них некоторую операцию. нц для i от 1 до N  | здесь работаем с A[i] кц

Перебор элементов массива

цел N = 10

целтаб A[ 1 : N ]

Перебор элементов : просматриваем все элементы массива и, если нужно, выполняем с каждым из них некоторую операцию.

нц для i от 1 до N

| здесь работаем с A[i]

кц

 Заполнение массива нц для i от 1 до N  A[i]:= i кц ?  Что произойдёт? В развёрнутом виде A[ 1 ]:= 1 A[ 2 ]:= 2 A[ 3 ]:= 3 ... A[N]:= N 1 2 3 N ...

Заполнение массива

нц для i от 1 до N

A[i]:= i

кц

?

Что произойдёт?

В развёрнутом виде

A[ 1 ]:= 1

A[ 2 ]:= 2

A[ 3 ]:= 3

A[N]:= N

1

2

3

N

 Заполнение массива в обратном порядке N … 3 2 1 X:= N A[ 1 ]:= N A[ 2 ]:= N- 1 A[ 3 ]:= N- 2 ... A[N]:= 1 нц для i от 1 до N  A[i]:= X кц  X:= X - 1 кц ?  Как меняется X ? X = N, N-1, …, 2, 1 уменьшение на 1 начальное значение

Заполнение массива в обратном порядке

N

3

2

1

X:= N

A[ 1 ]:= N

A[ 2 ]:= N- 1

A[ 3 ]:= N- 2

A[N]:= 1

нц для i от 1 до N

A[i]:= X

кц

X:= X – 1

кц

?

Как меняется X ?

X = N, N-1, …, 2, 1

уменьшение на 1

начальное значение

 Заполнение массива в обратном порядке A[i]:= X N … 3 2 1 ?  Как связаны i  и X ? нц для i от 1 до N  A[i]:= N + 1 - i кц i X 1 N 2 3 N-1 N-2 ... ... N 1 – 1  +1 !  Сумма i  и X не меняется! i + X = N + 1 X = N + 1 - i

Заполнение массива в обратном порядке

A[i]:= X

N

3

2

1

?

Как связаны i и X ?

нц для i от 1 до N

A[i]:= N + 1 – i

кц

i

X

1

N

2

3

N-1

N-2

N

1

– 1

+1

!

Сумма i и X не меняется!

i + X = N + 1

X = N + 1 i

 Вывод массива на экран нц для i от 1 до N  вывод A[i] кц ? , ' '  Что плохо? интервал между значениями или так: нц для i от 1 до N  вывод A[i] , нс кц в столбик или так: ?  Как убрать? вывод '[' нц для i от 1 до N  вывод A[i] , ',' кц вывод ']' [1,2,3,4,5,]

Вывод массива на экран

нц для i от 1 до N

вывод A[i]

кц

?

, ‘ ‘

Что плохо?

интервал между значениями

или так:

нц для i от 1 до N

вывод A[i] , нс

кц

в столбик

или так:

?

Как убрать?

вывод ‘[‘

нц для i от 1 до N

вывод A[i] , ‘,’

кц

вывод ‘]’

[1,2,3,4,5,]

 Ввод с клавиатуры нц для i от 1 до N  вывод A[i] кц ?  Что плохо? С подсказкой для ввода: A[1]  =  A[2]  =  A[3]  =  A[4]  =  A[5]  =  5 12 34 56 13 нц для i от 1 до N  вывод ' A[ ' ,i, ' ]= '  ввод A[i] кц

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

нц для i от 1 до N

вывод A[i]

кц

?

Что плохо?

С подсказкой для ввода:

A[1] =

A[2] =

A[3] =

A[4] =

A[5] =

5

12

34

56

13

нц для i от 1 до N

вывод A[ ,i, ]=

ввод A[i]

кц

 В других языках программирования Паскаль : const N = 10; var i: integer ;  A: array[ 1 ..N] of integer ; begin  for i:= 1 to N do  A[i]:= i;  for i:= 1 to N do  write(A[i], ' ' ); end.

В других языках программирования

Паскаль :

const N = 10;

var i: integer ;

A: array[ 1 ..N] of integer ;

begin

for i:= 1 to N do

A[i]:= i;

for i:= 1 to N do

write(A[i], ‘ ‘ );

end.

 В других языках программирования Python: A = [ 0 ]*N for i in range (N):  A[i] = i + 1 print(A) !  Нумерация элементов  всегда с нуля ! С ++: int A[N], i; for (i = 0 ; i   A[i] = i + 1; for (i = 0 ; i   cout

В других языках программирования

Python:

A = [ 0 ]*N

for i in range (N):

A[i] = i + 1

print(A)

!

Нумерация элементов всегда с нуля !

С ++:

int A[N], i;

for (i = 0 ; i

A[i] = i + 1;

for (i = 0 ; i

cout ” “ ;


 Задачи « A »: а) Заполните все элементы массива из 10 элементов значением X , введённым с клавиатуры. б) Заполните массив из 10 элементов последовательными натуральными числами, начиная с X (значение X введите с клавиатуры). « B »: а) Заполните массив из 10 элементов натуральными числами в обратном порядке, начиная со значения X, введённого с клавиатуры. Последний элемент должен быть равен X , предпоследний равен X – 1 и т.д. б) Заполните массив из 10 элементов степенями числа 2 (от 2 1 до 2 N ), так чтобы элемент с индексом i был равен 2 i .

Задачи

« A »: а) Заполните все элементы массива из 10 элементов значением X , введённым с клавиатуры.

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

« B »: а) Заполните массив из 10 элементов натуральными числами в обратном порядке, начиная со значения X, введённого с клавиатуры. Последний элемент должен быть равен X , предпоследний равен X 1 и т.д.

б) Заполните массив из 10 элементов степенями числа 2 (от 2 1 до 2 N ), так чтобы элемент с индексом i был равен 2 i .

 Задачи « C »: а) Заполните массив из 10 элементов степенями числа 2, начиная с конца, так чтобы последний элемент массива был равен 1, а каждый предыдущий был в 2 раза больше следующего. б) С клавиатуры вводится целое число X . Заполните массив из 11 элементов целыми числами, так чтобы средний элемент массива был равен X , слева от него элементы стояли по возрастанию, а справа – по убыванию. Соседние элементы отличаются на единицу. Например,  при X = 3 массив из 5 элементов заполняется так: 1 2 3 2 1.

Задачи

« C »: а) Заполните массив из 10 элементов степенями числа 2, начиная с конца, так чтобы последний элемент массива был равен 1, а каждый предыдущий был в 2 раза больше следующего.

б) С клавиатуры вводится целое число X . Заполните массив из 11 элементов целыми числами, так чтобы средний элемент массива был равен X , слева от него элементы стояли по возрастанию, а справа – по убыванию. Соседние элементы отличаются на единицу. Например, при X = 3 массив из 5 элементов заполняется так: 1 2 3 2 1.

 Заполнение случайными числами нц для i от 1 до N   A[i]:=  irand ( 20 , 100 )  вывод A[i], ' ' кц сразу вывод на экран

Заполнение случайными числами

нц для i от 1 до N

A[i]:= irand ( 20 , 100 )

вывод A[i], ‘ ‘

кц

сразу вывод на экран

 Задачи -2 « A »: Напишите программу, которая заполняет массив из 10 элементов случайными числами в диапазоне [0,10], выводит его на экран, а затем выводит на экран квадраты всех элементов массива. Пример : Массив: 5 6 2 3 1 4 8 7  Квадраты: 2 5 36 4 9 1 1 6 6 4 49  « B »: Напишите программу, которая заполняет массив из 10 элементов случайными числами в диапазоне [100,300] и выводит его на экран. После этого на экран выводятся средние цифры (число десятков) всех чисел, записанных в массив. Пример : Массив: 142 324 135 257 167 295 126 223 138 270  Число десятков: 4 2 3 5 6 9 2 2 3 7

Задачи -2

« A »: Напишите программу, которая заполняет массив из 10 элементов случайными числами в диапазоне [0,10], выводит его на экран, а затем выводит на экран квадраты всех элементов массива.

Пример :

Массив: 5 6 2 3 1 4 8 7

Квадраты: 2 5 36 4 9 1 1 6 6 4 49

« B »: Напишите программу, которая заполняет массив из 10 элементов случайными числами в диапазоне [100,300] и выводит его на экран. После этого на экран выводятся средние цифры (число десятков) всех чисел, записанных в массив.

Пример :

Массив: 142 324 135 257 167 295 126 223 138 270

Число десятков: 4 2 3 5 6 9 2 2 3 7

 Задачи -2 « C »: Напишите программу, которая заполняет массив из  10 элементов случайными числами в диапазоне [100,500] и выводит его на экран. После этого на экран выводятся суммы цифр всех чисел, записанных в массив. Пример : Массив: 162 425 340 128 278 195 326 414 312 177    Суммы цифр: 9 11 7 11 17 15 11 9 6 15

Задачи -2

« C »: Напишите программу, которая заполняет массив из 10 элементов случайными числами в диапазоне [100,500] и выводит его на экран. После этого на экран выводятся суммы цифр всех чисел, записанных в массив.

Пример :

Массив: 162 425 340 128 278 195 326 414 312 177

Суммы цифр: 9 11 7 11 17 15 11 9 6 15

 Программирование (АлгЯзык) § 22 . Алгоритмы обработки массивов

Программирование (АлгЯзык)

§ 22 . Алгоритмы обработки массивов

 Сумма элементов массива Задача . Найти сумму элементов массива. цел N  =  10 целтаб A[ 1 : N ]  ?  Какие переменные  нужны? 5 2 8 3 1 sum:=  0 нц для i от 1 до N  sum:=  sum  +  A[i] кц вывод sum i sum 0 1 5 2 7 3 15 4 1 8 5 19

Сумма элементов массива

Задача . Найти сумму элементов массива.

цел N = 10

целтаб A[ 1 : N ]

?

Какие переменные нужны?

5

2

8

3

1

sum:= 0

нц для i от 1 до N

sum:= sum + A[i]

кц

вывод sum

i

sum

0

1

5

2

7

3

15

4

1 8

5

19

 Сумма не всех элементов массива Задача . Найти сумму чётных элементов массива. ?  Что делаем с нечётными? sum:=  0 нц для i от 1 до N  sum:=  sum  +  A[i] кц вывод sum  если mod (A[i], 2 )= 0  то  sum:=  sum  +  A[i]  все кц вывод sum если mod (A[i], 2 )= 0  то

Сумма не всех элементов массива

Задача . Найти сумму чётных элементов массива.

?

Что делаем с нечётными?

sum:= 0

нц для i от 1 до N

sum:= sum + A[i]

кц

вывод sum

если mod (A[i], 2 )= 0 то

sum:= sum + A[i]

все

кц

вывод sum

если mod (A[i], 2 )= 0 то

 Задачи « A »: Напишите программу, которая заполняет массив из 10 элементов случайными числами на отрезке [–5; 5] и находит сумму положительных элементов. « B »: Напишите программу, которая заполняет массив из 10 элементов случайными числами на отрезке [–2; 2] и находит произведение ненулевых элементов. « C »: Напишите программу, которая заполняет массив из 20 элементов случайными числами на отрезке  [100; 1000] и находит отдельно сумму элементов в первой и во второй половинах массива.

Задачи

« A »: Напишите программу, которая заполняет массив из 10 элементов случайными числами на отрезке [–5; 5] и находит сумму положительных элементов.

« B »: Напишите программу, которая заполняет массив из 10 элементов случайными числами на отрезке [–2; 2] и находит произведение ненулевых элементов.

« C »: Напишите программу, которая заполняет массив из 20 элементов случайными числами на отрезке [100; 1000] и находит отдельно сумму элементов в первой и во второй половинах массива.

 Подсчёт элементов по условию Задача . Найти количество чётных элементов массива. ?  Какие переменные нужны? переменная-счётчик цел  count count :=  0 нц для i от 1 до N   если mod (A[i], 2 )= 0  то  count :=  count  + 1  все кц вывод count ?  Что тут делаем?

Подсчёт элементов по условию

Задача . Найти количество чётных элементов массива.

?

Какие переменные нужны?

переменная-счётчик

цел count

count := 0

нц для i от 1 до N

если mod (A[i], 2 )= 0 то

count := count + 1

все

кц

вывод count

?

Что тут делаем?

180 то sum:= sum + A[i] все кц вывод sum/N ? Что плохо? ” width=”640″

Среднее арифметическое

Задача . Найти среднее арифметическое элементов массива, которые больше 180 (рост в см).

sum:= 0

нц для i от 1 до N

если A[i] 180 то

sum:= sum + A[i]

все

кц

вывод sum/N

?

Что плохо?

180 то count := count + 1 sum:= sum + A[i] все кц вывод sum/ count ? Что тут делаем? ” width=”640″

Среднее арифметическое

Задача . Найти среднее арифметическое элементов массива, которые больше 180 (рост в см).

?

Какие переменные нужны?

sum:= 0

count:= 0

нц для i от 1 до N

если A[i] 180 то

count := count + 1

sum:= sum + A[i]

все

кц

вывод sum/ count

?

Что тут делаем?

 Задачи « A »: Напишите программу, которая заполняет массив из 20 элементов случайными числами на отрезке [0; 200] и считает число элементов, которые делятся на 10. « B »: Напишите программу, которая заполняет массив из 20 элементов случайными числами на отрезке [0; 200] и считает число двузначных чисел в массиве. « C »: Напишите программу, которая заполняет массив из 20 элементов случайными числами на отрезке [10; 100] и считает число пар соседних элементов, сумма которых делится на 3.

Задачи

« A »: Напишите программу, которая заполняет массив из 20 элементов случайными числами на отрезке [0; 200] и считает число элементов, которые делятся на 10.

« B »: Напишите программу, которая заполняет массив из 20 элементов случайными числами на отрезке [0; 200] и считает число двузначных чисел в массиве.

« C »: Напишите программу, которая заполняет массив из 20 элементов случайными числами на отрезке [10; 100] и считает число пар соседних элементов, сумма которых делится на 3.

0 нужен цикл это цикл с условием (число шагов неизвестно) ? Когда увеличивать счётчик ? ? Какой цикл ? счётчик = 0 пока не введён 0 : если введено число 0 то счётчик: = счётчик + 1 ” width=”640″

Обработка потока данных

Задача . С клавиатуры вводятся числа, ввод завершается числом 0. Определить, сколько было введено положительных чисел.

  • нужен счётчик
  • счётчик увеличивается если число 0
  • нужен цикл
  • это цикл с условием (число шагов неизвестно)

?

Когда увеличивать счётчик ?

?

Какой цикл ?

счётчик = 0

пока не введён 0 :

если введено число 0 то

счётчик: = счётчик + 1

0 то count:= count + 1 все ввод x кц вывод count откуда взять x ? ? Что плохо ? ” width=”640″

Обработка потока данных

цел x, count

count: = 0

ввод x

нц пока x 0

если x 0 то

count:= count + 1

все

ввод x

кц

вывод count

откуда взять x ?

?

Что плохо ?

0 то count:= count + 1 все ввод x ввод x кц вывод count ” width=”640″

Найди ошибку!

цел x, count

count: = 0

ввод x

нц пока x 0

если x 0 то

count:= count + 1

все

ввод x

ввод x

кц

вывод count

0 то count:= count + 1 все ввод x кц вывод count ” width=”640″

Найди ошибку!

цел x, count

count: = 0

count: = 0

ввод x

нц пока x = 0

если x 0 то

count:= count + 1

все

ввод x

кц

вывод count

 Обработка потока данных Задача . С клавиатуры вводятся числа, ввод завершается числом 0. Найти сумму введённых чисел, оканчивающихся на цифру

Обработка потока данных

Задача . С клавиатуры вводятся числа, ввод завершается числом 0. Найти сумму введённых чисел, оканчивающихся на цифру “5”.

  • нужна переменная для суммы
  • число добавляется к сумме, если оно заканчивается на “5”
  • нужен цикл с условием

?

Как это записать ?

сумма: = 0

пока не введён 0 :

если число оканчивается на “5” то

сумма: = сумма + число

если mod (x, 10 ) = 5 то

 Обработка потока данных Задача . С клавиатуры вводятся числа, ввод завершается числом 0. Найти сумму введённых чисел, оканчивающихся на цифру

Обработка потока данных

Задача . С клавиатуры вводятся числа, ввод завершается числом 0. Найти сумму введённых чисел, оканчивающихся на цифру “5”.

цел x, sum

sum: = 0

ввод x

нц пока x 0

если mod (x, 10 ) = 5 то

sum:= sum + x

все

ввод x

кц

вывод sum

?

Чего не хватает ?

 Найди ошибку! цел x, sum sum:  =  0 ввод x ввод x нц пока  x   0   если mod (x, 10 ) = 5 то  sum:= sum + x  все  ввод x кц вывод sum

Найди ошибку!

цел x, sum

sum: = 0

ввод x

ввод x

нц пока x 0

если mod (x, 10 ) = 5 то

sum:= sum + x

все

ввод x

кц

вывод sum

 Задачи « A »: На вход программы поступает неизвестное количество целых чисел, ввод заканчивается нулём. Определить, сколько получено чисел, которые делятся на 3. « B »: На вход программы поступает неизвестное количество целых чисел, ввод заканчивается нулём. Определить, сколько получено двузначных чисел, которые заканчиваются на 3.

Задачи

« A »: На вход программы поступает неизвестное количество целых чисел, ввод заканчивается нулём. Определить, сколько получено чисел, которые делятся на 3.

« B »: На вход программы поступает неизвестное количество целых чисел, ввод заканчивается нулём. Определить, сколько получено двузначных чисел, которые заканчиваются на 3.

 Задачи « C »: На вход программы поступает неизвестное количество целых чисел, ввод заканчивается нулём. Найти среднее арифметическое всех двузначных чисел, которые делятся на 7. « D »: На вход программы поступает неизвестное количество целых чисел, ввод заканчивается нулём. Найти максимальное из введённых чётных чисел.

Задачи

« C »: На вход программы поступает неизвестное количество целых чисел, ввод заканчивается нулём. Найти среднее арифметическое всех двузначных чисел, которые делятся на 7.

« D »: На вход программы поступает неизвестное количество целых чисел, ввод заканчивается нулём. Найти максимальное из введённых чётных чисел.

 Перестановка элементов массива ?  Как поменять местами значения двух   переменных a  и b ? вспомогательная переменная элементы массива: с:= a a:= b b:= c с:= A[i] A[i]:= A[k] A[k]:= c

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

?

Как поменять местами значения двух переменных a и b ?

вспомогательная переменная

элементы массива:

с:= a

a:= b

b:= c

с:= A[i]

A[i]:= A[k]

A[k]:= c

 Перестановка пар соседних элементов Задача . Массив A содержит чётное количество элементов N. Нужно поменять местами пары соседних элементов: первый со вторым, третий — с четвёртым и т. д. 1 2 7 3 12 4 38 5 N-1 … N 40 23 1 12 2 3 7 4 5 38 … N-1 23 N 40

Перестановка пар соседних элементов

Задача . Массив A содержит чётное количество элементов N. Нужно поменять местами пары соседних элементов: первый со вторым, третий — с четвёртым и т. д.

1

2

7

3

12

4

38

5

N-1

N

40

23

1

12

2

3

7

4

5

38

N-1

23

N

40

 Перестановка пар соседних элементов нц для i от 1 до N  поменять местами A[i] и A[i+1] кц ?  Что плохо ? 1 2 7 12 3 4 38 5 5 6 40 23 12 7 38 5 40 23 выход за границы массива 12 38 7 5 40 23 12 38 5 7 40 23 12 38 5 40 7 23 ? 12 38 5 40 23 7

Перестановка пар соседних элементов

нц для i от 1 до N

поменять местами A[i] и A[i+1]

кц

?

Что плохо ?

1

2

7

12

3

4

38

5

5

6

40

23

12

7

38

5

40

23

выход за границы массива

12

38

7

5

40

23

12

38

5

7

40

23

12

38

5

40

7

23

?

12

38

5

40

23

7

 Перестановка пар соседних элементов не трогаем те, что уже переставлены не выходим за границу нц для i от 1 до N- 1 шаг 2  | переставляем A[i] и A[i+1]  с:=  A[i]  A[i]:=  A[i+ 1 ]  A[i+ 1 ]:=  c кц A[ 1 ]  A[ 2 ], A[ 3 ]  A[ 4 ], …, A[N- 1 ]  A[N]

Перестановка пар соседних элементов

не трогаем те, что уже переставлены

не выходим за границу

нц для i от 1 до N- 1 шаг 2

| переставляем A[i] и A[i+1]

с:= A[i]

A[i]:= A[i+ 1 ]

A[i+ 1 ]:= c

кц

A[ 1 ] A[ 2 ], A[ 3 ] A[ 4 ], …, A[N- 1 ] A[N]

 Реверс массива Задача . Переставить элементы массива в обратном порядке (выполнить реверс ). 1 2 7 3 12 5 N-2 … N-1 38 N 40 23 1 23 2 3 40 38 … N -2 5 N-1 12 N 7 1 + N   = N + 1 2 +N- 1 = N+ 1 A[ 1 ]  A[N] A[ 2 ]  A[N- 1 ] A[i]  A[N+ 1 -i] A[N]  A[ 1 ] i+ ??? = N+ 1 N+ 1 = N+ 1

Реверс массива

Задача . Переставить элементы массива в обратном порядке (выполнить реверс ).

1

2

7

3

12

5

N-2

N-1

38

N

40

23

1

23

2

3

40

38

N -2

5

N-1

12

N

7

1 + N = N + 1

2 +N- 1 = N+ 1

A[ 1 ] A[N]

A[ 2 ] A[N- 1 ]

A[i] A[N+ 1 -i]

A[N] A[ 1 ]

i+ ??? = N+ 1

N+ 1 = N+ 1

 Реверс массива div (N ,2) нц для i от 1 до N  поменять местами A[i] и A[ N+ 1 -i ] кц ?  Что плохо ? 1 2 7 12 3 4 40 23 i= 1 i= 2 23 12 40 7 i= 3 23 40 12 7 23 12 40 7 i= 4 7 12 40 23 ?  Как исправить ?

Реверс массива

div (N ,2)

нц для i от 1 до N

поменять местами A[i] и A[ N+ 1 -i ]

кц

?

Что плохо ?

1

2

7

12

3

4

40

23

i= 1

i= 2

23

12

40

7

i= 3

23

40

12

7

23

12

40

7

i= 4

7

12

40

23

?

Как исправить ?

155 Конец фильма ПОЛЯКОВ Константин Юрьевич д.т.н., учитель информатики ГБОУ СОШ № 163, г. Санкт-Петербург kpolyakov@mail.ru  ЕРЕМИН Евгений Александрович к.ф.-м.н., доцент кафедры мультимедийной дидактики и ИТО ПГГПУ, г. Пермь eremin@pspu.ac.ru

155

Конец фильма

ПОЛЯКОВ Константин Юрьевич

д.т.н., учитель информатики

ГБОУ СОШ № 163, г. Санкт-Петербург

[email protected]

ЕРЕМИН Евгений Александрович

к.ф.-м.н., доцент кафедры мультимедийной дидактики и ИТО ПГГПУ, г. Пермь

[email protected]

 Источники иллюстраций иллюстрации художников издательства «Бином» авторские материалы

Источники иллюстраций

  • иллюстрации художников издательства «Бином»
  • авторские материалы

Добавить комментарий