PDA

Просмотр полной версии : Блок схема.


Ch3ck
18.04.2009, 20:54
Мужики вери нид хэлп(выручайте короче:))...
Завтра нужно сдавать курсовик, а эти блок-схемы вообще забыл как рисовать...
Вот постановка задачи:

Написать программу, которая открывает текстовый файл-список, содержащий имена файлов по одному на строке. Программа подсчитывает количество предложений во всех файлах и выводит предложения в другой файл по одному на строке в порядке уменьшения длины.

Вот сам код:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <windows.h>

char *filename;
char *tmp_str;
char *result_str;
FILE *open_f;
FILE *result_f;
char **str_array;
int i, j, count, ind, max, length, jlen;
FILE *file_list;
FILE *result;
char list_path[256];

void rus (char*src)
{
char dst[256];
CharToOem(src,dst);
printf("%s\n", dst);
}

int main(int argc, char *argv[])
{
filename = (char*)malloc(256);
tmp_str = (char*)malloc(1024);
result_str = (char*)malloc(1024);
str_array = (char**)malloc(8192);
i = 0; j=0; count = 0;

rus("Введите имя файла содержащего пути к другим файлам:");
scanf("%s", list_path);
file_list = fopen(list_path, "r");
if(!file_list)
{
perror("Error opening file\n");
return -1;
}
while(!feof(file_list))
{
fscanf(file_list, "%s\n", filename); // \n - to avoid the new line symbol
printf("Opening %s\n", filename);
open_f = fopen(filename, "r");
if(!open_f)
{
perror("Error opening file\n");
return -1;
}

//read files by word
//strcat combines words to expressions
strcpy(result_str,""); //clear string
while(!feof(open_f))
{
fscanf(open_f, "%s", tmp_str);
if((strchr(tmp_str,'.') == NULL) && (strchr(tmp_str,'!') == NULL) && (strchr(tmp_str,'?') == NULL))
{
strcat(result_str, tmp_str);
strcat(result_str, " ");
continue;
}
else
{
strcat(result_str, tmp_str);
}
str_array[i] = (char*)malloc(strlen(result_str));
strcpy(str_array[i++], result_str);
strcpy(result_str,""); //clear string
}
fclose(open_f);


}
fclose(file_list);
count = i;

for(j=0;j<count;j++)
rus(str_array[j]);
printf("\n\n\n\n");

for(i=0;i<count;i++)
{
ind = i; length = strlen(str_array[i]); max =0;

for(j=i+1;j<count;j++)
{
jlen = strlen(str_array[j]);
if(jlen > length && jlen > max)
{
ind = j;
max = jlen;
}
}

if(ind != i)
{
strcpy(tmp_str, str_array[ind]);
strcpy(str_array[ind], str_array[i]);
strcpy(str_array[i], tmp_str);
}
}

for(j=0;j<count;j++)
rus(str_array[j]);

rus("Запись в результирующий файл");

result = fopen("result_file.txt","w");
for(j=0;j<count;j++)
{
fprintf(result, "%s\n", str_array[j]);
free(str_array[j]);
}
fclose(result);

return 0;
}

Помогайте рисовать...

оlbaneс
18.04.2009, 21:12
оффтоп, конечно же, но не смог удержаться. при написании кода для большего понимания сначала рисуется схема, а потом уже сам код.

Ch3ck
18.04.2009, 21:15
Это только в книжках так пишут...
Ну может кто-то знает...

Qwazar
18.04.2009, 22:08
оффтоп, конечно же, но не смог удержаться. при написании кода для большего понимания сначала рисуется схема, а потом уже сам код. Ещё один оффтоп - Блок-схемы никто никогда и нигде не рисует, не считая придурошных преподов заставляющих это делать несчастных студентов.

оlbaneс
18.04.2009, 22:15
ну может не блок-схема, но на бумажке я иногда рисую что куда должно обращаться.
бывает сел писать и по ходу пьесы запутался как хотел исполнить.

gold-goblin
18.04.2009, 22:37
2 Ch3сk Ну сначала обьявляем перменные в паралеллограме, потом условия в прямоугольнике ну и вывод)
ээ переменные в прямоугольнике, в ромбе if, начало что-то типа овала тагже как и конец

kfor
18.04.2009, 22:45
http://ru.wikipedia.org/wiki/Блок-схема

.ATK
18.04.2009, 22:48
Ещё один оффтоп - Блок-схемы никто никогда и нигде не рисует, не считая придурошных преподов заставляющих это делать несчастных студентов.

))ппц, в крупных компаниях их рисуют чувак...

Ch3ck
18.04.2009, 22:49
kfor... меня удивляют такие люди как ты (не в обиду...)
Я попросил добрых людей нарисовать...

kfor
18.04.2009, 23:03
Нарисовать что? По твоей проге блоксхему?
Ты написал что подзабыл как рисовать, а не ясно попросил что бы люди тебе нарисовали.

Ch3ck
18.04.2009, 23:49
Просил и прошу, чтобы нарисовали...

Qwazar
19.04.2009, 03:38
))ппц, в крупных компаниях их рисуют чувак... Чувак, я знаю о чём говорю.

SmanxX1
19.04.2009, 11:50
Чувак, я знаю о чём говорю.
Да больше похоже, что ты нифига не знаешь.
Блок-схемы часто используются, т.к. это один из этапов проектирования крупного ПО.

Qwazar
19.04.2009, 12:15
Да больше похоже, что ты нифига не знаешь.
Блок-схемы часто используются, т.к. это один из этапов проектирования крупного ПО.

Что ещё интересного расскажешь? :D

Ладно отвечу по серъёзному :) За свои 5 лет работы программистом в компаниях (фриланс и мини-конторы не считаю) я ни разу не видел чтобы кто нибудь рисовал блок-схемы. Почему?

1) Потому что они неудобны и излишне детализированы. А разработка - процесс динамичный, и программы постоянно меняются.
2) Заточены под процедурный подход, а сейчас какбы и подход к программированию меняется.
3) Их рисование заняло бы больше времени чем разработка самой программы, к тому-же п. 1 - программы меняются, и каждое изменение надо было бы ещё отображать в блок-схеме. А современное программирование направлено на получение прибыли, т.е. лишнее время тратить никто не любит и не будет.

В наше время во многих компаниях используются UML, но он на блок-схемы не похож. И тоже используется во многих компаниях только на этапе написания документации. (Видел только на одном проекте, да и то - требования заказчика). У UML кстати таже проблема - диаграммы надо всегда перерисовывать.

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

SmanxX1
19.04.2009, 12:19
Что ещё интересного расскажешь? :D
Ничего.
Хотя, может быть ты когда-нибудь закончишь школу и таки устроишься уборщиком в нормальную компанию, где глядя через спины сидящих программеров, ты увидишь, что все-таки блок-схемы используютcя. xD

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

Qwazar
19.04.2009, 12:51
Именно! Но на UML, трудно показать показать действие какого-либо алгоритма, точнее не трудно, а менее инфомативно, скажем так, поэтому в отдельных случаях используются блок-схемы. Не именно, на UML вообще показывают не то, что пытаются показать блок-схемами в школах. UML используют для изображения архитектуры. Блок-схемы для рисования какой нибудь конкретной процедуры.

И:

1) За 5 лет я блок схемы не видел ни разу, ни в России ни за рубежом.
2) При поиске гуглом слова "блок-схема" ссылки только на школы, вузы и учебные языки а-ля Pascal, C++ Builder.

P.S.
Комментарий про школьника прошу убрать.

SmanxX1
19.04.2009, 14:50
Именно! Но на UML, трудно показать показать действие какого-либо алгоритма
Не именно, на UML вообще показывают не то, что пытаются показать блок-схемами в школах. UML используют для изображения архитектуры.
Я тебя не понимаю, честно. -/
Ты сам себе противоречишь.
Блок-схемы для рисования какой нибудь конкретной процедуры.
Не обязательно.

1) За 5 лет я блок схемы не видел ни разу, ни в России ни за рубежом.
Да что ты заладил?! Раз не видел, значит не довелось еще.
В теме сказали, что они используются в "крупных" компаниях, я тоже поддерживаю это утверждение, а раз так, то очевидно с ними приходилось сталкиваться. Не просто так(из головы) же это написали. ;)

П.С. Предлагаю прекратить этот оффтоп.

Ch3ck
19.04.2009, 15:22
П.С. Предлагаю прекратить этот оффтоп.
И нарисовать мне схему... :)

slesh
19.04.2009, 15:35
2 Qwazar Как говорила моя преподша по програмированию - Блок схема - это голубиный(или птичий) язык. Блоксхема работы бота :-D :-D
А вообще я видел года 4 назад даже спец прожку для составления блок схем. Так что блок схемы еще живы и будут жить, пока будут жить совдеповские преподы и учебники по которым этому учат.

Qwazar
19.04.2009, 15:37
Да что ты заладил?! Раз не видел, значит не довелось еще. Разницу между архитекутрой приложения, и конкретным алгоритмом реализованым в процедуре чувствуешь? (со всеми условными операторами, вызовами, объявлениями переменных, где после каждого CR и BF надо всё перерисовывать нафиг) В теме сказали, что они используются в "крупных" компаниях, я тоже поддерживаю это утверждение, а раз так, то очевидно с ними приходилось сталкиваться. Мне приходилось. Их там не используют. Почему, я написал выше + то что можно реализовать в блок-схеме - проще просто закодить, а иначе это не блок-схема, а взрыв на макаронной фабрике.

Forcer
19.04.2009, 18:18
SmanxX1
Зря ты так на Qwazar'a. Достаточно адекватный и уважаемый человек, если не считать того что оскарбления впринципе запрещены. Ну тебе в репе впринципе все сказали :)

В наше время во многих компаниях используются UML, но он на блок-схемы не похож. И тоже используется во многих компаниях только на этапе написания документации. (Видел только на одном проекте, да и то - требования заказчика). У UML кстати таже проблема - диаграммы надо всегда перерисовывать.
Ну так не везде на самом деле. У нас, например, активно используются диаграммы классов, последовательностей. Пишутся спецификации и рисуются диаграммы аналитикам, а потом передаются разработчикам. Если что, на моем проекте человек 100-120 работает(всего в фирме около 900) и у фирмы SW-CMM Level 3.

ну может не блок-схема, но на бумажке я иногда рисую что куда должно обращаться.
Да, так многие делают, в том числе и я.

Ch3ck
Извини за такой оффтоп).
Тоже пришла мысль попробовать что-то автоматическое найти.

Ch3ck
19.04.2009, 19:10
Пробовал программы для автоматического построения(fceditor - который пишет Lexical error, Code Visual to Flowchart - создаёт все блоки схемы прямоугольными...и вообще какую-то хню. хотя...) (про 3-ю программу... не помню названия... начинается на auto по-моему)

SmanxX1
19.04.2009, 19:45
Qwazar
Опять читаешь между строчек...
Ну да ладно, больше не собираюсь ничего объяснять.

Ну тебе в репе впринципе все сказали
Репа ничего не значит, особенно на этом форуме. ;)
Минусы поставили какое-то ламье, которое вообще не в теме(во всех смыслах). xD

St0nX
19.04.2009, 20:41
http://fmi.asf.ru/library/book/Gost/19-002-80-82.html

Alex056
24.04.2009, 22:22
Помогите кто может!!!
№1 Вычислить все значения функции ф=корень из x квадрат + y квадратесли х и у это значения элементов массива х(n) и у(m)
№2 определить количество положительных и отрицательных элементов в массиве х(n)
№3 в массиве A(n,m) определить:
а)максимальный и минимальный элементы
б)номер последнего отрицательного
в)заменить последний отрицательный элемент на минимальный
№4в массиве A(n,m) найти разность между суммой элементов во 2 строке и суммой элементов в 5 столбце.
Пожалуста!!! Просто очень нужно!

De-visible
25.04.2009, 07:38
ЗЫ: За 50 - 70, баксов сделаю все за полтора часа.
Чек не воспринимай все близко к сердцу), но я серьезно)

Harry Potter
25.04.2009, 14:31
Ещё один оффтоп - Блок-схемы никто никогда и нигде не рисует, не считая придурошных преподов заставляющих это делать несчастных студентов.
Блок схемы являются клевым моментом при разработке программного обеспечения. Это заставляет разработчиков мыслить шире. Разделяя проект на части, условно зависимыми друг от друга. Данная техника облегчает весь процесс разработки.

De-visible
28.04.2009, 22:56
Блок схемы являются клевым моментом при разработке программного обеспечения. Это заставляет разработчиков мыслить шире. Разделяя проект на части, условно зависимыми друг от друга. Данная техника облегчает весь процесс разработки.
Блок схема у программиста, при выполнении задачи, строится в голове...

Qwazar
04.05.2009, 12:51
Вернусь к старой теме (подтверждая то о чём постом выше писал De-visible), хочу привести цитату одного из известных архитекторов/ПМ:

- ... Вот тебе свежая, актуальная диаграмма. Какой смысл тратить усилия на
документирование того, что устаревает за год, и может быть в любой момент восстановлено за пару минут? Если она тебе сильно поможет, я сейчас ее тебе распечатаю. Распечатать?
- Да нет, пожалуй, - задумчиво отвечает коллега, рассматривая диаграмму. Ясности она не добавляла.
- Вот. Диаграммы не стоят ничего, ценны мыслительные процессы, происходящие у тебя в голове в процессе их составления. Поэтому я и говорю: код – лучшая документация. Читай код.

Всем кому интересно, рекомендую почитать: http://gaperton.livejournal.com/32772.html

procedure
04.05.2009, 15:18
Отойдя от темы блок схем, хотелось бы с вами поговорить на тему как такового процесса создания приложений. Представим что перед нами стоит задача, создать интерактивное веб приложение, которое будет осуществлять мониторинг действий пользователей данного веб приложения. При просмотре мультимедийных материалов приложение должно фиксировать факт данного события и дополнительные параметры.

Представим что все описанное выше является техническим заданием. В соответствии со стратегией проектирования интерактивных клиент-серверных приложений, проектировочная комманда придерживающиеся правил SSD (Solution Deployment Descriptor)
(SDD) is a standard XML-based schema defining a standardized way to express software installation characteristics required for lifecycle management in a multi-platform environment. в первую очередь приступит к реализации концептуального проектирования (в стадии разработки которого входит: анализ требований клиента, бизнес-сценарий реализующий мост между клиентом и разработчиком). Вот на этом моменте мы и вернемся к теме блок-схем. В соответствии со стандартом SSD в бизнес-сценарий входят из множества эти 2 пункта:
- блок-схема нахождения оборудования (не обязательно)
- блок-схема поочередного выполнения бизнес-процессов
В соответствии с этим, можно сделать вывод:

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

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

Qwazar если ты до сих пор думаешь о блок-схемах так же как раньше. То мне тебя жаль и спор продолжать в теме не буду.

Qwazar
04.05.2009, 18:48
procedure, ты тёплое с мягким не путай. Я говорил о блок-схемах в том ключе, в котором началася этот топик. А ты пишешь о бизнес-процессах.

procedure
04.05.2009, 18:57
Уважаемый, это ты что перепутал.
Блок-схемы никто никогда и нигде не рисует, не считая придурошных преподов заставляющих это делать несчастных студентов.
Бизнес-процесс неотъемлемая часть любого серьезного приложения. Именно в блок-схемах/документированном виде/и.т.д. проектировочная комманда осуществляет представление разработчикам.

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

Qwazar
04.05.2009, 19:07
procedure, прошу не лицемерить, я видел твой коммент у меня в репке.

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

procedure
04.05.2009, 19:17
procedure, прошу не лицемерить, я видел твой коммент у меня в репке.
Вот тут ты проявил свою внимательность получше. Жаль, что не там где надо.

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

p.s. читай SDD и не спорь на банальные вещи. Тем более со мной не советую на подобные темы спорить. Я этому посвятил достаточно времени, чтобы быть уверенным в своих словах.

Qwazar
04.05.2009, 19:22
procedure, блин, ну спасибо что объяснил мне, как работают команды программистов. Если ты всё таки почитаешь всё то, что написано выше, у тебя есть шанс понять, что речь идёт не о использовании блок-схем в бизнес процессах, а об использовании блок-схем при разработке.

procedure
04.05.2009, 19:29
Qwazar я не знаю это идиоту понятно. Но тебе нет.

Бизнес-процессы являются частью концептуальной разработки! Что непосредственно является частью разработки приложений.

Qwazar ты лошара какой то, какой из тебя разработчик. Я уже который раз замечаю за тобой такие тупые прогоны. Пытаешься показать себя за умника "Блок-схемы - это фигня" не зная таких простых вещей как концептуальная разработка.

Qwazar
04.05.2009, 19:35
procedure, ладно, объясняю как ребёнку: Ты говоришь о проектировании и о планировании, я говорю об последнем этапе, когда сидит один конкретный программист и пишет конкретный функционал. Вот на этом этапе никто не рисует блок-схемы, и если бы ты прочитал первые посты темы, то понял бы что речь как раз об этих блок схемах и идёт. И если бы ты постарался понять что я писал выше, то понял бы что я утверждаю, что эти блок-схемы никто не рисует, т.к. гораздо быстрее написать всё в коде, после обдумывания. Слишком мелкий уровень для рисования формальных диаграмм.

А ты переводишь тему и талдычишь о проектировании/планировании не переставая.

procedure
04.05.2009, 19:42
Ты говоришь о проектировании и о планировании
Я говорю непосредственно о всех этапах разработки в целом.
Слишком мелкий уровень для рисования формальных диаграмм.
Ты выше писал, что никто не рисует блок-схемы кроме "придурошных" преподов и студентов. Сейчас ты намекаешь, что на крупных проектах рисуют. Так если рисуют, то эта была бы неплохая практика для ТС. И соответственно твой совет был не правильным.
я говорю об последнем этапе, когда сидит один конкретный программист и пишет конкретный функционал
А этот функционал он берет не из головы, а из блок-схем/документации.
Один программист? wtf?
Вот на этом этапе никто не рисует блок-схемы
Значит на других рисуют?
Ну а на*** тебе нужно было говорить что блок-схемы не нужны?

Qwazar
04.05.2009, 19:47
А этот функционал он берет не из головы, а из блок-схем/документации.
Один программист? wtf? Не ну может ты знаешь конторы, где тебе вплоть до if then else нарисованные картинки выдают. Я писал выше что я не имею в виду диаграммы классов, компонентов и т.п.

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

procedure
04.05.2009, 19:59
Я не буду с тобой продолжать разговор потому что ты дурак.
Я видел кучу компаний, которые даже веб приложения, mvc часть описывают в блок-схемах. Я уже сказал, мне таких людей как ты жаль.

De-visible
04.05.2009, 21:58
Один говорил о кислом, другой о длинном, и получается спор в пустую...

geezer.code
05.05.2009, 01:24
а еще для представления кодеса есть Диаграммы Насси - Шнейдермана, но про них тут почемуто не вспомнили.