Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: 1 2 3 [Все]   Вниз
  Печать  
Автор Тема: Научите меня писать словесные алгоритмы программ и блок-схему  (Прочитано 113567 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Diskriptor
Опытный

ua
Offline Offline
Пол: Мужской

« : 26-10-2007 20:04 » 

Здравствуйте  это снова я, у меня такая проблема я уже выучил синтаксис языка С немного С++ основные операторы этих языков. Понял концепцию ООП но проблема в том что я не могу писать программы ну то есть как какие та маленькие на два три действия могу а большие программы не могу, я с начало не мог понять почему, пока не набрел на уроки программирования по С  и VB в частности на урок №9 и понял в чем проблема я не умею составлять словесный алгоритм программы и блок-схему, я понял, что пока я не научусь делать этого я не смогу писать программы. ПРОШУ у вас помощи, что делать для того чтобы развить умения составлять словесный алгоритм программы и потом писать блок-схему вед без этого как я уже говорил нельзя написать большую программу.
Литература по блок-схеме у меня есть, а что такое алгоритм я понимаю это так: Алгоритм это описание действий которые приводят к решению задачи, возможно, я не правильно понимаю что такое алгоритм, в общем ПОМОГИТЕ Помогите!   
Записан

Единственный способ, научится программировать на каком либо языке программирования, это писать на этом языке программы.
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #1 : 27-10-2007 05:19 » 

Diskriptor, посмотри вот эту темку внимательно

https://forum.shelek.ru/index.php/topic,9824.0.html

Начиная с 3ей страницы и дальше как раз будет то, что тебе надо.

https://forum.shelek.ru/index.php/topic,9824.msg140748.html#msg140748
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Diskriptor
Опытный

ua
Offline Offline
Пол: Мужской

« Ответ #2 : 30-10-2007 21:16 » 

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


 Я прочитал до конца все тему по ссылке, что дал Джон и не тока и понял что
у меня такаяже проблема что и у FallenSoul проблема в том что я пропускал второй этап разработки программы тоест:Нема Нема Алгоритмического мышления, пожалуйста помогите его выработать описание словесного алгоритма, простых действий которые приводят к решению поставленной задачи


                                        Этапы разработки любой программы
1. Постановка задачи
2. Алгоритм выполнения программы
3. Реализация программы

1.1Постановка задачи, на этом этапе ставится задача, что должна делат програма Допустим программа Транслит должна переводить веденные слова с клавиатуры с русского на английский

2.1 Алгоритм выполнения программы на этом этапе пишутся одеяльные действия которые приводят к решению поставленной задачи например задача свалить с роботы
начало
проверить наличие шефа
если шефа нет можно сваливать
иначе делай вид что работаешь

если можно сваливать открывай дверь
если дверь закрыта достань ключь, открой замок и открой дверь
иначе открой дверь

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

те я могу записать

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

P.S. Алгоритм взять с топика FallenSoul

3.1 Реализация программы то ест какой язык выбрать для решения поставленной задачи, это не важно поставленную задачу можно решить на любом языке программировании просто одни языки лучше для одних задач а другие для других как сказали дело справочное
В то топики который дал прочитать Джон акцентируется внимание на алгоритмическом мышлении я правильно понял?

P.S.Пожалуйста, наберитесь терпения  когда будите мне помогать.


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


Я хочу сделать так выкладывать домашку на форум то ест задание а потом я его буду решат, так сказать от простого к сложному я не надеюсь на халяву я просто хочу развит в себе алгоритмическое мышление но в какой теми это делать в ПОМОГИТЕ НАУЧИТЬСЯ 3 или в Научите меня писать словесные алгоритмы программ и блок-схему я не знаю посоветуйте, как лудиши заделать пожалуста.
« Последнее редактирование: 28-11-2007 07:13 от RXL » Записан

Единственный способ, научится программировать на каком либо языке программирования, это писать на этом языке программы.
rumpelstilzchen
Тролль
*
ru
Offline Offline

« Ответ #3 : 16-11-2007 11:31 » 

Тут нет ничего сложного. Все дело в ассоциации и реализации этой ассоциации.
Возьми премеры из своей жизни. Чаепитие, к примеру. Разложи его на этапы.
Пример:
       1. Правой рукой взять кружку за ручку.
       2. Левой рукой взять чайник за ручку.
       3. Совместить. Улыбаюсь
Ну я думаю что понятно.
Записан
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #4 : 16-11-2007 12:20 » 

Цитата: night_cat
Тут нет ничего сложного.
Кому как Улыбаюсь Это зависит от навыка мышления, сформировавшегося у человека с детства.

Например:
Цитата: Diskriptor
2.1 Алгоритм выполнения программы на этом этапе пишутся одеяльные действия которые приводят к решению поставленной задачи например задача свалить с роботы
начало
проверить наличие шефа
если шефа нет можно сваливать
иначе делай вид что работаешь

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

Автор сего алгоритма думает по схеме:
1) Обозначить цель.
2) Добиваться её достижения.

При том что в алгоритме, предназначенном для машины, первый пункт отсутствует. Он есть только в голове разработчика, но должен отсутствовать в машинном коде. Хорошо, когда он оформляется в виде комментария, но это не шаг алгоритма.

Вот он пишет:
1) Открывай дверь
2) Если дверь закрыта
2.1) то достань ключ, открой замок и открой дверь.
2.2) иначе открой дверь.

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

P.S. Я пока не касаюсь написания условий и прочих алгоритмических конструкций, которые в приведённом алгоритме также содержат серьёзные логические ошибки. Пока я говорю только о последовательности действий.
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #5 : 16-11-2007 12:24 » 

Немного сложней - с циклом. Управление телевизором.

1. Включить (расписать подробно)

2. Взять пульт

3. Нажать на цифру 1

4. Пока не найду интересную передачу нажимать на "+"

5. Установить громкость (яркость...)

Diskriptor, ты сам можешь придумать кучу заданий из повседневной жизни.
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #6 : 16-11-2007 12:29 » 

Димка, ну ты уж хочешь совсем перфекционизма.

Нельзя сначала открывать дверь, а потом проверять, закрыта она или нет.

Я думаю он хотел сказать - "попытайся открыть дверь" и результат действия "открыть" как раз является проверкой её состояния? Обычно сначала дверь толкают, чтобы выяснить закрыта она или нет? А иначе как? ИМХО - демагогия о нюансах.
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #7 : 16-11-2007 20:07 » 

Цитата: Джон
Я думаю он хотел сказать - "попытайся открыть дверь" и результат действия "открыть" как раз является проверкой её состояния? Обычно сначала дверь толкают, чтобы выяснить закрыта она или нет? А иначе как?
Язык и чёткость мышления - это главное. Выполняется проверка запертости, а не закрытости двери. Это два разных состояния. Дверь может быть:
а) закрыта и заперта,
б) закрыта, но не заперта,
в) открыта и не заперта.

Закрытость двери видна, толкать тут ничего не надо. Толканием проверяется запертость двери. У Diskriptor'а же всё перемешано в кучу: "закрытость" понимается сразу в двух смыслах одновременно, следствием чего является нарушение порядка действий. Странно, что это почему-то не видят.

И выходит всё несколько иначе:
Код:
НАЧ
  ЕСЛИ Дверь закрыта ТО
    НАЧ
      Открыть дверь.
      ЕСЛИ Дверь не открылась ТО
        НАЧ
          Отпереть дверь.
          Открыть дверь.
        КОН
    КОН
КОН

Какие же тут "перфекционизм" и демагогия?
« Последнее редактирование: 16-11-2007 20:13 от dimka » Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #8 : 18-11-2007 23:01 » 

Какие же тут "перфекционизм" и демагогия?

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

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
rumpelstilzchen
Тролль
*
ru
Offline Offline

« Ответ #9 : 19-11-2007 11:35 » 

Вот еще хороший пример:

Ты когда-нибудь ходил босиком по мокрому песку?
Сделай мыслено 8 - 10 шагов.
Остановись.
Сделай в право или влево большой максмальный для тебя шаг с прыжком.
По кругу вернись назад в начало шагов.
Посмотри вниз.
Увидь следы на песке и представь как ты шел.

То как ты шел это реализация ассоциации.
То как ты представил свой ход это ассоциация.
Записан
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #10 : 19-11-2007 12:32 » 

Цитата: Джон
Ну давай ещё тогда введём "запёртость на замок" "запёртость на щеколду", "запёртость на крючок" и кучу других угодных лично тебе определений.
Не я писал про ключ в изначальном варианте. Раз автор ввёл ключ, то и соответствующие состояния нужно выделить. Не было бы ключа, достаточно было бы "закрытости".
Код:
ЕСЛИ Дверь закрыта ТО Открыть дверь.
И больше ничего не надо громоздить.

У него же, получается, первым действием дверь открывается в любом случае, даже когда она открыта изначально. Это я и называю ошибкой в порядке операций. Проверка в любом случае должна предшествовать действию для данного алгоритма.
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Diskriptor
Опытный

ua
Offline Offline
Пол: Мужской

« Ответ #11 : 26-11-2007 22:05 » 

                       
Попробую составит алгоритм

                       
Алгоритм Заварки чая
1.   Взять чайник с стола
2.   Подойти к крану 
3.   Снят крышку с чайника
4.   Открутит кран чтобы побежала вода
5.   Подставит чайник таким образом чтобы  в него попадала вода до нужного уровня
6.   Закрываем кран чтобы вода не текла
7.   Закрываем крышку чайника
8.   Ставим чайник на газовую  плету
9.   Бере коробок со спичками
10.   Открываем коробку со спичками
11.   Берем спичку
12.   Зажигаем спичку
13.   Открываем газовый кран на газовой печки
14.   Подносим загоревшуюся спичку к конфорки таким образом чтобы газовая конфорка загорелась
15.    Ждем пока вода закипела в чайнике
16.    Выключаем газ
17.   Подходим к серванту
18.   Откроем двери серванта
19.   Берем кружку из серванта
20.   Закрываем двери серванта
21.   Подходим к столу
22.   Ставим чашку на стол
23.   Подходим к полке где лежать ложки
24.   Берем маленькую ложку (десертную)
25.   Подходим к столу где стоит кружку
26.    Открываем крышку  сахарницу
27.   Насыпаем сахар в врушку сколько необходима сахара
28.   Открываем упаковку с одноразовом чаем
29.   Берем один одноразовый  пакетик с упаковки с чаям
30.   Ложем его в кружку с сахаром
31.   Подходим к газовой плите берем чайник с закипевшей водой
32.   Подходим у столу где стоить кружка с сахаром и пакетиком одноразазового чая
33.   И заливаем чашку  кипятком из чайника
34.   Размешиваем сахар
35.   Подойти к полки с крышками взять крышку
36.   Накрыт крышкой чтобы чай настоялся
37.   Снимаем крышку
И наконец-то пьём чай
так или не так?
Вот нашел по алгоритмизации (http://pripit.perm.ru/oz/Algor/algoritmika-lesson1.htm) вроде то что надо. Прочетаю урок и задам вопросы.
                         
« Последнее редактирование: 26-11-2007 22:08 от Diskriptor » Записан

Единственный способ, научится программировать на каком либо языке программирования, это писать на этом языке программы.
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #12 : 27-11-2007 04:27 » 

я бы плиту сначала поджигал, а потом чайник ставил Улыбаюсь

и ещё надо инициализировать объекты -
объект "чайник" стоит на столе,
"кружка" стоит на столе,
сахар стоит на полке и т.д.
Записан

Sla
Модератор

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #13 : 27-11-2007 08:53 » 

круто!
в самом начале забыли проверить наличие воды в чайнике Улыбаюсь
Думаю, что такой словесный понос алгоритм:
  не читабелен (к концу уже забываешь что хотели сделать)
 
Задача - выпить чаю.
1. Налить воды
2. Закипятить
3. Заварить
4. Пить.
Надеюсь понятно?
теперь раскрываешь действия
1.1. Взять чайник
1.2. Проверить наличие необходимого количества воды, если воды достаточно - закончить литье воды
1.3. Наливать воду, пока не выполнится условие 1.2.
1.4. Конец налития воды

и т.д.
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #14 : 27-11-2007 11:17 » 

Diskriptor, ещё хочу добавить. Много полемики. Команды должны быть простыми.

>> 1.   Взять чайник с стола

Почему именно со стола? А если он на плите? Ну и тд...

>> 2.   Подойти к крану

В этом случае надо определить условия нахождения возле крана. Иначе программа не знает к какому крану?


>> 3.   Снят крышку с чайника

Обычно если ты определил объект, то работаешь только с ним. Те у тебя не участвуют кастрюли, поэтому уточнение "с чайника" - лишнее

>> 4.   Открутит кран чтобы побежала вода
>> 5.   Подставит чайник таким образом чтобы  в него попадала вода до нужного уровня

Это уже целые подпрограммы с кучей действий и УСЛОВИЙ.

>> 6.   Закрываем кран чтобы вода не текла

Тоже самое. И ещё про что Димка говорил. Почему ты говоришь "чтобы вода не текла"? Ты указываешь цель для действия. Необходимо формулировать условие окончания продолжительного действия или наоборот условия повторения действия.

Примерно так:

п.6 - (начальные условия: чайник под краном, вода течёт)

6. поворачивать вентиль влево до тех пор пока вода течёт.

Те я определил условие "наличие текущей воды". Пока это условие выполняется - ИСТИНА - выполняй действие.

Можно определить другое условие - "вода перестала течь". В этом случае я уже не могу его напрямую его использовать. Но я могу выполнять действие пока это условие НЕ выполнилось.

Сравни вариант

6. поворачивать вентиль влево до тех пор пока вода НЕ перестанет течь.
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #15 : 27-11-2007 12:26 » 

Раз уж в такие подробности вдаваться, то:
Цитата: Diskriptor
14.   Подносим загоревшуюся спичку к конфорки таким образом чтобы газовая конфорка загорелась
15.    Ждем пока вода закипела в чайнике
Полезно также потушить спичку после розжига плиты Улыбаюсь.

Цитата: Diskriptor
26.    Открываем крышку  сахарницу
27.   Насыпаем сахар в врушку сколько необходима сахара
28.   Открываем упаковку с одноразовом чаем
29.   Берем один одноразовый  пакетик с упаковки с чаям
30.   Ложем его в кружку с сахаром
А закрывать кто будет сахарницу и пачку с чаем? Улыбаюсь Вот кран, чайник и газ ты закрыть не забыл.

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

Такие вещи обычно пишутся сразу. Написал
Код:
Открыть
Закрыть
и только потом между ними вставляешь шаги по выполнению работы с ресурсом.
« Последнее редактирование: 27-11-2007 12:31 от dimka » Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #16 : 27-11-2007 12:44 » 

dimka, Улыбаюсь) 5+

Offtopic:
С меня шеф постоянно прикалывается, если получается, что я при нем простые тексты в ворде или ещё где набираю - я даже при простом наборе текста скобки сразу закрываю.
Поставлю в угол.
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #17 : 27-11-2007 15:14 » 

я , кстати, тоже  , даже в простом тексте сначала напишу "()"  , потом шаг назад - и пишу текст , в конце клавишу End (ну или что требуется) Улыбаюсь)
Записан

Diskriptor
Опытный

ua
Offline Offline
Пол: Мужской

« Ответ #18 : 27-11-2007 22:09 » 

Цитата
и ещё надо инициализировать объекты -
объект "чайник" стоит на столе,
"кружка" стоит на столе,
сахар стоит на полке и т.д.
Алексей1153++, Согласен буду так старится делать.
Алексей, а если, например алгоритм сходит за хлебом то тогда как, я дома, а хлеб в магазине та инициализировать объекты.


night_cat,
Цитата
В коде набор функций. Похожих. В результате неоптимизированно. Сделай с шаблонами классов.
Подсказка:
          Создай действие (одно). И объекты действий (по шаблону). Действие оптимизированно должно быть по временным параметрам.
приведи пример для наглядности.


Sla, Согласен, из замечания Алексея состояния чаинка надо было сразу инициализировать чайник стоит на столе пустой так?
Цитата
Задача - выпить чаю.
1. Налить воды
2. Закипятить
3. Заварить
4. Пить.
Надеюсь понятно?
теперь раскрываешь действия
1.1. Взять чайник
1.2. Проверить наличие необходимого количества воды, если воды достаточно - закончить литье воды
1.3. Наливать воду, пока не выполнится условие 1.2.
1.4. Конец налития воды

и т.д.
Sla, Смотри вот ты пишиш
Цитата
1.2. Проверить наличие необходимого количества воды, если воды достаточно - закончить литье воды
Как можно закончит литье если мы его еще не начинали тоесть.Мы на этом итапи всего лишь провераем наличие воды в чайнике, а если в нем воды достаточно, то о каком прекращение лите воды может идти речь если мы его не начинали или я не так понел.


Джон, С замечаниями согласен суд замечания понял хотя поначалу буду ошибется и за не опытности.


dimka,
Цитата
А закрывать кто будет сахарницу и пачку с чаем?  Вот кран, чайник и газ ты закрыть не забыл.
Тоже согласен опядже по не опытности забыл закрыть.
« Последнее редактирование: 28-11-2007 07:11 от RXL » Записан

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

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #19 : 28-11-2007 08:12 » 

Diskriptor, ты не внимательно прочитал мой пункт 1.2
Если в чайнике уже вода есть - закончить лить воду, это также означает, что ее не надо наливать.
Наливание воды - это некий процесс, ни как не связанный с физическими действиями.
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #20 : 28-11-2007 08:32 » 

1.2.1 открыть чайник
1.2.2 если чайник не полон - открыть воду и подставить чайник под струю
1.2.3 пока чайник не полон , выполнять 1.2.3
1.2.4 закрыть воду, если открыта
1.2.5 закрыть чайник
Записан

Sla
Модератор

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #21 : 28-11-2007 10:02 » 

1.2.1 открыть чайник
1.2.2 если чайник не полон
      1.2.2.1 налить воды в чайник - открыть воду и подставить чайник под струю
1.2.3 закрыть чайник

Далее процесс налития воды
ведь воду можно наливать из крана, из бутылки, из ведра и т.д.
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #22 : 28-11-2007 13:15 » 

Цитата: Алексей1153++
1.2.1 открыть чайник
1.2.2 если чайник не полон - открыть воду и подставить чайник под струю
1.2.3 пока чайник не полон , выполнять 1.2.3
1.2.4 закрыть воду, если открыта
1.2.5 закрыть чайник
Сам прочитай, что ты написал Улыбаюсь

Код:
Открыть чайник.
ПОКА НЕ Чайник полон? ТО
 НЦ
  Открыть воду.
  Подставить чайник.
 КЦ
Закрыть воду.
Закрыть чайник.
Ставлю пиво - на второй итерации цикла твой алгоритм завалится Улыбаюсь

Неужели нормально не написать? Подумай, как такие алгоритмы можно рассматривать в качестве "учебно-методического материала" для начинающих?
Код:
НАЧ
 Открыть чайник (1).
 ЕСЛИ НЕ Чайник полон?
 ТО
  НАЧ
   Подставить чайник (2).
   Открыть воду (3).
   ПОКА НЕ Чайник полон?
    НЦ
     Лить воду.
    КЦ
   Закрыть воду (3).
   Убрать чайник (2).
  КОН
 Закрыть чайник (1).
КОН
(Цифрами обозначены пары соответствующих действий по инициализации/закрытию.)
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #23 : 28-11-2007 15:29 » 

dimka, я прочитал, не вижу, где что завалится ? )

Код:
открыть чайник; //1.2.1

if(! чайник полон) //1.2.2
{
 открыть воду и подставить чайник под струю
}

//1.2.3
while(! чайник полон)
{
  //наливается порция воды;
}

if(вода открыта) //1.2.4
{
   закрыть воду;
}

закрыть чайник; //1.2.5
Записан

Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #24 : 28-11-2007 18:59 » 

Алексей1153++, значит померещилось Улыбаюсь
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #25 : 29-11-2007 10:12 » 

Если уж всё-равно перешли к псевдокоду предлагаю использовать объекты

кран.Открыть
если чайник.Полный кран.Закрыть

ну или как-нить так
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #26 : 29-11-2007 10:27 » 

тогда так

кран.Открыть()
если (чайник.Полный()) кран.Закрыть()

Улыбаюсь
Записан

Sla
Модератор

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #27 : 29-11-2007 10:52 » 

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

Объект_наливающий_воду, хм, как это правильно, виртуальные классы, кран, бутылка, ведро, ручей...
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Чудак
Помогающий

ru
Offline Offline
Пол: Мужской

« Ответ #28 : 29-11-2007 11:32 » 

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

- Бригадир, лопата сломалась.
- Выбрось её, и обопрись на кирку.
Sla
Модератор

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #29 : 29-11-2007 11:44 » 

Объемно, но универсально.
Будет достаточно привязать и описать поведение объекта_непосредственно_наливающего_воду
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Sla
Модератор

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #30 : 29-11-2007 11:47 » 

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

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #31 : 29-11-2007 12:00 » 

зачем всё универсалить в этой задаче ? Улыбаюсь Человек поставил цель - написать алгоритм приготовления чая , при чём вода греется на ОГНЕ, а перед этим наливается из КРАНА в ЧАЙНИК
если приспичит, можно объект переписать потом , это не сложно
Записан

Чудак
Помогающий

ru
Offline Offline
Пол: Мужской

« Ответ #32 : 29-11-2007 12:21 » 

Алексей1153++, а по моему нормально. Алгоритм постепенно усложняется, у человека есть пример постепенного усложнения на основе одного действия. В этом случае легче всего отследить вносимые изменения. В конце концов можно взять процесс отваривания куриного яйца и начиная с простого, постепенно усложнить алгоритм, сверяя свои действия с примером заваривания чая. Освоив "кухонные" примеры, человек легко перейдёт на другие.
Записан

- Бригадир, лопата сломалась.
- Выбрось её, и обопрись на кирку.
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #33 : 29-11-2007 15:38 » 

Если уж вы "кран" обобщили до "источника", то давайте и "воду" обобщим до "жидкости", и "чайник" до "ёмкости". Чего мелочиться-то? Улыбаюсь

Код:
ПОКА НЕ Ёмкость.Пуста()
 НЦ
  Жидкость = Источник.Вылить()
  Ёмкость.Налить(Жидкость)
 КЦ

Потом "ёмкость" обобщается до "приёмника", а передаваемая "жидкость" до "передачи" - выходит решение на высших уровнях абстракции. Улыбаюсь
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #34 : 29-11-2007 16:45 » 

вернитесь на землю, человек чаю хочет Отлично Отлично
Записан

Чудак
Помогающий

ru
Offline Offline
Пол: Мужской

« Ответ #35 : 29-11-2007 17:05 » 

Хотите чаю - смотрите выше. Я ФЛУДЕР!!!
Записан

- Бригадир, лопата сломалась.
- Выбрось её, и обопрись на кирку.
Diskriptor
Опытный

ua
Offline Offline
Пол: Мужской

« Ответ #36 : 29-11-2007 23:29 » 

Sla, Не я читал внимательно просто стараюсь мыслит упорядочиными действиями, вот мне и показалось что тут ошибка.
Записан

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

ua
Offline Offline
Пол: Мужской

« Ответ #37 : 29-11-2007 23:44 » 

Цитата
а по моему нормально. Алгоритм постепенно усложняется, у человека есть пример постепенного усложнения на основе одного действия. В этом случае легче всего отследить вносимые изменения. В конце концов можно взять процесс отваривания куриного яйца и начиная с простого, постепенно усложнить алгоритм, сверяя свои действия с примером заваривания чая. Освоив "кухонные" примеры, человек легко перейдёт на другие.

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

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

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #38 : 30-11-2007 07:29 » 

Думаю, что Димка прав. насчет Емкость -Жидкость - Источник
в данной ситуации, хоть и хочется чаю, но чай нужно пить хороший, а еще правильно его заварить.

Ведь после того как налили Жидкость в Емкость, ее нужно нагреть Нагревателем.
Потом - появляется Рецепт
Потом - Процесс пития

Алексей1153++, , получается некий универсальный объект - его переписывать не надо, достаточно переписать/написать другие объекты.

Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #39 : 30-11-2007 10:14 » 

На самомо деле всё гораздо проще. Проблемы возникли исключительно из-за того, что нет точного определения объектов. Вот мы говорим "хотим попить чай". А что такое "чай"? Это вода? Заварка? Чайный лист? Чайный лист в воде? А если в холодной воде?
Мы, подразумевая чай, наливаем спокойно воду в чайник и в какой-то момент начинаем считать её чаем. Мы свободно оперируем прилагательными и наречиями. Словом всем тем, что с точки зрения программы абсолютно неопределённая материя.
Необходимо пользоваться только существительными (объекты) и глаголами (функции).

Поэтому Димка абсолютно прав в том, что надо абстрагироваться. В противном случае надо вводить чёткие определения объектов.

те общий алгоритм:

Источник
Емкость
Нагреватель
Жидкость1
Жидкость2
Компонент
Человек

Жидкость1 = Источник.ДатьЖидкость()

Ёмкость.Получить(Жидкость1)

Нагреватель.Нагреть(Ёмкость)

Ёмкость.Добавить(Компонент)

Жидкость2 = Ёмкость.ДатьЖидкость()

Человек.ПитьЖидкость(Жидкость2)

Получаем программу для приготовления чая, коффе, компота, киселя и тд в зависимости от свойства объекта Компонент.
« Последнее редактирование: 30-11-2007 10:16 от Джон » Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #40 : 30-11-2007 12:07 » 

Цитата: Джон
В противном случае надо вводить чёткие определения объектов.
По секрету скажу, что есть теория нечётких объектов, нечёткого наследования из чего следует нечёткое объектно-ориентированное программирование Улыбаюсь В основе лежит нечёткая логика (fuzzy logic) и теория нечётких множеств.

Цитата: Джон
Получаем программу для приготовления чая, коффе, компота, киселя и тд в зависимости от свойства объекта Компонент.
Даже в АСУ химического производства можно куда-нибудь встроить Улыбаюсь
« Последнее редактирование: 30-11-2007 12:11 от dimka » Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Diskriptor
Опытный

ua
Offline Offline
Пол: Мужской

« Ответ #41 : 03-12-2007 23:18 » 

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

Единственный способ, научится программировать на каком либо языке программирования, это писать на этом языке программы.
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #42 : 04-12-2007 05:49 » 

Дык, теперь твоя очередь. С учётом вышеуказаных замечаний.
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Diskriptor
Опытный

ua
Offline Offline
Пол: Мужской

« Ответ #43 : 05-12-2007 00:01 » 

Хорошо в четверг перепишу вес алгоритм заварки чая, с исправлениями.
Записан

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

ua
Offline Offline
Пол: Мужской

« Ответ #44 : 18-12-2007 02:57 » 

Завтра постараюсь оптимизировать алгоритм заварки чая.
Записан

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

ua
Offline Offline
Пол: Мужской

« Ответ #45 : 19-12-2007 01:05 » 

Цель - выпить чаю
Инициализация объектов
1. Чайник стоить на столе в кухни
2. Кружка в серванте и ложка в тоже серванте
3. Сахар и заварка в стоят на стеле
4.  ложка в  тоже  серванте
5 Спички на столе возле газовой плиты

Действие основные
1. Налить воды
2. Закипятить
3. Набрать воды
3.1 Заварить
4. Пить.

Под пункты
1.1.   Подойти к столу
1.2.   Снять крышку
1.3.   Проверит достаточно ли воды для заварки чая
1.4.   Закрыть крышку
1.5.   Если да то 2.закипятить 3 иначе набрать воды
2.1 Взять чайник со стала
2.2 Подойти к газовой плате
2.3 Поставить на плиту
2.4 Берем коробок со спичками
2.5.   Открываем коробку со спичками
2.6.   Берем спичку
2.7.   Зажигаем спичку
2.8.   Открываем газовый кран на газовой печки
2.9 Зажигаем конфорку
3.1 Взят чайник со стала
3.2 Подойти к крану
3.3 Снять крышку
3.4 Открыть кран
3.5 Набрать воды
3.6 Закрыть крышку
Пока вода нагревается
3.1 1  Подходим к серванту
3.1.2.  Откроем двери серванта
3.1.3 Берем кружку  из серванта  и ложку
3.1.4 Закрываем двери серванта
3.1.5 Подходим к столу
3.1.6   Ставим чашку, ложем ложку  на стол
3.1.7.   Открываем крышку сахарницу
.3.1.8 Насыпаем сахар в крошку сколько необходима сахара
3.1.9 Закрываем крышку сахарницы
3.1.10.   Открываем упаковку с одноразовом чаем
3.1.11 Берем один одноразовый  пакетик с упаковки с чаям
3.1.12 Закрываем пачку с чаем
3.1.13.   Ложем его в кружку с сахаром
3.1.14.   Подходим к газовой плите
  Закрываем конфорку       
 Берем чайник с закипевшей водой
3.1.15   Подходим у столу где стоить кружка с сахаром и пакетиком одноразазового чая
3.1.16.   И заливаем чашку  кипятком из чайника
3.1.17.   Размешиваем сахар
3.1.18   Подойти к полки с крышками взять крышку
3.1.19   Накрыт крышкой чтобы чай настоялся
3.1.20   Снимаем крышку
4. Пем чай

Пока без псевдо кода, какие есть замечания изменение коснулось:
1. Инициолезировал объекты
2. Закрыл сахарницу и пачку чая
3. Разбил на основные и подпункты
4. Постарался убрать не нужные действия
« Последнее редактирование: 19-12-2007 04:46 от Алексей1153++ » Записан

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

ru
Offline Offline
Пол: Мужской

« Ответ #46 : 19-12-2007 03:52 » 

Diskriptor , грамотность алгоритма оставлю судить тем, кто на это не одну собаку съел, а со своей стороны замечу (не в обиду) если будешь писать прогу так же внимательно, как описал алгоритм - багов будет... Следи за тем, на какие клавиши нажимаешь, когда печатаешь. Профи соврать не дадут - одна буква в коде не верная и всё.
Записан

- Бригадир, лопата сломалась.
- Выбрось её, и обопрись на кирку.
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #47 : 19-12-2007 04:45 » 

Diskriptor,  я тебе подсветил ошибки в словах (орфографию не трогал, хотя там тоже косяки есть) - глянь, как пишутся слова

а вообще - для проверки копируй текст в ворд , так даже быстрее запомнишь , как что пишется
« Последнее редактирование: 19-12-2007 04:59 от Алексей1153++ » Записан

Sla
Модератор

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #48 : 19-12-2007 07:21 » 

Наша песня хороша -начинай с начала
Цитата
1. Чайник стоить на столе в кухни
2. Кружка в серванте и ложка в тоже серванте
3. Сахар и заварка в стоят на стеле
4.  ложка в  тоже  серванте
5 Спички на столе возле газовой плиты
Какой-то пункт лишний...
Иправь.
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #49 : 19-12-2007 13:29 » 

Что-то мне подумалось, что блок-схемы - это полезное изобретение для неопытных Улыбаюсь
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Diskriptor
Опытный

ua
Offline Offline
Пол: Мужской

« Ответ #50 : 21-12-2007 01:53 » 

За орфографию простите, буду по внимательней.
Записан

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

ua
Offline Offline
Пол: Мужской

« Ответ #51 : 21-12-2007 01:56 » 

Sla, Четвертый пункт лишний.
Записан

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

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #52 : 21-12-2007 08:49 » 

допустим, с начальными условиями определились

Действие основные
1. Налить воды
2. Закипятить
3. Набрать воды
3.1 Заварить
4. Пить.

Чем отличается Налить от Набрать?
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
sss
Специалист

ru
Offline Offline

« Ответ #53 : 21-12-2007 09:18 » 

Блин, Diskriptor это исскуственный разум, зародившийся в недрах интернет и обучающийся.

Извините насмотрелся Терминатор-3...
Записан

while (8==8)
Вахмурка
Помогающий

ru
Offline Offline
Пол: Мужской
Программист


WWW
« Ответ #54 : 21-12-2007 21:07 » 

Здравствуйте  это снова я, у меня такая проблема я уже выучил синтаксис языка С немного С++ основные операторы этих языков. Понял концепцию ООП но проблема в том что я не могу писать программы ну то есть как какие та маленькие на два три действия могу а большие программы не могу, я с начало не мог понять почему, пока не набрел на уроки программирования по С  и VB в частности на урок №9 и понял в чем проблема я не умею составлять словесный алгоритм программы и блок-схему, я понял, что пока я не научусь делать этого я не смогу писать программы. ПРОШУ у вас помощи, что делать для того чтобы развить умения составлять словесный алгоритм программы и потом писать блок-схему вед без этого как я уже говорил нельзя написать большую программу.
Литература по блок-схеме у меня есть, а что такое алгоритм я понимаю это так: Алгоритм это описание действий которые приводят к решению задачи, возможно, я не правильно понимаю что такое алгоритм, в общем ПОМОГИТЕ Помогите!   


Не очень понятно зачем это надо. В книгах для начинающих очень любят приводить примеры псевдокода, но проблема в том что очень часто процесс перевода задачи в псевдокод имеет сложность сопоставимую с написанием самой программы. Лучше для анализа использовать какие ни быть case – средства. Правда у меня на работе для этого приспособили VISIO, но это у нас у людей такой «уровень».
Записан

Программа – это мысли спрессованные в код.
Diskriptor
Опытный

ua
Offline Offline
Пол: Мужской

« Ответ #55 : 22-12-2007 03:17 » 

Sla, Третий пункт лишний надо было, написать если вода в чайнике есть, то переходим к пункту №2 иначе выполнить пункт №1(не внимательный я)



Записан

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

ua
Offline Offline
Пол: Мужской

« Ответ #56 : 22-12-2007 03:22 » 

Вахмурка, Понятно с псевдо кодом заморачиватся  не буду  лучше в словесном алгоритме пребывать как ты и сказал case, if,else, итд.
Записан

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

ua
Offline Offline
Пол: Мужской

« Ответ #57 : 02-01-2008 15:37 » 

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

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

ru
Offline Offline
Пол: Мужской
Программист


WWW
« Ответ #58 : 03-01-2008 14:29 » 

Алгоритмы везде нужны, только уровень разный. Сравнивать программиста - разработчика с админом это то же самое что сравнивать божий дар с яичницей. Уровень у тех, кто пишет программы и  к этому надо стремится. Просто у нас в Россия так повелось, что почти всех IT гордо называют программистами.
Записан

Программа – это мысли спрессованные в код.
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #59 : 03-01-2008 15:18 » 

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

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Diskriptor
Опытный

ua
Offline Offline
Пол: Мужской

« Ответ #60 : 03-01-2008 18:41 » 

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

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

ua
Offline Offline
Пол: Мужской

« Ответ #61 : 22-01-2008 02:42 » 

Здравствуйте, я так и не могу программировать тесть синтаксис знаю, операторы, а программу написать не могу. Я не смотря на все советы которые мне давали, я их не применял, ну тоесть как я хотел их применять но когда садился за программу то получалось как, я думал что разработка алгоритма займет много времени и я не успею заделать домику и садился топтать клавиатуру в итоги я сейчас не могу зделать никакой домашки по программированию и завалил экзамен по фотошопу и я понял если я сейчас не возмуся за развитие алгоритмического мышления в серез то я не когда не стану админом с хорошим знанием программирования или программистом и я понял что надо заделать.
1.отринуть все знание программирования и начать заново как посоветовала Люсь
Цитата
лучше б начать с теорий информатики, с азов, со словесного...
и привет мир вот , распичатою вот это


Это уроки по АЛГОРИТМИЗАЦИИ
http://www.pripit.perm.ru/oz/Algor/algoritmika-lesson1.htm
http://www.pripit.perm.ru/oz/Algor/algoritmika-lesson2.htm
http://www.pripit.perm.ru/oz/Algor/algoritmika-lesson3.htm
http://www.pripit.perm.ru/oz/Algor/algoritmika-lesson4.htm
http://www.pripit.perm.ru/oz/Algor/algoritmika-lesson5.htm
http://www.pripit.perm.ru/oz/Algor/algoritmika-lesson6.htm
http://www.pripit.perm.ru/oz/Algor/algoritmika-lesson7.htm

2.Забю на домашки по программированию в шаге, ну тоест как на пары ходит буду а домашки делать не буду, чтобы ни критиковали обедню почему я так поступаю это я делаю для того чтобы они на меня не довили что бы я не топтал попусту клавиши пока не выробатую у себя алгоритмическое мышление, я заделаю как посоветовал dimka
Цитата
И только когда ты на небольших примерах научишься писать "правильно", только потом ты сможешь писать "много".
А для этого куплю книгу вот еще не решил какую из двух, Экеля или Лидмана посоветуйте какая лучше для выработки алгоритмического мышления + уроки по алгоритмизации+блок-схема= алгоритмическое мышление я по заварки чая понел как надо составлть алгоритм.
Советы по развитию алгоритмического мышлению и вспомогательной литературе пишите суда буду очень благодарен.
Записан

Единственный способ, научится программировать на каком либо языке программирования, это писать на этом языке программы.
Люсь
Команда клуба

ru
Offline Offline
Пол: Женский

« Ответ #62 : 22-01-2008 04:47 » 

Diskriptor, смешно ты пишешь - книги, вырабатывающие алгоритмическое мышление Улыбаюсь)
Книги тебе только предоставляют информацию, поэтому надо брать такую, которая тебе в данный момент наиболее понятна. А уж вырабатываешь всё, что ты хочешь, только ты сам своим трудом и упорством Улыбаюсь

По поводу ссылок: тебе самому понятно, что там написано? Дерзай!
По поводу книг не могу ничё сказать, такого не читала.
Записан

Посторонним просьба не беспокоить!
-------------------------------------------------
O (I) Rh +
Diskriptor
Опытный

ua
Offline Offline
Пол: Мужской

« Ответ #63 : 22-01-2008 13:12 » 

Люсь, Спасибо упорства у меня много, а насчет алгоритмов это тяжело объяснит, что это такое это я в себе сам осовременим, заметет должен, а насчет книг пусть скажут, кто читал в какой лучше подойдет для этого, что написано по ссылки понимаю что там написано(но первая тема до конца тяжело даетсч) ну не чего и саней разберусь
« Последнее редактирование: 22-01-2008 13:19 от Diskriptor » Записан

Единственный способ, научится программировать на каком либо языке программирования, это писать на этом языке программы.
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #64 : 22-01-2008 18:19 » 

Diskriptor, можно начать со старого школьного учебника по "Основам информатики и вычислительной техники" для старших классов. К сожалению, он у меня есть лишь в бумажном виде ("Основы информатики и вычислительной техники": Проб. учеб. для 10-11 кл. сред. шк./А. Г. Гейн, В. Г. Житомирский, Е. В. Линецкий и др. - М.: Просвещение, 1991 - 254 с.: ил.). Есть и поновее: где-то 1995 года, но у меня такого нет. Рекомендован министерством образования РСФСР, и в педагогическом и учебно-методическом смысле этот учебник выверен - учиться по нему можно; вопрос только, чему, ибо с 1991 года уже много воды утекло.

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

Итак, параграф 2 "Этапы решения задач с помощью ЭВМ"

Цитата
Пусть вам надо решить какую-нибудь задачу, и вы хотите воспользоваться услугами ЭВМ. С чего начать? Прежде всего, нужно разобраться, что дано, что требуется получить, как связаны исходные данные и результаты. Иначе говоря, задача должна быть чётко сформулирована. Такое требованием вам может показаться странным: ведь обычно из формулировки школьной задачи можно однозначно извлечь, что дано, что требуется получить и как связаны исходные данные с результатом (хотя, быть может, не всегда просто это сделать). Однако жизнь постоянно заставляет решать задачи посложнее, чем в школьных учебниках. За примерами далеко ходить не надо.

Допустим, что вы решили в порядке индивидуальной трудовой деятельности организовать бюро по обмену квартир. Ваша задача - для каждой поступившей заявки подобрать вариант обмена (быть может, не один), удовлетворяющий все заинтересованные стороны. Попробуйте сформулировать эту задачу чётко. Сразу возникает много вопросов: какие параметры имеющейся и требуемой жилплощади учитывать в заявке (количество и площадь комнат, их взаимное расположение, площадь кухни и других подсобных помещений, год постройки дома, этаж, наличие лифта и как часто он не работает и так далее)? Принимать ли заявки на съезд и разъезд? Учитывать ли стоимость кооперативной кваритры?.. А не отказаться ли от такой индивидуальной деятельности?

Далее ещё один пример про расписание уроков в школе - пропущу.

Цитата
Этих двух примеров, наверно, достаточно, чтобы понять: постановка задачи - важная часть (иногда говорят - половина) её решения. Чётко сформулировать задачу - это значит высказать те предположения, которые позволят в море информации об изучаемом явлении или объекте выудить исходные данные, определить, что будет служить результатом, и какова связь между исходными данными и результатом. Всё это: предположения, исходные данные, результаты и связи между ними - называют моделью задачи.

Искусство составления моделей как раз и заключается в том, чтобы, не переусложнив модель, учесть в ней всё существенное и отбросить второстепенное. Не в этом ли состоит искусство вообще? Ведь, пожалуй, каждый вид искусства, будь то живопись, скульптура или театр, - это создание моделей жизненных явлений с использованием присущих ему выразительных средств.

Составить хорошую модель задачи - дело непростое. Даже если решать эту задачу предстоит вам самим. А если модель надо будет объяснить компьютеру? В этом случае придётся учитывать "способности" ЭВМ. Если, скажем, ЭВМ "умеет" только вычислять, то, высказывая предположения, нужно позаботиться о том, чтобы исходные данные и результаты были числами, а связи между ними - математическими соотношениями. Выполнив такой "перевод" задачи на язык математики, вы получите модель, которую обычно называют математической моделью.

Вы давно знакомы с математическими моделями, хотя ранее, быть может, и не встречали этого термина. Представьте себе, что нужно определить площадь поверхности письменного стола. Как обычно поступают в таком случае? Измеряют длину и ширину стола, затем перемножают полученные числа. Это фактически означает, что реальный объект - поверхность стола - заменяется абстрактной математической моделью - прямоугольником. Площадь этого прямоугольника и считается искомой.

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

Предположив, что поверхность стола - прямоугольник, мы легко можем указать те данные, которые будут исходными, а также то, что требуется получить (результаты). Ясно, что исходные данные - длины сторон (скажем, a и b), результат - площадь (скажем S). Они связаны соотношением S = ab. Важно отметить, что сделанные предположения позволили "перевести" нашу задачу на язык чисел: и исходные данные, и результат - числа, а соотношение между ними задаётся математической формулой.

Итак, создавая математическую модель задачи, нужно:

1) выделить предположения, на которых будет основана математическая модель;

2) определить, что считать исходными данными и результатами:

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

Эти соотношения, конечно, не всегда выражают результат, как функцию от исходных данных - в примере со столом нам просто повезло: зная a и b, ничего не стоит подсчитать S.

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

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

Далее опять пропускаю пример про полёт Чкалова.

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

ЭВМ могут выполнять алгоритмы без участия человека, автоматически. Но для этого алгоритм должен быть записан в "понятной" для машины форме, т.е. на специальном языке, который называется языком программирования. Алгоритм, записанный на языке программирования, называется программой...

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

Такую уверенность можно обрести, лишь сопоставив результаты расчётов с экспериментальными фактами, теоретическими воззрениями и другой информацией об изучаемом объекте.

При этом может возникнуть необходимость уточнить математическую модель, поскольку выяснится, что при её разработке не были учтены какие-либо существенные свойства объекта... Уточнив модель, исправляют алгоритмы, проводят расчёты на ЭВМ и анализируют результаты. И опять может потребоваться уточнение модели... Так будет продолжаться до тех пор, пока анализ результатов не покажет их приемлемое соответствие знаниям об изучаемом объекте.

Таким образом, в третий этап решения задачи с помощью ЭВМ, помимо написания программы, входит проведение расчётов на ЭВМ и анализ результатов - вычислительный эксперимент. Теперь мы можем изобразить общую схему решения задачи с помощью ЭВМ. Вот как она выглядит:
Код:
Реальная -> Математическая -> Алгоритм -> Программа -> Вычислительный
задача      модель                                     эксперимент
                  ^                                         |
                  +-----------------------------------------+

Задачи для самостоятельной работы

Цитата
1. В комнате, имеющей двери и окна, будет проведён ремонт. Для расчёта потребностей в строительных материалах сделаны следующие предположения:
- пол, потолок, стены  и окна имеют форму прямоугольников;
- дверь имеет форму прямоугольного параллелепипеда;
- батареи центрального отопления, расположенные под окнами, имеют прямоугольную форму.
Выберите из этих предположений те, которые существенны для решения каждой из следующих задач:
а) рассчитать количество мела, необходимое для побелки стен и потолка комнаты;
б) рассчитать количество краски для покраски пола;
в) рассчитать количество обоев для оклейки стен;
г) рассчитать количество древесины, необходимое для изготовления двери.

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

3. По заказу Управления культуры была изготовлена бронзовая статуя девушки с веслом.
Определите те свойства статуи, которые существенны для решения каждой из следующих задач:
а) перевезти статую из мастерской в городской парк;
б) установить статую на площадке парка;
в) увеличить посещаемость городского парка;
г) продать статую с аукциона;
д) переплавить статую.

4. Для каждой из задач 1а - 1г определите исходные данные и результаты. (Обратите внимание, что задачи 1а, 1б, 1г недоопределены, т.е. перечислены не все сведения, существенные для решения этих задач.)

5. Завершите построение математических моделей, начатое при решении задач 1 и 4.

6. Выскажите предположения, существенные для решения следующей задачи. Определите, что будет служить исходными данными, а что - результатом.
Во время ремонта корабля потребовалось заделать пробоину в обшивке. Имеется лист стали. Удастся ли с его помощью заделать пробоину?

7. Через иллюминатор затонувшего корабля требуется вытащить сундук с драгоценностями. Удастся ли это сделать? Составьте математическую модель для решения этой задачи.

Пока так, потом продолжу Улыбаюсь
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Sla
Модератор

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #65 : 22-01-2008 20:11 » 

dimka, к сожалению Diskriptor такого учебника не найдет, думаю их в Украине, днем с огнем искать надо. но наверное, есть и украинские аналоги. Хотя ... если это год выпуска 1991, то возможно где-нибудь наткнуться на библиотечный экземпляр.

но уроки можно продолжить Улыбаюсь
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #66 : 23-01-2008 18:04 » 

Параграф 3 "Пример математической модели"

Цитата
Задача. Тело движется прямолинейно с ускорением a м/с^2 и начальной скоростью v м/с. Требуется определить, какой путь пройдёт тело за T секунд.

Вы знаете ответ к этой задаче:

S = v*T + (a*T^2)/2   (1)

Приведённое соотношение неоднократно проверялось в различных физических экспериментах, в том числе в лабораторных работах по физике. Но, как вы хорошо знаете, всякий физический эксперимент обязательно содержит ошибки измерений. Поэтому совершенно точно формулу (1) проверить экспериментально невозможно. А чтобы вывести её теоретически, на уроках физики, по сути дела, строилась приближённая математическая модель равноускоренного движения (хотя слово "модель", конечно, не употреблялось). Нетрудно убедиться в том, что эта модель основана на следующем допущении (см. учебник физики для 9-го класса):

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

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

Цитата
Руководствуясь схемой, описанной в предыдущем параграфе, определим, что считать исходными данными и результатами нашей модели. Ясно, что исходными данными являются начальная скорость v, ускорение a, время движения T. Результатом, конечно, будет перемещение S.

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

Разобьём интервал времени от 0 до T секунд на N равных частей. Величина каждой части составляет r = T/N секунд. По нашему предположению скорость тела в течение каждого из этих промежутков времени считается постоянной. В течение первых r секунд тело движется с начальной скоростью v(1) = v м/с. На следующем отрезке (от r до 2r секунд) - со скоростью v(2) = v(1) + a*r м/с. В течение третьего промежутка времени скорость будет равна v(3) = v(2) + a*r м/с. Как видите, последовательность v(1), v(2), ... является арифметической прогрессией с первым членом v и разностью d = a*r. Найдём путь, пройденный телом:

S = v(1)*r + v(2)*r + v(3)*r + ... + v(n)*r = (v(1) + v(2) + v(3) + ... + v(n)) * r

Воспользуемся формулой для суммы N членов арифметической прогрессии:

S = ((2*v + d*(N - 1)) * N/2) * r = ((2*v + a*r*(N - 1)) * N/2) * r

Раскрывая скобки и подставляя T/N вместо r, получим:

S = (2*v*N*T + a*(T^2)*(N - 1)) / (2*N) = v*T + a*(T^2)*(N - 1) / (2*N) = (v*T + (a*T^2)/2) - ((a*T^2)/(2*N))

Эта формула и является математическим соотношением, связывающим исходные данные и результат. Построение математической модели закончено. Вы видите, что полученная формула для S отличается от формулы (1) слагаемым - (a*T^2)/(2*N), которое показывает, с какой степенью точности построенная модель описывает равноускоренное движение.

Задания для самостоятельной работы

Цитата
1. Завершите составление математической модели, начатое при решении задачи 6 к предыдущему параграфу.

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

3. Составьте математическую модель для решения следующей задачи.
Плотина прямоугольной формы перегораживает реку. Высота воды по разные стороны от плотины различна. Определите силу давления воды на плотину.

4. Школьник, не знающий теоремы Пифагора, составил следующую математическую модель для определения длины диагонали произвольного прямоугольного стола.
Предположение: поверхность стола считаем прямоугольником; длина диагонали приближённо равна ломаной (лесенке, состоящей из отрезков, параллельных сторонам), если, конечно, ступени у этой ломаной достаточно маленькие; при неограниченном увеличении числа ступенек величина диагонали получается с любой точностью.
Исходные данные: длины сторон стола a и b.
Результат: длина диагонали d.
Связь между исходными данными и результатом: d = a + b (действительно, длина ломаной в точности равна a + b независимо от того, сколько в ней ступенек).
Почему получился неверный результат: диагональ прямоугольника равна сумме его смежных сторон?
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Diskriptor
Опытный

ua
Offline Offline
Пол: Мужской

« Ответ #67 : 23-01-2008 22:35 » 

dimka, Спасибо тебе за уроки распечатаю, прочитаю потом напишу, что разобрался и можно идти дальше еще раз БОЛШОЕ СПАСИБО!
Записан

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

ua
Offline Offline
Пол: Мужской

« Ответ #68 : 24-01-2008 00:42 » 

dimkaКласс! Показываю язык Показываю язык Показываю язык Я ужас, летящий на крыльях ночи
Записан

Единственный способ, научится программировать на каком либо языке программирования, это писать на этом языке программы.
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #69 : 24-01-2008 21:59 » 

Цитата
Когда математическая модель построена, надо приступать к следующему этапу решения задачи на ЭВМ - составлению алгоритма. Что такое алгоритмы, какими общими свойствами они обладают и как они исполняются - обо всём этом рассказывается в данной главе.

Параграф 4 "Понятие алгоритма"

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

Код:
Достать ключ.
Вставить ключ в замочную скважину.
Повернуть ключ 2 раза против часовой стрелки.
Вынуть ключ.

А теперь представьте себе, что вас пригласили в гости. Наверняка вы попросите подробно и точно объяснить, как добраться. Вот как может выглядеть объяснение:

Код:
Выйти из дома.
Повернуть направо.
Пройти 2 квартала до автобусной остановки.
Сесть в автобус № 25, идущий к центру города.
Проехать 3 остановки.
Выйти из автобуса.

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

Код:
Достать ключ.
Повернуть ключ 2 раза против часовой стрелки.
Вставить ключ в замочную скважину.
Вынуть ключ.

Вы, конечно, сможете выполнить и этот алгоритм. Но дверь вряд ли откроется. А что произойдёт, если поменять местами четвёртое и пятое действие во втором алгоритме? Он станет невыполнимым! Итак, мы убедились, что для алгоритма важен не только набор действий, но и то, как они организованы, т.е. в каком порядке выполняются.

Мы можем теперь сказать, что алгоритм - это организованная последовательность действий. Эту формулировку, конечно, нельзя считать определением алгоритма. Например, мы не объяснили, что означают слова "организованная" и "действия". Скажем сразу - абсолютно строгого определения алгоритма мы не дадим. Понятие алгоритма в информатике является фундаментальным. Таким же, какими являются понятия точки, прямой и плоскости в геометрии, пространства и времени в физике, вещества в химии и т.д. Поэтому мы не будем стремиться дать всеобъемлющее определение алгоритма, а будем уточнять смысл этого понятия в последующих параграфах.

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

Вопросы

Цитата
1) Почему нельзя дать строгое определение алгоритма?
2) Какое общее свойство алгоритмов вы можете назвать?

Задания для самостоятельной работы

Цитата
1. Приведите примеры неопределяемых понятий в следующих школьных предметах:
а) литература;
б) русский язык;
в) история;
г) биология.

2. Некий злоумышленник выдал следующий алгоритм за алгоритм получения кипятка:
Код:
Налить в чайник воду.
Открыть кран газовой горелки.
Поставить чайник на плиту.
Ждать, пока вода не закипит.
Поднести спичку к горелке.
Зажечь спичку.
Выключить газ.
Исправьте алгоритм, чтобы предотвратить несчастный случай.

3. Имеются цинк, 96%-ная серная кислота, вода, а также колба и пробирка. Исправьте ошибки в алгоритме получения водорода:
Код:
Поставить колбу на стол.
Налить в колбу кислоту.
Налить в колбу воду.
Собрать выделяющийся газ в пробирку.
Бросить в колбу цинк.

4. Какие действия вы бы добавили, чтобы был выполним следующий алгоритм переправы через Волгу в районе г. Саратова:
Код:
Подойти к реке.
Войти в реку.
Идти по дну, пока не выйдешь на другой берег.

5. Пусть дан отрезок AB. Опрделить, для решения какой задачи предназначен следующий алгоритм:
Код:
Поставить ножку циркуля в точку A.
Установить раствор циркуля равным длине отрезка AB.
Провести окружность.
Поставить ножку циркуля в точку B.
Провести окружность.
Провести прямую через точки пересечения окружностей.

6. Пусть даны действительные числа b, q, и натуральное число n. Какая задача решается с помощью следующего алгоритма?
Код:
Вычислить q^n и обозначить результат буквой C.
Вычислить 1 - C и обозначить результат буквой D.
Вычислить 1 - q и обозначить результат буквой E.
Разделить D на E и обозначить результат буквой F.
Умножить F на b и обозначить результат буквой S.
Сообщить S.

7. Дана фраза на английском языке: "Mike goes to school". Составьте алгоритм перехода от утвердительной формы к вопросительной: "Does Mike go to school?"

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

9. Даны число x и набор действий: разделить полученное число на 3; умножить x на 2; сообщить результат; прибавить к полученному числу 4; вычесть из полученного числа 7.
Составьте из этих действий два различных алгоритма. Любой ли алгоритм, составленный из этих действий, можно выполнить? Укажите две различные функции от x, значения которых вычисляются с помощью алгоритмов, использующих указанные действия.

10. Имеются два кувшина с ёмкостью 3 л и 8 л. Напишите алгоритм, выполняя который можно набрать из реки 7 л воды (разрешается пользоваться только этими кувшинами).

11. (Старинная задача.) Некий человек должен перевезти в лодке через реку волка, козу и капусту. Каждый раз он может перевезти только либо волка, либо козу, либо капусту. На одном берегу нельзя оставить вместе козу и волка, а также козу и капусту. Составьте алгоритм переправы на другой берег. (Эта задача встречается в рукописях VIII века. Уже тогда интересовались алгоритмами!)

12. Разведывательный дозор в составе двух человек подошёл к реке. Мост был разрушен, а река слишком глубока и широка, чтобы переправиться через неё вброд или вплавь. К счастью, около берега в маленькой лодке проплывали два мальчика. Как переправиться на этой лодке через реку, если она может выдержать только либо одного взрослого, либо двух мальчиков?

13. На полустанке одноколейной железной дороги остановился поезд в составе тепловоза и пяти вагонов, доставивший бригаду рабочих для строительства новой ветки. Пока на этом полустанке имеется только небольшой тупик, в котором в случае необходимости может поместиться тепловоз с двумя вагонами или три вагона. Вскоре следом за поездом со строительной бригадой к этому же полустанку подошёл пассажирский поезд. Составьте алгоритм, позволяющий пропустить пассажирский поезд.

Содержание задач: во-первых, декларирует информатику, как универсальную "сервисную" дисциплину, сочетаемую с любыми другими; во-вторых, требует помнить кое-что, чему учили в школе. Кроме того, некоторые задачи нетривиальны.
« Последнее редактирование: 24-01-2008 22:03 от dimka » Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #70 : 25-01-2008 18:26 » 

Параграф 5 "Исполнители алгоритмов"

Цитата
В предыдущем параграфе мы составили несколько алгоритмов и каждый раз предполагали, что исполнять наши алгоритмы будет человек. При этом оказалось, что не все они выполнимы. К счастью, человек далеко не единственный исполнитель алгоритмов. Роботы-манипуляторы и станки с программным управлением, живая клетка и даже животные в цирке исполняют различные алгоритмы, в том числе и те алгоритмы, которые человек выполнить не в силах. Например, алгоритм из задачи 4 из предыдущего параграфа человек исполнить не сможет, но его легко выполнит робот-"подводник". Значит, выполнимость алгоритма зависит от того, какие действия может совершать исполнитель.

Что же такое исполнитель? Упрощённо исполнителя можно представить себе как некоторое устройство управления, соединённое с набором инструментов. Устройство управления понимает алгоритмы и организует их выполнение, командуя соответствующими инструментами. А инструменты производят действия, выполняя команды управляющего устройства. Скажем, если человека рассматривать, как исполнителя алгоритмов, то мозг - его управляющее устройство, а инструменты - руки, ноги, глаза, нос, рот, уши... (продолжите список самостоятельно). У роботов-манипуляторов, станков с программным управлением и ЭВМ управляющее устройство - процессор; что же касается набора инструментов, то он зависит от того, для решения каких задач предназначен тот или иной исполнитель.

Ясно, что как бы ни были разнообразны возможности исполнителя, они всегда ограничены. Иначе для решения любой задачи годился бы один-единственный алгоритм:

Код:
Получить исходные данные.
Найти решение.
Сообщить ответ.

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

Поясним сказанное на примере. Допустим, требуется решить уравнение x^2 - 9*x + 8 = 0. Ученик десятого класса, который хорошо знает, как решать квадратные уравнения, не нуждается в объяснениях. Для него алгоритм решения будет состоять из двух действий:

Код:
Решить уравнение.
Сообщить результат.

Для ученика восьмого класса, который ещё не знает формулу корней квадратного уравнения, придётся написать более длинную инструкцию:

Код:
Вычислить значение выражения 9^2-4*8 (дискриминант уравнения).
Извлечь из полученного числа квадратный корень и обозначить результат буквой p.
Вычислить значение выражения (9+p)/2 и обозначить результат буквой y.
Вычислить значение выражения (9-p)/2 и обозначить результат буквой z.
Сообщить числа y и z.

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

Как правило, набор допустимых действий (т.е. действий, которыми можно пользоваться при решении задачи) в явной или неявной форме указывается в формулировке задачи. Например, в школьных задачах на построение обычно подразумевается, что можно пользоваться только циркулем и линейкой. А иногда ставится задача на построение только циркулем или только линейкой. Таким образом, можно сделать вывод, что различные классы задач требуют различных наборов допустимых действий. Поэтому, чтобы для решения того или иного класса задач можно было применить ЭВМ, необходимо "научить" ЭВМ имитировать нужный набор допустимых действий (можно назвать это имитацией исполнителя с помощью ЭВМ).

Далее по тексту в разных местах идёт описание вспомогательных учебных средств: "Вычислитель", "Чертёжник" и "Робот-манипулятор" - я это пропускаю.

Пока будем считать, что "Вычислитель" обладает тремя допустимыми действиями:

Код:
ЗАПРОСИТЬ <переменная1>[, <переменая2>[, ...[, <переменнаяN>]...]]

СООБЩИТЬ {<переменная1>[, <переменая2>[, ...[, <переменнаяN>]...]]|<строка>}

ПРИСВОИТЬ <переменная> ЗНАЧЕНИЕ <математическое выражение>

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

Далее разбирается понятие переменной (на примере ящиков и лежащих в них табличек) и, в частности, выражения вида
Код:
ПРИСВОИТЬ A ЗНАЧЕНИЕ (A+B)/2
Отличие присваивания от математического равенства. Это я пропускаю. Если надо, потом воспроизведу.

Цитата
Итак, для решения задачи надо выбрать исполнителя и лишь затем составлять алгоритм решения, используя только допустимые действия этого исполнителя. А что требуется от исполнителя составленного нами алгоритма? Только чёткое выполнение каждого действия, входящего в алгоритм. Ему не надо знать, для каких целей предназначается алгоритм (компьютеру "безразлично", управляет он доменным процессом или предсказывает погоду на завтра).

Впрочем, чтобы понять разницу между творцом и исполнителем, необязательно самому сочинять поэму, а потом переписывать её от руки в пяти экземплярах. Достаточно вникнуть в решение задачи 5 из параграфа 4. Выполнить указанный в этой задаче алгоритм не представит никакого труда для любого, умеющего держать в руках циркуль и линейку. А вот придумать алгоритм построения серединного перпендикуляра может лишь существо разумное, владеющее геометрическими знаниями.

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

Один и тот же исполнитель может быть сымитирован на ЭВМ многими способами. При этом содержание действий остаётся неизменным, а их названия могут быть разными. Так, при имитации "Вычислителя" средствами языка Бейсик вместо слов ЗАПРОСИТЬ и СООБЩИТЬ используются английские слова INPUT и PRINT.

Вопросы

Цитата
1) Что такое исполнитель алгоритмов?
2) Что такое допустимые действия исполнителя?
3) Какие действия допустимы для "Вычислителя"?
4) Что означают для "Вычислителя" следующие команды?
а)
Код:
ЗАПРОСИТЬ A, B, C
б)
Код:
СООБЩИТЬ "Спасибо!"
в)
Код:
СООБЩИТЬ A+B
г)
Код:
ПРИСВОИТЬ A ЗНАЧЕНИЕ X+Y-Z
5) Что значит сымитировать исполнителя с помощью ЭВМ?

Задачи для самостоятельной работы

Цитата
1. Исполнитель умеет:
- умножать число на 2;
- увеличивать число на 1.
а) Составьте для этого исполнителя алгоритм получения числа 100 из единицы.
б) Сколько действий в самом коротком из таких алгоритмов?

2. Исполнитель умеет из любой дроби a/b получать любую из дробей (a-b)/b, (a+b)/b и b/a. Как получить из дроби 1/2 дробь 1/4? А как получить 67/91?
Третью задачу на геометрию пропускаю.
Цитата
4. На столе лежат две двухкопеечные монеты и три пятака так, как показано ниже:
Код:
(5)_(2)_(5)_(2)_(5)
Исполнитель может одновременно перемещать две соседние монеты либо в начало или конец цепочки, либо на освободившееся в результате таких перемещений место в середине цепочки. Например, перенеся вторую и третью монеты к правому концу цепочки, он получит такое расположение монет:
Код:
(5)_________(2)_(5)_(2)_(5)
При этом исполнитель не может раздвигать монеты или менять их местами. Составьте для этого исполнителя алгоритм преобразования исходной цепочки монет в следующую цепочку монет:
Код:
(5)_(5)_(5)_(2)_(2)

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

6. Исполнитель умеет заменять в слове одну букву на другую так, чтобы получившееся слово имело смысл. Например
Код:
СЛОН -> СЛОГ
Напишите алгоритм превращения "МУХИ" в "СЛОНА".

7. Какие задачи решит "Вычислитель", выполнив следующие алгоритмы
а)
Код:
ЗАПРОСИТЬ A, D, N
ПРИСВОИТЬ S ЗНАЧЕНИЕ (A+D*(N-1))*N/2
СООБЩИТЬ S
б)
Код:
ЗАПРОСИТЬ B, Q, N
ПРИСВОИТЬ S ЗНАЧЕНИЕ B*(Q^N-1)/(Q-1)
СООБЩИТЬ S

8. Злоумышленник поменял местами действия в алгоритме вычисления среднего арифметического из квадратов трёх чисел, предназначенном для "Вычислителя":
Код:
ПРИСВОИТЬ A ЗНАЧЕНИЕ (A^2+B^2+C^2)/3
ЗАПРОСИТЬ A, B, C
СООБЩИТЬ "Среднее арифметическое квадратов равно"
СООБЩИТЬ A
Восстановите правильный порядок действий.

9. Исправьте следующий алгоритм решения уравнения x^2-2*x-14=0, предназначенный для "Вычислителя":
Код:
ПРИСВОИТЬ D ЗНАЧЕНИЕ 2^2+4*14
ПРИСВОИТЬ P ЗНАЧЕНИЕ КОРЕНЬ(D)
ПРИСВОИТЬ X ЗНАЧЕНИЕ (2+-p)/2
СООБЩИТЬ "Корни уравнения равны"
СООБЩИТЬ первое значение X
СООБЩИТЬ второе значение X
Под +- здесь понимается плюс-минус (2 возможных действия).
Цитата
10. Автомобиль проехал три участка пути разной длины с разными скоростями. Составьте для "Вычислителя" алгоритм нахождения средней скорости автомобиля.

11. Даны длины сторон треугольника.
а) Составьте для "Вычислителя" алгоритм, выполняя который он сначала вычислит (используя действие ПРИСВОИТЬ), а затем сообщит полупериметр треугольника, его площадь и радиус вписанной окружности.
б) Составьте алгоритм решения той же задачи, в котором используются только четыре переменные.
в) Составьте алгоритм решения той же задачи, в котором используются только три переменные.

12. Какими допустимыми действиями вы снабдили бы исполнителя, который будет производить построения с помощью циркуля и линейки?
« Последнее редактирование: 25-01-2008 18:28 от dimka » Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #71 : 26-01-2008 19:47 » 

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

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

Diskriptor, ждём-с.
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Diskriptor
Опытный

ua
Offline Offline
Пол: Мужской

« Ответ #72 : 24-04-2008 23:00 » 

Это еще не все по первой Задачам для самостоятельной проверки
Задача для самостоятельной проверки
Задание №1
В комнате, имеющей двери и окна, будет проведён ремонт. Для расчёта потребностей в строительных материалах сделаны следующие предположения:
- пол, потолок, стены  и окна имеют форму прямоугольников;
- дверь имеет форму прямоугольного параллелепипеда;
- батареи центрального отопления, расположенные под окнами, имеют прямоугольную форму.

Выберите из этих предположений те, которые существенны для решения каждой из следующих задач:


Задача
а) рассчитать количество мела, необходимое для побелки стен и потолка комнаты;
Правленый варианты

1. пол, потолок, стены и окна имеют форму прямоугольников;
2. - батареи центрального отопления, расположенные под окнами, имеют прямоугольную форму;

Задача
б) рассчитать количество краски для покраски пола;
Предположение
1. пол, потолок, стены и окна имеют форму прямоугольников;


Задача
в) рассчитать количество обоев для оклейки стен;

Предположение
1. пол, потолок, стены  и окна имеют форму прямоугольников;
2. - батареи центрального отопления, расположенные под окнами, имеют

Задача
г) рассчитать количество древесины, необходимое для изготовления двери.
Предположение
1. дверь имеет форму прямоугольного параллелепипеда;

Задание №2
2. Выскажите предположения, существенные для решения следующей задачи.
Участок цеха по производству туристского снаряжения выпускает брезентовые палатки. Требуется определить количество брезента, нужное для выполнения участком месячного плана.
1.)   В цехи есть N количество станков
2.)   Эти станки работают с N количество произвадителносьтя в сутки

Задание №3
По заказу Управления культуры была изготовлена бронзовая статуя девушки с веслом.
Определите те свойства статуи, которые существенны для решения каждой из следующих задач:
Задача
а) перевезти статую из мастерской в городской парк;
Свойства
1.Длина
2 Вес

Задача
б) установить статую на площадке парка;
Свойства
1. Вес
2. Диаметр

Задача
в) увеличить посещаемость городского парка;
Свойства
1.) не стандартный дизайн статуи

Задача
г) продать статую с аукциона;
Свойства
1.Материпл из которого она изготовлена
2.Историческое значение
Задача

д) переплавить статую.

Свойства
1.Материпл из которого она изготовлена
2. Вес

Задание №4

4. Для каждой из задач 1а - 1г определите исходные данные и результаты. (Обратите внимание, что задачи 1а, 1б, 1г недоопределены, т.е. перечислены не все сведения, существенные для решения этих задач.)


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


Исходные данные

1.   Стены и потолок имеют форму прямоугольника
2.   Имеются батареи под подаконикам

Результаты
Для того чтобы узнать, сколько надо мела для побелки стен, надо, узнать площадь стен, поскольку мы знаем, что стены имеет форму прямоугольника то, надо замерить длину А и ширину В и А*В и умножить на количество всех стен которые будут белица
в комнате, поскольку в условии не сказано, сколько стен будить белица, надо также отнять площадь батарей, под которыми побелка не будить производится (вероятно)
в итоги получаем. А*В*С (количество стен)-Z(площадь, которую задимають батареи, если они есть у стены, которую мы белим)
Потолок А*В-Z(мест крепления люстры или нескольких )


Задача
б) рассчитать количество краски для покраски пола;
надо замерить длину А и ширину В а потом А* В
Записан

Единственный способ, научится программировать на каком либо языке программирования, это писать на этом языке программы.
Антон (LogRus)
Глобальный модератор

ru
Offline Offline
Пол: Мужской
Внимание! Люблю сахар в кубиках!


WWW
« Ответ #73 : 25-04-2008 04:14 » 

Diskriptor, и чЁ?
Записан

Странно всё это....
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #74 : 25-04-2008 05:32 » 

Например это (и остальные):
Цитата: Diskriptor
б) рассчитать количество краски для покраски пола;
Предположение
1. пол, потолок, стены и окна имеют форму прямоугольников;
странно. Это же не тест, где галочки надо ставить. В частности, здесь какое отношение имеют стены и окна к покраске пола?

Цитата: Diskriptor
1.)   В цехи есть N количество станков
2.)   Эти станки работают с N количество произвадителносьтя в сутки
А почему количество станков равно количеству выпускаемой продукции в сутки? В условии сказано, что это за продукция, тем не менее никаких ответов, учитывающих эту информацию нет. Мало. Ещё раз: это не тест, это задачи на "подумать".

Цитата: Diskriptor
Для того чтобы узнать, сколько надо мела для побелки стен, надо, узнать площадь стен, поскольку мы знаем, что стены имеет форму прямоугольника то, надо замерить длину А и ширину В и А*В и умножить на количество всех стен которые будут белица
С чего это? Такое умножение возможно, когда стены имеют одинаковые высоту и длину, а в подавляющем большинстве случаев это не так.

Цитата: Diskriptor
в комнате, поскольку в условии не сказано, сколько стен будить белица, надо также отнять площадь батарей, под которыми побелка не будить производится (вероятно)
в итоги получаем. А*В*С (количество стен)-Z(площадь, которую задимають батареи, если они есть у стены, которую мы белим)
Потолок А*В-Z(мест крепления люстры или нескольких )
А окна и дверной проём тоже белить будем?
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Страниц: 1 2 3 [Все]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines