Форум программистов, компьютерный форум, киберфорум
Разработка и тестирование
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
3 / 3 / 0
Регистрация: 17.07.2012
Сообщений: 34

Выбор логики программы

07.05.2018, 12:05. Показов 706. Ответов 1
Метки нет (Все метки)

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

Данную тему разобью на часть теоретическую и практическую.

ТЕОРИЯ:

1. Как (НЕ)опытные программисты понимают, что функция написано идеально и улучшать смысла нет?

Пример: необходимо реализовать удаление одного символа по свайпу влево.

1.1 Можно по свайпу взять строку из эдита, преобразовать в массив, убрать последний символ, вставить обратно в эдит. Ужасно? Наверняка.

1.2 Тогда можно на свайп влево привязать нажатие кнопки Backspace.

1.3 Но если покопаться, то можно найти встроенную функцию обращения к последнему элементу строки:

Objective-C
1
removeAtIndex(welcome.endIndex.predecessor())
Вроде бы это оптимально.

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

2. Нужно реализовать программу "сонник". То есть слово - описание.

Если у нас всего 2 возможных варианта сна, то можно и переменными оформить.

C#
1
2
3
4
string s1 = "солнце"
string s2 = "вода"
string s3 = "к деньгам"
string s4 = "к очень большим деньгам"
Если у нас 5-10 вариантов, то, наверное, уже двумерный массив:

C#
1
int[,] nums2 = { { "солнце", "вода","небо" }, { "к деньгам","к очень большим деньгам", "к новой работе" } };
Если вариантов от 50 - то, видимо, база данных уже.

Вопрос: Как опытный программист определяет, какой способ использовать? В какой момент переходить от массива к БД? Интуитивно?

ПРАКТИКА:

Теперь задача, которая стоит непосредственно передо мной:

Необходимо реализовать для айфона данный справочник: http://www.tks.ru/db/tnved/tree

21 раздел, который делится на 97 групп, каждые из которых делятся еще на группы, итого 10.000 строк.

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

Вот и вопрос: какой подход вы бы посоветовали, а самое главное: где бы можно было про это почитать?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.05.2018, 12:05
Ответы с готовыми решениями:

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

Выбор языка программирования для написания программы работы с COM-портом.
здравствуйте! Есть устройство, работает с компьютером через COM-порт(RS-232). OS - Windows. М.б. Ubunta, но скорее всё же W7. ...

Выбор языка программирования для создания программы управления компьютером через ICQ
Мне нужно выбрать язык программирования под конкретную цель\цели - удобная работа с winapi и сети. Подробнее: пишу icq бэкдор, т.е. по...

1
Модератор
Эксперт функциональных языков программирования
3134 / 2281 / 469
Регистрация: 26.03.2015
Сообщений: 8,878
07.05.2018, 12:59
Цитата Сообщение от Bartman Посмотреть сообщение
функция написано идеально и улучшать смысла нет
"идеально" не бывает. Чтобы сравнивать две реализации, надо задать функцию сравнения. В зависимости от критериев "идеально" может стать "очень плохо" и наоборот.
В общем случае, функция написана хорошо, если она написана понятно и нет веских причин считать, что она написана плохо.

Цитата Сообщение от Bartman Посмотреть сообщение
В какой момент переходить от массива к БД?
Зависит от требований к системе.

Добавлено через 5 минут
Цитата Сообщение от Bartman Посмотреть сообщение
Вот я и не понимаю, то ли в базу все пихать (CoreData), то ли гигантский массив сделать, то ли есть еще варианты, о которых я не знаю.
У Вас два вопроса:
1. в каком виде хранить информацию в оперативной памяти
2. в каком виде хранить информацию "на диске"

Ответ на первый вопрос зависит от того, как Вы собираетесь её использовать.
Ответ на второй вопрос зависит от требований к системе. Выбирайте самый простой вариант (например, текстовый файл с json), если нет веских причин его не использовать.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.05.2018, 12:59
Помогаю со студенческими работами здесь

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

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

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

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

при запуске любой программы выскакивает окно ВЫБОР ПРОГРАММЫ
Что делать или как удалить вирус У меня при запуске любой программы выскакивает окно ВЫБОР ПРОГРАММЫ Я даже не могу установить...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru