|
0 / 0 / 0
Регистрация: 15.06.2021
Сообщений: 4
|
|||||||||||
Что выводит следующая программа?(объясните код из задачи из Дейтелов)14.07.2021, 01:25. Показов 2936. Ответов 31
Метки нет (Все метки)
Объясните, пожалуйста, код ньюфагу.
я бы мог пропустить эти задания и дальше читать книгу, но мне интересно, что происходит в этом коде, собственно, поэтому я тут. }
0
|
|||||||||||
| 14.07.2021, 01:25 | |
|
Ответы с готовыми решениями:
31
Посмотрите, что выводит следующая программа, и исправьте ее так, чтобы получилась пятиконечная звезда Что напечатает на экране следующая программа? Напишите, что выведет на экран следующая программа: |
|
13 / 13 / 0
Регистрация: 21.10.2011
Сообщений: 58
|
|||
| 14.07.2021, 20:12 | |||
|
Вероятно вы и операционную систему подразумеваете и компилятор?
0
|
|||
|
Вездепух
13212 / 6845 / 1825
Регистрация: 18.10.2014
Сообщений: 17,327
|
||||
| 14.07.2021, 20:35 | ||||
|
Странно, что приходится объяснять такую естественную вещь. Да и какие могут быть альтернативы? Предложите. Обсуждения поведения конкретных реализаций языка С боле чем уместно и в этом форуме, но, разумеется, требует явного указания конкретной реализации.
0
|
||||
|
Модератор
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,981
|
|||||
| 14.07.2021, 20:36 | |||||
|
На самом деле спор пустой. Всё проще: если голова до отказа забита догмами, одна из которых звучит, как Не по теме: Очень понравилось про А если немного задуматься, почему переменную, чаще всего используемую, как счётчик циклов, называют именно i, "всем" станет очевидно, что от слова integer. То есть объявив один раз в начале функции int i и используя её исключительно, как счётчик циклов, не прийдётся каждый раз встречая в программе for (i = 0; ... возвращаться в начало программы, чтобы посмотреть, как там она объявлена. Ну и в качестве бонуса, как я "мимо кассы" заметил, сразу после цикла можно посмотреть, дошёл ли он до конца, не нагромождая при этом нелепых конструкций, единственное объяснение которым - опять же тупое следование догмам, которые по сути и догмами-то не являются. Просто рекомендации, иногда полезные, иногда не очень...
0
|
|||||
|
Вездепух
13212 / 6845 / 1825
Регистрация: 18.10.2014
Сообщений: 17,327
|
|||
| 14.07.2021, 21:20 | |||
|
Все популярные рекомендации типа "good practices" являются по своей сути "догмами". С таким же успехом можно заявлять, что использование циклов for/while/do является не более чем следованием некоей "догме", в том время как все эти конструкции можно реализовать через if и goto. С таким же успехом можно утверждать, что все логически операции можно записать через "исключающее или", а те, кто утверждает, что логические выражения в терминах !, && и || более удобочитаемы - лишь "догматики".Но в данном случае мы все таки говорим не о таком абсурдном предложении использовать goto, а об общеизвестном, широко принятом и интуитивно естественном правиле: минимизировать область видимости переменной. Есть разница.Что интересно, кстати, в книгах Дейтела и Детела (в том числе и в этой) встречаются ссылки на "CERT C Secure Coding Standard", где тоже присутствуют все базовые законы/правила/рекомендации грамотного программирования на С. Присутствует, разумеется, и эта рекомендация (https://wiki.sei.cmu.edu/confl... +functions). Однако в своих примерах они сами нередко его нарушают. Всем понятно, что в первом утверждении идет речь об проблеме удобочитаемости кода, как было ясно сказано изначально. То есть о трудности понимания семантики кода посторонним "читателем" - человеком, который в общем случае заранее не имеет ни малейшего представления об этой семантике, а имеет на руках лишь код, который ему надо "прочитать". А во втором утверждении идет речь о постановке задачи для нас здесь - "писателей", т.е. людей которые, наоборот, уже заранее знают требуемую семантику кода и на основе этого выбирают способ написания еще не написанного кода. Это диаметрально противоположные случаи. Странно, что такую очевидную разницу между "писателем" и "читателем" кода приходится разжевывать.
0
|
|||
|
фрилансер
6500 / 5731 / 1134
Регистрация: 11.10.2019
Сообщений: 15,338
|
|
| 14.07.2021, 21:21 | |
|
0
|
|
|
13 / 13 / 0
Регистрация: 21.10.2011
Сообщений: 58
|
|
| 14.07.2021, 21:38 | |
|
0
|
|
|
Вездепух
13212 / 6845 / 1825
Регистрация: 18.10.2014
Сообщений: 17,327
|
|||
| 14.07.2021, 21:44 | |||
|
0
|
|||
|
226 / 184 / 80
Регистрация: 13.04.2014
Сообщений: 694
|
||
| 15.07.2021, 09:30 | ||
|
тоже самое применимо к объявлению переменных(так тоже реально удобнее всем, и тем кто читает код и тем кто пишет), это должно было стать очевидно из прошлых постов. если переменная не нужна в вышестоящей или соседней по вложенности области видимости, то ее следует оттуда убрать. 1. человек читающий код, не будет на нее отвлекаться и сможет сосредоточить свое внимание на том, что действительно сейчас используется. внимание не безгранично 2. такой код легче рефакторить, чем меньше область видимости переменной, тем проще понять какой код взаимодействует с переменной, что ускорит рефакторинг 3. эту переменную никто случайно не изменит во время выполнения программы 4. я бы что-нибудь написал еще насчет оптимизаций, что зачем в стек класть раньше времени, но я в этом далеко не эксперт, но думаю, что в этом есть какой-то смысл. (буду рад, если объясните мне, что это никак не влияет) 5. не нужно извращаться в названиях переменных, если такое имя уже занято переменной с другим типом. что в итоге приведет к еще большим проблемам при чтении кода 6.примеры с тем, что нужно потом использовать значение счетчика после цикла — откровенно не очень. я предложил сделать отдельную переменную для этого т.к. у каждой переменной должно быть свое предназначение. Но это назвали костылем. а объявлять переменную в самом верху, чтобы можно было ее везде использовать — не костыль??? В одном месте она счетчик(смещение для указателя на массив) для цикла, в другом месте это число на котором цикл оборвался, в третьем это например возраст (бизнес-логика бывает разная, от нее зависит код) такое ощущение, что вы просто экономите переменные, что реально не имеет место быть очень тяжело приходить в проект и читать код, где все переменные объявлены глобальными или в начале функции(хотя используются где-то внутри один раз в каком-нибудь цикле или if/else блоке) и ищи потом где и как они используются. это очень не профессионально
0
|
||
|
Вездепух
13212 / 6845 / 1825
Регистрация: 18.10.2014
Сообщений: 17,327
|
|||
| 15.07.2021, 10:10 | |||
|
То есть да, можно сказать, что ограничивая время жизни переменной вы помогаете оптимизатору. Но на самом деле оптимизатору в таких вопросах ваша помощь не нужна - она и сам прекрасно со всем справится.
0
|
|||
|
Модератор
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,981
|
||
| 15.07.2021, 10:50 | ||
|
Не нужно доходить до фанатизма. Если переменная используется с одной целью но в разных местах функции, то её проще объявить в начале функции. Если переменная нужна только внутри блока, то её и нужно объявлять в этом блоке.
1
|
||
|
5120 / 4574 / 855
Регистрация: 07.10.2015
Сообщений: 9,462
|
|
| 15.07.2021, 11:03 | |
|
1
|
|
|
Модератор
|
|||||||||||||
| 16.07.2021, 08:09 | |||||||||||||
|
lozka, у вас оператор if-else будет понятнее ? Если да, то можно попробовать:
1.
2.
1
|
|||||||||||||
| 16.07.2021, 08:09 | |
|
Напишите, что выведет на экран следующая программа
Что выведет на экран следующая программа и почему?
Определите, что выведет следующая программа на экран Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Был там один разговор по поводу свободы в материальном мире.
kumehtar 19.08.2026
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства.
Жизнь действительно предъявляет каждому. . .
|
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
|
Лето уходит
kumehtar 17.08.2026
|
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
|
|
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины".
За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html
Задача: . . .
|
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
|
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет:
1. Использовать системное время и дату,
2. Есть возможность вводить время и дату вручную.
3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
|
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber.
Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
|