DRAKON.SU

Текущее время: Четверг, 28 Март, 2024 15:18

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
СообщениеДобавлено: Воскресенье, 31 Март, 2019 18:45 
Аватара пользователя

Зарегистрирован: Воскресенье, 31 Март, 2019 02:55
Сообщения: 39
Откуда: Саратов, РСФСР, Советский Союз
Здравствуйте,

Недавно нашёл такой пример для начинающих Java программистов: https://habr.com/ru/post/441150/

Хочу понять, как можно упростить код, чтобы он был пригоден для DRAKON-блок-схем.

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

Мои первые наброски: https://drakonhub.com/ide/doc/8observer8/7

Код:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.nio.charset.StandardCharsets;

public class HttpServer {

    public static void main(String[] args) {
        try (ServerSocket serverSocket = new ServerSocket(8080)) {
            System.out.println("Server started!");
           
            while (true) {
                // ожидаем подключения
                Socket socket = serverSocket.accept();
                System.out.println("Client connected!");

                // для подключившегося клиента открываем потоки
                // чтения и записи
                try (BufferedReader input = new BufferedReader(new InputStreamReader(socket.getInputStream(), StandardCharsets.UTF_8));
                     PrintWriter output = new PrintWriter(socket.getOutputStream())) {

                    // ждем первой строки запроса
                    while (!input.ready()) ;

                    // считываем и печатаем все что было отправлено клиентом
                    System.out.println();
                    while (input.ready()) {
                        System.out.println(input.readLine());
                    }

                    // отправляем ответ
                    output.println("HTTP/1.1 200 OK");
                    output.println("Content-Type: text/html; charset=utf-8");
                    output.println();
                    output.println("<p>Привет всем!</p>");
                    output.flush();
                   
                    // по окончанию выполнения блока try-with-resources потоки,
                    // а вместе с ними и соединение будут закрыты
                    System.out.println("Client disconnected!");
                }
            }
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }
}


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 01 Апрель, 2019 09:41 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 5846
Откуда: Москва
Java try/catch/finally в языке ДРАКОН


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 01 Апрель, 2019 20:06 
Аватара пользователя

Зарегистрирован: Воскресенье, 31 Март, 2019 02:55
Сообщения: 39
Откуда: Саратов, РСФСР, Советский Союз
Меня очень сильно расстроила та тема. Столько разных подходов и мнений. А особенно расстроило это сообщение Степана Митькина. Я понимаю почему Степан предлагает такой вариант. Его DRAKON Editor поддерживает только такой способ, как он описал, то есть помещать все try-catch-finally в одну икону Действие, чтобы сгенерировать .java файл из редактора.

Это его скриншот найденный мною на зарубежном форуме в этой теме: Using DRAKON with python's try: except: exceptions


Вложения:
try_catch_python.png
try_catch_python.png [ 9.38 КБ | Просмотров: 4428 ]
Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 01 Апрель, 2019 20:19 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 5846
Откуда: Москва
Иван, если вы не согласны с Митькиным, поспорьте с ним.

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 02 Апрель, 2019 02:38 
Аватара пользователя

Зарегистрирован: Воскресенье, 31 Март, 2019 02:55
Сообщения: 39
Откуда: Саратов, РСФСР, Советский Союз
Тот человек, ссылку на хабр-статью и код которого я показал в первом сообщении - мой знакомый с КиберФорума. Он преподаватель. Я хотел его удивить и показать, как легко изобразить его код с помощью DRAKON-блок-схемы. Показать как легко студенты (начинающие программисты в Java) могут легко самостоятельно создавать свои блок схемы для Java программ. Я хотел показать на примере его программы. В результате я обескуражен. Получается, что программа из первого сообщения намного нагляднее, чем если её представить в виде DRAKON-блок-схемы. До этого я думал, что DRAKON однозначен, но если существует столько способов изобразить try-catch и нет единого подхода - это очень плохо. Я расстроен, что не могу изобразить однозначно тот пример для начинающих из первого сообщения. Почему нельзя было договориться, что этот вариант единственный верный и давайте его следовать? Нет, нужно было придумать 5-7 способов изображать try-catch, причём генератор кода Степана будет поддерживать только его способ изображения try-catch в одной иконе действия. А как же быть с вложенными try-catch? Весь код засовывать в одну икону Действие?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 05 Июнь, 2019 01:08 

Зарегистрирован: Понедельник, 07 Май, 2018 01:43
Сообщения: 31
Так не лучше?


Вложения:
Screenshot_46.jpg
Screenshot_46.jpg [ 15.68 КБ | Просмотров: 4179 ]
Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 25 Февраль, 2021 14:33 
Аватара пользователя

Зарегистрирован: Пятница, 19 Февраль, 2021 14:48
Сообщения: 128
Для обработки ошибок нужны специальные иконы, предлагаю вот такие, причём иконы catch нанизать на линию, и case в switch сделать так же.


Вложения:
IMG_20210225_141418_863.jpg
IMG_20210225_141418_863.jpg [ 44.9 КБ | Просмотров: 2946 ]
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 7 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2008-2024, участники конференции «DRAKON.SU», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB