Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Pascal] Файлы и динамические списки, ВА, вызывавшиеся более одного раза 
:(
    Опции темы
KasMP
Дата 7.5.2008, 18:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Завсегдатай
Сообщений: 586
Регистрация: 8.8.2006

Репутация: 1
Всего: 30



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

Интересная задачка smile .

Я так понимаю, вся соль в том, что, например, у if есть веточки then и else (у case еще больше возможных веточек, но сути это не меняет) и, следовательно, будут использованы ВА, содержащиеся только в одной ветви каждой развилки; также могут быть циклы while, не выполнившиеся ни разу; еще некоторые ВА могут содержать в себе вызовы других ВА (но это нам узнать не удасться, т.к. самого модуля у нас нет -> придется не обращать на это внимание).

Есть еще какие-то подобные случаи? И при чем тут динамические списки smile ?

P.S.. Вообще я поздно узнала об этой задачке, сдавать мне ее уже не светит (вместо нее дали какую-то фигню в два счета!).
Но внутренняя сущность очень хочет найти решение smile . Давайте сделаем это вместе smile . Буду благодарна за участие smile .

Это сообщение отредактировал(а) Rodman - 10.5.2008, 22:08
PM MAIL   Вверх
Akina
Дата 10.5.2008, 22:05 (ссылка)   | (голосов:4) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 17
Всего: 454



Это с каких это пор If/Case стали циклами? Циклы - это For/Do (While - частный случай Do).


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
KasMP
Дата 10.5.2008, 23:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Завсегдатай
Сообщений: 586
Регистрация: 8.8.2006

Репутация: 1
Всего: 30



Akina, я это прекрасно понимаю!!! Я ни в коем разе не говорила, что if/case - циклы.

Про if/case я говорила к тому, что возможна такая ситуация:
Код

if <условие1> then
    begin
    ...
    ВА1
    ...
    if <условие2> then
        begin
        ...
        ВА2
        ...
        end
      else
        begin
        ...
        ВА1
        ...
        end;
    ...
    ВА2
    ...
    end
  else
    begin
    ...
    ВА1
    ...
    end;

Условие1 верно, условие2 верно: ВА1 - 1 раз, ВА2 - 2 раза;
Условие1 верно, условие2 неверно: ВА1 - 2 раза, ВА2 - 1 раз;
Условие 1 неверно: ВА1 - 1 раз, ВА2 - 0 раз.

Т.е. условия пришли мне в голову всвязи с тем, что на каждой развилки будут использованы ВА, содержащиеся только в одной из ветвей; а развилки могут иметь подразвилки...
Пожалуйста, читайте внимательнее.

 smile  smile 
PM MAIL   Вверх
KasMP
Дата 12.5.2008, 14:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Завсегдатай
Сообщений: 586
Регистрация: 8.8.2006

Репутация: 1
Всего: 30



up
PM MAIL   Вверх
Akina
Дата 12.5.2008, 14:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 17
Всего: 454



Цитата(KasMP @  11.5.2008,  00:07 Найти цитируемый пост)
Пожалуйста, читайте внимательнее.

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


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
KasMP
Дата 12.5.2008, 14:52 (ссылка) |  (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Завсегдатай
Сообщений: 586
Регистрация: 8.8.2006

Репутация: 1
Всего: 30



Задание этого предполагать не может хотя бы потому, что тогда его сложность будет значительно ниже сложности задачек, обычно даваемых этим преподавателем (да и динамический список будет плохо увязываться с алгоритмом).
Цитата(Akina @  12.5.2008,  14:34 Найти цитируемый пост)
На самом деле Вы бы прекратили мудрить, а?

Может вы и побольше меня понимаете в задачках, но при этом все-таки остаетесь человеком, как и я. Никто не давал одному человеку права разговаривать в таком тоне с другим.
Пожалуйста, не надо так делать.
PM MAIL   Вверх
skyboy
Дата 27.5.2008, 01:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 5
Всего: 260



Цитата(KasMP @  12.5.2008,  13:52 Найти цитируемый пост)
Задание этого предполагать не может хотя бы потому, что тогда его сложность будет значительно ниже сложности задачек

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

.*\(.*?\)

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

function\s*.*\(.*?\)

вызовом не считается.
Цитата(KasMP @  12.5.2008,  13:52 Найти цитируемый пост)
Никто не давал одному человеку права разговаривать в таком тоне с другим.

не заводись, не надо.
абсолютно никто здесь не пытается тебе нагрубить. Akina справдливо, хотя, возможно, и резковато, заметил, что ты сама себе усложняешь задачу, делая е` практически невозможной smile ну, по крайней мере, в данном случае. 
не надо считать, что "простые" задачи унижают твое достоинство.
надо просто решить - и все smile
PM MAIL   Вверх
KasMP
Дата 28.5.2008, 14:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Завсегдатай
Сообщений: 586
Регистрация: 8.8.2006

Репутация: 1
Всего: 30



Женя, привет smile  smile !
Спасибо больше за хороший ответ smile, ты как всегда на высоте smile : и по теме написал, и почему так получается пояснил, и психологию "поправил" smile , и все это одновременно мягко и точно smile !

Пока отложу задачку до конца сессии smile . Потом решу smile  smile .
PM MAIL   Вверх
skyboy
Дата 28.5.2008, 16:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 5
Всего: 260



кстати, насчет корректности условия.
вот у нас есть функция без параметров.
Код

somefunction;

как определить, что это - функция, если у нас нет текста объявления этой функции? а если это переменная? 
потому 
- либо надо добавить условие: вызов функции без параметров все равно должна сопровождаться "()"
- либо надо условиться не учитывать такие "сокращенные варианты" вызова
иначе - без (практически)компиляции не определишь(надо взять все uses и найти все объявленные функции и переменные-функции). не думаю, что вам ставили задачу написать полноценный лексический + синтаксический анализатор smile
PM MAIL   Вверх
KasMP
Дата 30.5.2008, 20:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Завсегдатай
Сообщений: 586
Регистрация: 8.8.2006

Репутация: 1
Всего: 30



skyboy, продумаем все эти моменты (пока мы хотя бы разобрались с заданием smile ).
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.1270 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.