Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
62 / 62 / 13
Регистрация: 27.01.2009
Сообщений: 279

Советы

26.08.2010, 21:18. Показов 1259. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день, сделал с горем пополам калькулятор, но необходимы советы о написании программ на примере того же калькулятора, так как было довольно заморочливо его делать и программа похожа на if-then лестницу с отслеживанием кучи зависимости

1. как правильно проектировать программу(с помощью какого-то псевдокода или еще чего)?
2. как правильно подходить к решения вариантов хода событий(сначала описывать поведение программы по правильному пути, а потом предусматривать все возможные варианты или стараться походу все варианты учитывать)
3. как задавать ф-ции чтобы они были максимально независимыми?
4. как писать программу чтобы не запутаться в своем же коде и можно было легко их модифицировать?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
26.08.2010, 21:18
Ответы с готовыми решениями:

Советы
Привет всем! Я начинающий программист (и довольно молодой :D), и недавно написал "игру" как бы с помощью "классов", по...

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

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

7
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
26.08.2010, 21:33
norge_goth,
1. Можно писать псевдокод. Можно писать сначала, читать переписывать заново. Естественно код должен быть разбит на функции, если оно того стоит. Или на классы, если объектно-ориентированный подход.
2. Я придерживаюсь стараться походу. Но не всегда это получается
3. Что это значит? Независимыми от чего?
4. ыы. а вот это проблема. в коде запутаться можно легко. Однако с опытом приходит понимание того как писать правильно
1
62 / 62 / 13
Регистрация: 27.01.2009
Сообщений: 279
26.08.2010, 21:39  [ТС]
Цитата Сообщение от Lavroff Посмотреть сообщение
norge_goth,
1. Можно писать псевдокод. Можно писать сначала, читать переписывать заново. Естественно код должен быть разбит на функции, если оно того стоит. Или на классы, если объектно-ориентированный подход.
2. Я придерживаюсь стараться походу. Но не всегда это получается
3. Что это значит? Независимыми от чего?
4. ыы. а вот это проблема. в коде запутаться можно легко. Однако с опытом приходит понимание того как писать правильно
3. Чтобы одни ф-ции минимально влияли на исход других, если не понятно могу привести код
У меня калькулятор(тоесть его часть) написан на Qt проблема в том что там получается один класс и беспрерывная обработка нажатий клавиш с вызовом соответствующих ф-цый
0
 Аватар для iama
1360 / 988 / 119
Регистрация: 30.07.2010
Сообщений: 5,297
26.08.2010, 21:52
1. лично мне удобно рисовать схему взаимодействия классов (ну или методов), так легче отследить как лучше спроектировать каждый отдельный метод, диапазон значений параметров, что помогает при борьбе с уязвимостями и защите "от дурака".
2. см. п. 1
3. каждай фунцкия сама должна проверять корректность вводимых значений, хороший тон - возвращать переменную, которая говорит об успешности выполнения функции. тогда удобно и дебажить - поставить проверку типа:
C++
1
if (DeleteTags(tagged_str) == -1) assert("Tags delete not successful");
4. комментируйте код. это дает вам самому лучшее понимание работы своего кода, и плюс когда через долгий промежуток времени вам понадобится использовать написаный ранее код, вам будет легче его интегрировать, если он комментирован.

на правах рекламы - С. Макконнелл - "Совершенный код" - очень помогло в свое время
1
 Аватар для Mencey
155 / 102 / 12
Регистрация: 22.07.2010
Сообщений: 445
26.08.2010, 23:00
1. В Философия C++ в первой главе написано как проектировать ООП программы. Извиняюсь текст выложить немогу т.к. авторские права нарушу.

Не по теме:

Почти в любой теме знания из Философии мне помогаят отвечать на вопросы в темах думаю не зря читаю эту книгу:)

0
Эксперт С++
 Аватар для CyBOSSeR
2348 / 1721 / 149
Регистрация: 06.03.2009
Сообщений: 3,675
26.08.2010, 23:19
Цитата Сообщение от iama Посмотреть сообщение
хороший тон - возвращать переменную, которая говорит об успешности выполнения функции.
Для языков поддерживающих исключения - это плохой тон, за исключением случаев, когда использовать исключения невозможно.
Цитата Сообщение от iama Посмотреть сообщение
C++
1
if (DeleteTags(tagged_str) == -1) assert("Tags delete not successful");
Код некорректен. assert используется для проверки утверждений, а не сигнализации об ошибках. Кроме того утверждения исключаются в релизных конфигурациях.
Поправленный вариант (будем считать, что DeleteTags использует код возврата для уведомления о успешности выполнения):
C++
1
2
3
4
5
6
int result = DeleteTags(tagged_str);
 
if (result == -1) {
  assert(result != -1);
  throw std::runtime_error("Tags delete not successful");
}
0
Временно недоступен
 Аватар для #pragma
957 / 228 / 14
Регистрация: 12.04.2009
Сообщений: 926
26.08.2010, 23:56
Цитата Сообщение от norge_goth Посмотреть сообщение
Добрый день, сделал с горем пополам калькулятор, но необходимы советы о написании программ на примере того же калькулятора, так как было довольно заморочливо его делать и программа похожа на if-then лестницу с отслеживанием кучи зависимости

1. как правильно проектировать программу(с помощью какого-то псевдокода или еще чего)?
2. как правильно подходить к решения вариантов хода событий(сначала описывать поведение программы по правильному пути, а потом предусматривать все возможные варианты или стараться походу все варианты учитывать)
3. как задавать ф-ции чтобы они были максимально независимыми?
4. как писать программу чтобы не запутаться в своем же коде и можно было легко их модифицировать?
Если не лень,посмотри тему про интерпретатор Пишем свой интерпретатор языка BASIC . Там как раз на примере калькулятора проходится путь написания программы. И хотя конечный результат не достигнут,и код весьма не совершенен,но советы, данные Evg по конкретной теме,весьма ценные,в частности,есть и про проектирование. Можешь посмотреть ревизии кода,каким был в начале и как изменился.
Как я понял,одно из важнейших правил-разделяй и властвуй. То есть из низкоуровневого кода нужно стараться при росте программы делать более высокоуровневые построения, и делать это так,чтобы семантика кода обогащалась. То есть чтобы каждая строчка кода была предельно ясной по мере возможности.
Ещё очень важно сокрытие данных и модульность.То есть чтобы все части программы были как можно более независимыми и непосредственные данные из одного модуля не использовались в коде другого. Например,в моей программе мне это сделать,я считаю,не удалось, так как по настоящему независимым является только парсер (я уже использовал его в другой программе).
2
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
27.08.2010, 03:46
C++
1
if (DeleteTags(tagged_str) == -1) assert("Tags delete not successful");
C
1
2
    retval = DeleteTags(tagged_str);
    assert(retval != -1 && "can't delete tags");
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.08.2010, 03:46
Помогаю со студенческими работами здесь

Советы начинающему
Здравствуйте дорогие форумчане, отнедавна решил воплотить мечту своего детства и попробовать стать программистом, осенью на первый курс...

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

Нужны советы по задачам
У меня при написании программ возникли проблемы. 1)в программе где я работаю со списками: #include <conio.h> #include...

Советы по написанию игры на C++
Хочу написать "змейку"(в оконной реализации, не в консоли). Не знаю с чего начать и как подступить к этой задаче. Дайте пару советов и...

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


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru