Войти

Показать полную графическую версию : помогите сделать блок-схему


Страниц : [1] 2 3 4

winston07
30-11-2013, 02:10
Блок схемы

Iska
30-11-2013, 02:20
winston07, и в чём проблемы? Пока видно не «помогите сделать», а только «сделайте за меня». См. Правила Форума (http://forum.oszone.net/announcement-21-187.html), особливо шестой пункт.

winston07
30-11-2013, 02:49
Iska, проблема в том,что не умею,поэтому и обратился

Tau_0
30-11-2013, 05:02
и в чём проблемы? »
Проблема в том, что подобные дурацкие примеры (ни уму ни сердцу...) придумывают преподаватели, которые сами программивать не умеют...
См. второй пример на ветвление, если a = b

Он совсем не так прост..., ибо никогда в лоб на плавающей точке равенства не будет...

Iska
30-11-2013, 07:33
Iska, проблема в том,что не умею,поэтому и обратился »
Вопрос первый — а что умеете. Вопрос второй — зачем брались делать, если не умеете?

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

ибо никогда в лоб на плавающей точке равенства не будет... »
Что за бред?!

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

Tau_0
30-11-2013, 09:20
Что за бред?! »
В реальной задаче не только нули, но и ВСЕ остальные числа с плавающей точкой равны с точностью до Epsilon...
То, что нужна плавающая точка очевидно из остальных двух картинок...

В своё время мне пришлось рисовать кучу блок схем --- так тогда требовал нормо контроль… Более глупого занятия не придумаешь….
За свою жизнь я покодировал на многих языках программтрования от разных ассемблеров до языков высокого уровня… Какие-то картинки с четриками порою для себя рисавал, но блок схемы по ГОСТ не делал, --- пустая трата времени..

Большинство профессионало программистов придерживались аналогичного мнения.

Вот примерно как забавно на DxDy народ фрудит…

Боюсь эти понятия функциональные;принципиальные,соединений и др...
выходят вообще за рамки понятия "блок-схема " а относятся к более широкому классу структурных схем устройств например в электронике, САР но никак к программам и алгоритмам.
Я согласен что блок-схема как форма описания для современного взгляда на алгоритмизацию устарела. То же описание языка Дракон начинается с критики блок-схем и дифирамбами в адрес схем яз.Дракон.
Тем не менее в школах и ВУЗах алгоритмы изучаются на основе классических блок-схем, нравится это нам или нет.
И поэтому преподавание курса алгоритмизация и программирования должно учитывать все нюансы и недостатки языка блок-схем и сравнение с альтернативными формами представления алгоритмов.
2)правда есть т.н. парадигмы программирования, в частности функциональное направление (языки), Lisp, Refal
Можно ли говорить об отличии описаний моделей задач для этих языков от классических блок-схем ?Другими словами, для каждого стиля программирования (функционального, компонентного,cобытийного) использовать свою форму представления алгоритмов. При этом конечно терминологически отличая эти формы представления от классических блок схем.

Блок-схемы алгоритма (http://dxdy.ru/post515875.html)

Iska
30-11-2013, 10:25
Tau_0, Вы понимаете разницу между алгоритмом и программой?

В реальной задаче не только нули, но и ВСЕ остальные числа с плавающей точкой равны с точностью до Epsilon... »
Коллега, выражайтесь логично. «ВСЕ» — это из какой-то другой оперы. В данном случае — не «все», а вычисленные значения, чей порядок и мантисса при укладывании в используемый машиной формат представления числа одинаков, и при этом мантисса не вмещает всей значимой части. Я об этом уже писал выше:
…на тему особых случаев, как-то: переполнения порядка и исчезновения порядка. »
К чему повторять, да ещё и некорректно формулировать?!

За свою жизнь я покодировал на многих языках программтрования от разных ассемблеров до языков высокого уровня… »
«Имейте совесть, Штирлиц: не Вы один по Родине тоскуете».

Большинство профессионало программистов придерживались аналогичного мнения.
Вот примерно как забавно на DxDy народ фрудит… »
Пусть их… Для процедурных языков никто не отменял простого:
Структурное программирование — Википедия (http://ru.wikipedia.org/wiki/%D0%A1%D1%82%D1%80%D1%83%D0%BA%D1%82%D1%83%D1%80%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0 %B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5)
Теорема Бёма — Якопини — Википедия (http://ru.wikipedia.org/wiki/%D0%A2%D0%B5%D0%BE%D1%80%D0%B5%D0%BC%D0%B0_%D0%91%D0%BE%D0%BC%D0%B0-%D0%AF%D0%BA%D0%BE%D0%BF%D0%B8%D0%BD%D0%B8)

pva
30-11-2013, 11:37
winston07, Для прогулявших лекции: http://inf1.info/book/export/html/23
Для тренировки: сделай блок-схему поиска максимума двух чисел: m=max(a,b)

Tau_0
30-11-2013, 12:03
Пусть их… Для процедурных языков никто не отменял простого: »
Ну, если только на этале обучения...???..

Я лет 5 программировал на Modula-2, так только картинки для себя изредка рисовал – кроме меня их бы никто не разобрал. Но если Вам так нравится --- рисуйте на каждый оператор блок схему или рельсовую диаграмму. По мне так это пустое и ненужное… Хотя если заставят, то даже под нормоконтроль нарисую…
Возьмитите классику Н. Вита
Программирование на языке Модула-2
И найдите там хоть одну блок сжему. Там только редьсовые диаграммы есть. Хотя в более раньних книгах у Вирта блок схемы есть…

И на разных Fortran’ах лет 20 структурно проекционно сеточные методы долбал со слабо обусловленными матрицами. Там точное решение получалось совсем неточным и надо было далее для уточнения применять итерацинные методы. --- Понятно, что на равенство никогда не проверялось, а только на больше или меньше. По большому счёту равенство только на целых числах имеет смысл.

mrcnn
30-11-2013, 13:58
Вопрос первый — а что умеете. Вопрос второй — зачем брались делать, если не умеете? »
Он студент.

на плавающей точке равенства не будет »Что за бред?! »
Это не бред, т.к действительно так.Кстати, с чего Вы взяли, что там вещественные, а не, скажем, целые? »
Если не уточнено, то значит И целые И вещественные.

блок схемы по ГОСТ не делал, --- пустая трата времени.. » Построение блок-схем хорошо прочищает мозг. Те, кто делал по ГОСТу запустили управляемый полностью в автоматическом режиме Буран. Такая вот электроника и программирование в конце 1980х, запуск был в 1988. А что запускают те, кто обсуждают в интернете, неизвестно.

Tau_0
30-11-2013, 17:01
А что запускают те, кто обсуждают в интернете, неизвестно. »
Это мне неведомо, но ДРАКОН (http://ru.wikipedia.org/wiki/ДРАКОН#.D0.91.D0.BB.D0.BE.D0.BA-.D1.81.D1.85.D0.B5.D0.BC.D1.8B_.D0.B8_.D0.B4.D1.80.D0.B0.D0.BA.D0.BE.D0.BD-.D1.81.D1.85.D0.B5.D0.BC.D1.8B) создан для Бурана и Космоса…
Я вот на ДРАКОНЕ не писал, но с когнитивным подходом согласен --- близок он моему нутрю...:)

Tau_0
30-11-2013, 17:54
Тем более, когда критика основана на заведомо ошибочных положениях. »
Хм...
Я не знаю для какого языка необходимо нарисовать-блок схему...
Но вот Вам очень старая книга Д. Мак-Кракен, У. Дорн, Численные методы и программирование (http://mat.net.ua/mat/McKraken-Dorn-Chislennie-metodi.htm). Она для фортрана. Лучщего введения в численные методы я не видел. Сразу начинается с блок-схем... Очень доходчиво там это дело расписано.
как всем хорошо известно, математические системы производят вычисления с бесконечной точностью. »
А вот это слишком занятно --- бесконечной точности на финитном предсталении вещественного числа в принципе быть не может...

Tau_0
30-11-2013, 22:58
Начать с того, что ни из чего не следует, что "a" и "b" вообще числа. »
Конечно условие задачи сформулировано никак.. --- из рук вон плохо...
Если надо нарисовать блок схему, то я бы поступил просто и незамысловато --- просто нарисовал бы укрупнённый прямоугольник типа "вычислить процедуру/функцию F". И ВСЁ --- больше ничего не надо. Мне неважно сколько в ней утверждений/операторов --- может пять, а может и тысяча. Это проектирование сверху вниз...

Но может там нужно нарисовать граф типа того, что на картинке. Тогда начинается самое интересное --- численные методы и ошибки округления...???... Но это слишком серьёзно и надолго... Тут не важен язык --- хоть на арифмометре "Феликс" считайте...

Бесполезно здесь фантазировать. Моё мнение --- здесь блок-схема никак не нужна и ничего не проясняет.

winston07
01-12-2013, 03:01
нужно,вот по такому примеру
http://radikal.ua/data/upload/04012/69fda/9cb55e0507.jpg

winston07
01-12-2013, 03:33
посмотрите вот 2-ой правильно ли?
http://radikal.ua/data/upload/0fccf/fb1a9/d0d9bc17c1.jpg

а вот первый и второй не знаю как бы правильно оформить(

Iska
01-12-2013, 05:54
Ну, если только на этале обучения...???.. »
Естественно. Начинать надо с простого.

Возьмитите классику Н. Вита »
Очевидно, Вирта.

Программирование на языке Модула-2
И найдите там хоть одну блок сжему. Там только редьсовые диаграммы есть. Хотя в более раньних книгах у Вирта блок схемы есть… »
Ну и что? Теория относительности не отменила закон Ньютона. Вы всё время пытаетесь свести разговор к тому или иному конкретному ЯВУ. Не в этом дело.

ибо никогда в лоб на плавающей точке равенства не будет... »
Что за бред?! »
Это не бред, т.к действительно так. »
С коллегой Tau_0 разобрались. Он банально не сумел (причём дважды) корректно сформулировать понятие переполнения и исчезновения порядка (о котором я написал после его сообщения под номером #4). А что у Вас?

Вот Вам два числа с плавающей запятой: «⅓» ? «⅓» — между ними, говорите, равенства не будет?! Ну-ну.

mrcnn
01-12-2013, 06:05
Как-то так.

mrcnn
01-12-2013, 06:08
Вот Вам два числа с плавающей запятой: «⅓» ? «⅓» — между ними, говорите, равенства не будет?! Ну-ну. »
Зачем тогда по вашему мнению нужно разделение на типы с одинарной точностью и с двойной точностью? В частности, на языке C числа с одинарной точностью обозначаются как float, а с двойной точностью как double. Любой учебник мат анализа начинается с изложения базовой теории чисел, в том числе вещественных и натуральных. Давно открывали учебник Фихтенгольца или Зорича или Ильина, Позняка ? Откройте - узнаете массу нового и интересного практически как в первом классе.

Для сравнения вещественных чисел в профессиональных программах пишется отдельная функция, а не используется стандартные условные операторы языка ( > , < , >=, <=, ==, != )

И на сравнении вещественных чисел могут возникнуть проблемы, если подобная отдельная функция не будет реализована. Сравнение на 0 в случае с вещественными числами может не сработать, т.е 0 может не быть равным 0 . Вот например один из примеров проблемы: http://www.rsdn.ru/forum/cpp.applied/1187492.flat (Сравнение вещественных чисел)
http://www.rsdn.ru/forum/delphi/1917455.flat (Неверное сравнение чисел типа Double в Delphi)

Iska
01-12-2013, 06:47
Зачем тогда по вашему мнению нужно разделение на типы с одинарной точностью и с двойной точностью? »
Для охвата большего объёма представления чисел, и, следовательно, для повышения точности вычислений. И каким боком это подтверждает не Ваше утверждение?

В частности, на языке C числа с одинарной точностью обозначаются как float, а с двойной точностью как double. »
mrcnn, берите одинарную, двойную:
#include <stdio.h>

main() {
float a, b;
double c, d;

a = 1 / 3;
b = 1 / 3;

if(a == b) {
printf("%s", "a equal b\r\n");
} else {
printf("%s", "a not equal b\r\n");
}

c = 1 / 3;
d = 1 / 3;

if(c == d) {
printf("%s", "c equal d\r\n");
} else {
printf("%s", "c not equal d\r\n");
}

}
берите любую точность (хоть на Fortran'е) — результат будет один и тот же — числа будут равны:
a equal b
c equal d

Любой учебник мат анализа начинается с изложения базовой теории чисел, в том числе вещественных и натуральных. »
И что?

Давно открывали учебник Фихтенгольца или Зорича или Ильина, Позняка ? »
Ни разу. Полагаете, изложенное там как-то поможет Вам доказать, что машинное представление дроби 1/3 в одной ячейке памяти не будет равно машинному представлению дроби 1/3 в другой ячейке памяти? Можете приступать. Я с удовольствием прочитаю Ваше доказательство.

Откройте - узнаете массу нового и интересного практически как в первом классе. »
Сомневаюсь, что найду там что-то новое для себя.

mrcnn, не надо мериться со мной пиписьками. Хотите обосновать своё утверждение — обосновывайте. Доказательно.

mrcnn
01-12-2013, 07:05
]Это в этой программе может сравнение и работать. Но можно нарваться на ситуацию, когда она не сработает. А если оно не сработает, но на вид все будет правильно (и компилятор все съест, и программа будет работать), то в какой-то момент подобная ошибка сравнения может появиться. Ваше рассуждение индуктивное. Вы пытаетесь ОДНИМ примером доказать правильность перевода вывода на весь класс предметов, и в данном случае это ошибочно. Проблему неполной индукции еще никто не отменял. Это у вас сейчас работает, но в целом оно неправильно даже несмотря на то, что временно работает или работает в каких отдельных ситуациях. Ваш пример работает, потому что это временное исключение. Я сталкивался с ситуациями, когда 0 не был равен 0 в простых программах из-за того, что нет бесконечности. Компьютер всегда работает с приближением, поэтому разрабатываются численные методы дифференцирования, интегрирования, решения уравнений и т.д. То есть с непрерывного класса функций, в компьютере все переводится в дискретный класс функции. На теории вероятностей и мат статистике рассматривается и случай непрерывных функций, и случай дискретных функций. Компьютеры являются дискретными устройствами, поэтому вам даже в информации о процессоре Intel i7 пишут, что видеокадаптер встроенный в процессор является дискретным. В комьютере реализуются дискретные функции, потому что нельзя реализовать непрерывные. Нельзя реальный физический мир повторить в комьютере. Есть специальный курс дискретной математики в профессиональных ВУЗах для программистов и инженеров. Реализуя компьютерный алгоритм в программе, вы всегда переводите с непрерывного класса функций на дискретный.
Бесконечности вещественных чисел в компьютере нет. Поэтому на плавающей точке в лоб равенства может не быть. В электронике на физическом уровне инженерами реализована ТОЧНОСТЬ ДО определенного ЭПСИЛОН, а не бесконечность. Я имею в виду инженеров компаний типа Intel, AMD и т.д., которые занимаются созданием чипов.
1/3 переводится к конечному представлению в компьютерах.




© OSzone.net 2001-2012