Данные должны быть ошибки если после

253-основа.png

Уточненная декларация в обязательном порядке подается по любому налогу в случае, когда налогоплательщик самостоятельно обнаружил в ранее представленной декларации ошибку, которая привела к занижению суммы налога к уплате, а также при применении налогоплательщиком упрощенной системы налогообложения, в случае если организация продала основное средство до истечения срока, установленного п. 3 ст. 346.16 НК РФ. Во всех остальных случаях и неточностях в представленных данных подача уточненной налоговой декларации является правом налогоплательщика, но никак не его обязанностью.

Уточненная декларация представляется по той же форме, по которой представлялась первоначальная декларация. В уточненную декларацию нужно включить не только исправленные данные, но и все остальные показатели, в том числе и те, которые были изначально корректны.

При этом не стоит забывать, что если допущенная ошибка привела к занижению суммы налога к уплате, а срок уплаты уже прошел, то перед тем, как подать уточненную декларацию, следует заплатить не только сумму самой недоимки (дельту между уточнёнными и первоначальными данными по налогу), но и сумму начисленных за соответствующий период пеней. В противном случае, на налогоплательщика будет наложен штраф в размере 20% от суммы неуплаченного в срок налога. Также возможно, что предварительная уплата причитающихся сумм не сможет освободить от ответственности (если налоговый орган обнаружит ошибку раньше налогоплательщика, либо будет назначена выездная налоговая проверка).

Давайте разберем конкретные ситуации, которые могут возникнуть в действительности.

Какие есть сроки для подачи уточненных деклараций?

На практике широко распространено мнение, что подать «уточненку» можно только за период, не превышающий трехлетний срок. Однако это не совсем соответствует действительности. Согласно п. 1 ст. 81 НК РФ при обнаружении налогоплательщиком в поданной им декларации недостоверных сведений, а также ошибок, не приводящих к занижению суммы налога, подлежащей уплате, налогоплательщик вправе внести необходимые изменения в налоговую декларацию и представить в налоговый орган уточненную декларацию в порядке, установленном в данной статье. При этом уточненная налоговая декларация, представленная после истечения установленного срока подачи декларации, не считается представленной с нарушением срока. 

Однако в соответствии с п. 7 ст. 78 НК РФ заявление о зачете или о возврате суммы излишне уплаченного налога может быть подано в течение трех лет со дня уплаты указанной суммы, если иное не предусмотрено законодательством РФ.

Таким образом, подача «уточнёнки» может быть осуществлена за пределами 3-летнего срока, а вот возврат излишне уплаченного налога возможен только в пределах этого срока. Данное правило применяется и в отношении возврата (зачета) излишне уплаченных авансовых платежей (п. 14 ст. 78 НК РФ).

Итак, основания для возврата переплаты наступают с даты представления налогоплательщиком уточненной декларации за соответствующий год, но не позднее срока, установленного для ее представления в налоговый орган. Такой вывод сделан в Постановлении Президиума ВАС РФ от 28.06.2011 №17750/10.

Заявление о возврате суммы излишне уплаченного налога может быть подано налогоплательщиком в течение 3-х лет, начиная с даты фактического представления налоговой декларации за соответствующий налоговый период, но не позднее срока, установленного для ее представления в налоговый орган (т.е. срок может быть только более ранним, чем законодательно установленный). Дата фактического представления налоговой декларации подтверждается отчетом оператора, через которого сдается налоговая отчетность в электронном виде.

Определяем, грозит ли нам ответственность за представление «уточнёнки»?

Законодательством поощряется намерение налогоплательщиков (плательщиков сборов, налоговых агентов) самостоятельно выявлять допущенные ими искажения в отчетности и устранять их. Так, п. 3 и п. 4 ст. 81 НК РФ предусматривают условия освобождения от налоговой ответственности при сдаче «уточненки» к доплате, если соблюдаются следующие условия:

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

когда уточненная декларация представляется в налоговый орган после истечения срока подачи налоговой декларации и срока уплаты налога, при условии, что одновременно соблюдаются следующие требования:

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

  • до представления уточненной декларации налогоплательщик уплатил недостающую сумму налога и соответствующие ей пени.

При этом необходимо отметить, что согласно многочисленным разъяснениям сам факт представления уточненной декларации с суммой налога, подлежащей доплате, еще не свидетельствует о занижении налогоплательщиком налоговой базы. В любом случае, чтобы привлечь лицо к ответственности должен быть установлен соответствующий состав налогового правонарушения (Письмо Минфина России от 04.02.2013 №03-02-07/1/2279; Постановление ФАС СЗО от 21.01.2014 № А05-1380/2013).

Кроме того, возможен вариант, что по соответствующему налогу у налогоплательщика по данным карточки «Расчеты с бюджетом» (КРСБ) числится образовавшаяся еще до уточняемого периода переплата, сумма которой в полной мере перекрывает суммы недоимки по «уточненке» и начисленных пеней, в таком случае штраф начисляться не должен. Ведь в соответствии с п. 20 Постановления Пленума ВАС РФ от 30.07.2013 № 57 налоговый орган вправе самостоятельно зачесть переплату в счет недоплаченной суммы налога.

В целом все ясно и просто: перед тем как сдать «уточненку» (после положенного срока) нужно заплатить суммы налога и пени либо подтвердить, что суммы переплаты по соответствующему налогу хватит покрыть образующуюся недоимку, нужно убедиться, что в отношении вашей организации (индивидуального предпринимателя) не назначена выездная налоговая проверка (а не знать об этом достаточно сложно, так как налоговый орган уведомляет о таком событии всегда своевременно и по всем имеющимся у него ресурсам), и мы получаем освобождение от штрафных санкций. Казалось бы, все предельно понятно, но что делать с туманной формулировкой «…до момента, когда налогоплательщик узнал об обнаружении налоговым органом неотражения или неполноты отражения сведений…».

Приведем ситуацию, когда вам могут грозить штрафные санкции. 

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

В любом случае стоит помнить, что для привлечения к ответственности, предусмотренной ст. 122 НК РФ, необходимо наличие установленных в ходе проведения выездной или камеральной налоговой проверки обстоятельств, свидетельствующих о совершении налогоплательщиком неправомерных действий либо неправомерного бездействия, повлекших незаконное занижение налоговой базы по налогу за определенный налоговый период, которое, в свою очередь, повлекло его неуплату за этот период.

Как отразится сдача уточненной декларации на ходе налоговой проверки?

Если уточненная декларация сдается до окончания проведения камеральной налоговой проверки за этот же период, то налогоплательщику необходимо учесть следующее:

  • проверка первоначальной (предыдущей «уточненки») прекращается, как и все контрольные мероприятия, проводимые в её рамках;
  • начинается новая проверка представленной декларации, соответственно, сроки её проведения обновляются;
  • налоговый орган может использовать в новой проверке те документы и сведения, которые были получены им в рамках прекращенной проверки, это относится и к результатам проведенных контрольных мероприятий;
  • даже если предыдущая проверка, в рамках которой было получено требование о предоставлении сведений, прекращена, запрошенные документы и пояснения стоит всё же представить, иначе вы рискуете стать привлеченным к ответственности в виде штрафа в размере 200 руб. за каждый непредставленный документ. Ведь ст. 88 и ст. 93 НК РФ не содержат норм об отзыве налоговым органом выставленного ранее требования в случае представления налогоплательщиком «уточненки». Такого же мнения придерживаются и суды (Определения ВС РФ от 12.11.2015  № 306-КГ15-14509, от 12.04.2016 № 306-КГ16-2522).

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

Самый безболезненный вариант — сдать «уточненку» во время проведения проверки, т.е. до того момента, как налогоплательщику будет вручена справка о проведенной выездной налоговой проверке. В таком случае уточнённые данные в обязательном порядке будут учтены проверяющими в результатах такой проверки. 

Имейте в виду, что к сдаче «уточнёнок» во время проверок налоговый орган относится с повышенным вниманием. Скорее всего в таком случае будет выставлено требование о представлении документов и пояснений на суммы уточнений. Запрошенные документы и пояснения должны быть представлены в течение 10 рабочих дней. Для подтверждения данных, внесенных в налоговую декларацию, налогоплательщик может дополнительно представить бухгалтерские справки, выписки из регистров налогового и (или) бухгалтерского учета и (или) другие документы, а также дать письменные пояснения в произвольной форме по заданным вопросам, чтобы подтвердить правомерность своей позиции.

Неясным остается вопрос, что произойдет, если уточненная декларация будет сдана уже после проверки. Например, после того, как налогоплательщик получит Акт выездной налоговой проверки или даже Решение о привлечении к ответственности за совершение налогового правонарушения. Конечно, говорить о том, что такая «уточнёнка» будет проанализирована в ходе проверки не приходится, ведь проверка будет уже закончена. Таким образом, у налогового органа будет право на выбор одного из следующих действий:

  • проведение дополнительных мероприятий налогового контроля после проведения выездной налоговой проверки (если ещё не было вынесено Решение о привлечении к ответственности за совершение налогового правонарушения);
  • назначение повторной выездной налоговой проверки, предметом которой станут именно уточнённые данные по декларации;
  • проведение камеральной налоговой проверки, если назначение выездной проверки сочтут нецелесообразным.

Будьте внимательны! Имейте в виду, что представление уточнённой декларации может инициировать назначение выездной налоговой проверки за корректируемый период, в т.ч. повторной. В рамках этой повторной выездной проверки проверяется период, за который представлена уточненная налоговая декларация. При этом норма абз. 6 п. 10 ст. 89 НК РФ не исключает возможность проведения повторной выездной проверки уточненных налоговых деклараций по налогу на прибыль, в которых увеличена сумма первоначально заявленного убытка.

С помощью программной линейки продуктов компании Такском вы всегда гарантированно сможете быстро, надёжно и максимально удобно обмениваться документами с ФНС и другими контролирующими органами. Просто выберите удобный для себя тариф и присоединяйтесь к дружной семье абонентов Такском. 

Несмотря на кажущуюся простоту отчета СЗВ-ТД, при его формировании пользователи могут столкнуться с рядом сложностей. На основе поступающих обращений к нам на Линию консультаций мы рассмотрели наиболее частые из них.

  • СЗВ-ТД: что это и для чего нужно
  • Формы подачи отчета
  • В каких случаях отправляется
  • Сроки отправки СЗВ-ТД
  • Формирование СЗВ-ТД в 1С:ЗУП 3.1 и частые ошибки
  • Ошибочная подача нескольких событий
  • Дублирование мероприятий
  • Исправление неверно поданных данных
  • Отсутствие мероприятий в формируемом отчете
  • Несовпадение кодов мероприятий при корректировке или отмене поданных данных
  • Штрафы и ответственность

СЗВ-ТД: что это и для чего нужно

Сведения о трудовой деятельности зарегистрированного лица или СЗВ-ТД — это отчет, который необходимо формировать бухгалтеру на основании приказов, распоряжений и иных решений или документов кадрового учета для отправки в ПФР. Полученные данные позволяют Фонду фиксировать стаж работников и все ключевые кадровые изменения.

Формы подачи отчета

СЗВ-ТД можно сдавать либо на бумажном носителе в случае, если в компании работает менее 25 человек, либо в электронном виде.

Не нашли ответа на свой вопрос в наших статьях?

Обратитесь за помощью к специалисту напрямую. Быстро ответим и поможем решить проблему.

Обратиться

В каких случаях отправляется

СЗВ-ТД необходимо подавать при приеме на работу, переводе сотрудника на другую должность и увольнении. Также основаниями для отправки являются повышение квалификации сотрудника или получение им дополнительной специальности, наличие судебного решения на запрет занимать определенные должности, а также получение от работника заявления с выбором формы ведения трудовой книжки.

Помимо этого, с октября 2022 г. СЗВ-ТД необходимо отправлять при приостановлении или возобновлении трудового договора.

Сроки отправки СЗВ-ТД

В соответствии с п. 2,5 ст. 11 Закона от 01.04.1996 № 27-ФЗ, при приеме на работу и увольнении отчет СЗВ-ТД формируется и сдается в ПФР не позднее рабочего дня, следующего за днем издания соответствующего кадрового приказа. При переводе на другую должность и прочих кадровых мероприятиях СЗВ-ТД сдается не позднее 15 числа месяца, который следует за месяцем, в котором были зарегистрированы кадровые изменения.

Формирование СЗВ-ТД в 1С:ЗУП 3.1 и частые ошибки

В программе 1С:ЗУП 3.1 отчет СЗВ-ТД можно сформировать двумя способами: либо через раздел «Отчетность, справки», либо через раздел «Кадры» — «Электронные трудовые книжки».

При этом часто пользователи сталкиваются со следующими сложностями при формировании отчета, а именно:

  • Ошибочной подачей нескольких событий.
  • Дублированием мероприятий.
  • Исправлением неверно поданных данных.
  • Отсутствием мероприятий в формируемом отчете.
  • Несовпадением кодов мероприятий при корректировке или отмене поданных данных.

Наиболее корректным и предпочтительным вариантом исправления подобных ошибок является перезаполнение документов или переформирование СЗВ-ТД заново с верными данные. Однако это возможно тогда, когда ошибки допущены в текущем периоде. На практике же часто бывает, что необходимо исправить ошибку, допущенную в прошлых периодах, и чем быстрее, тем лучше. Поэтому далее мы более подробно рассмотрим каждый из случаев и возможные варианты оперативного решения возникших трудностей.

Ошибочная подача нескольких событий

Данная ошибка возникает в случае, если по каким-то причинам в графу «Мероприятия» подтягивается не только нужное значение, но и то, по которому СЗВ-ТД уже был отправлен ранее. Например, сотрудника перевели на другую должность, сформировали кадровый перевод, а в СЗВ-ТД по этому сотруднику помимо перевода подтягивается еще и прием на работу.

СЗВ-ТД

Для исправления ошибки, в первую очередь, необходимо проверить галку «Документ принят в ПФР» в СЗВ-ТД, поданном ранее для «ненужного» мероприятия (в нашем примере это прием на работу). Если галка не стоит, ее необходимо проставить и провести документ заново. Далее — сформировать СЗВ-ТД на перевод.

СЗВ-ТД

Если же в ранее поданном СЗВ-ТД необходимая галка стояла, исправить ошибку можно, сформировав искусственную отмену «ненужного» мероприятия. Для этого нужно:

1. Предварительно отменить проведения нужного мероприятия (кадровый перевод в примере), чтобы оно не подтягивалось.

2. Сформировать документ «Регистрация трудовой деятельности», отменяющий «ненужное» мероприятие (прием на работу).

Регистрация трудовой деятельности

Регистрация трудовой деятельности

3. Сформировать «черновой» вариант СЗВ-ТД с признаком отмены «ненужного» мероприятия. Проверить, что мероприятие действительно отменено, можно с помощью вывода печатной формы документа. Обратите внимание, что этот документ черновой и отправлять его не нужно.

СЗВ-ТД

4. Провести кадровый документ с «нужным» мероприятием (кадровый перевод).

5. Сформировать «чистовой» вариант СЗВ-ТД и отправить его в Фонд.

СЗВ-ТД

Дублирование мероприятий

Возникает тогда, когда в СЗВ-ТД подтягиваются два одинаковых мероприятия. Это может быть связано с перепроведением кадровых документов, внесением каких-либо изменений в них и, как следствие, с неправильным отражением данных по регистрам учета.

Исправить данную ошибку можно, сформировав СЗВ-ТД с помощью документа «Регистрация трудовой деятельности», для этого нужно:

1. Сформировать «неправильный» СЗВ-ТД с задублированными мероприятиями — это «черновой» вариант, который отправлять в Фонд не нужно.

СЗВ-ТД

2. Создать документ «Регистрация трудовой деятельности» и вручную внести необходимые данные по мероприятию.

Регистрация трудовой деятельности

3. Создать новый «чистовой» СЗВ-ТД и отправить в Фонд.

Исправление неверно поданных данных

Иногда возникают ситуации, когда в поданном СЗВ-ТД допущены ошибки: например, указан неправильный номер или дата приказа. Для исправления неверно поданных данных формируется корректировочный СЗВ-ТД через документ «Регистрация трудовой деятельности», для этого нужно:

1. Создать документ «Регистрация трудовой деятельности» и по кнопке «Изменить» внести в него актуальные данные.

Регистрация трудовой деятельности

2. Создать СЗВ-ТД и отправить в Фонд.

Отсутствие мероприятий в формируемом отчете

Помимо вышеописанных ситуаций пользователи сталкиваются с тем, что СЗВ-ТД формируется пустым без каких-либо мероприятий. В данном случае в программе необходимо проделать следующие действия:

  1. Проверить, выставлена ли галка «Отразить в трудовой книжке» в кадровых документах, данные из которых должны подтягиваться в графу «Мероприятия» СЗВ-ТД. Если указанная галка в них не выставлена, то проставить ее, перепровести данные кадровые документы и сформировать отчет.
  2. Проверить, были ли ранее сформированы отчеты СЗВ-ТД по данному мероприятию: если они были сформированы, то необходимо снять в них галку «Документ принят в ПФР (не редактируется)».
  3. Если все настройки и ранее сформированные отчеты проверены, но СЗВ-ТД все равно заполняется пустым, то сформировать документ «Регистрация трудовой деятельности» с необходимым мероприятием (внести данные вручную) и затем создать СЗВ-ТД.

Несовпадение кодов мероприятий при корректировке или отмене поданных данных

При проведении кадрового документа и первичном формировании СЗВ-ТД каждому мероприятию в программе присваивается свой уникальный код — так называемый, код GUID (или UUID). Данный код представляет собой идентификатор, который обеспечивает уникальность электронного документа.

Увидеть код GUID можно двумя способами: либо нажав на кнопку «Открыть файл» в СЗВ-ТД, либо через Мероприятие в СЗВ-ТД в графе «Идентификатор». Если графы «Идентификатор» нет, ее можно добавить через функцию «Изменить форму» по кнопке «Еще».

СЗВ-ТД

Мероприятия

При корректировке или отмене ранее поданных сведений необходимо, чтобы этот код совпадал с тем, который до этого был представлен в ПФР по данному мероприятию. В случае если эти коды не совпадают, ПФР присылает отказ в приеме отчета. Тогда чаще всего в протоколе ошибок указывается код ошибки 30 с описанием проверки «По застрахованному лицу мероприятия не приняты. Не найдены исходные сведения для отменяемого мероприятия».

Перечень ошибок

Для того чтобы исправить расхождение в кодах GUID, необходимо скопировать нужный код и вставить вместо ошибочного. Для этого нужно:

  1. Уточнить исходный GUID, который понадобится для подачи сведений (т.е. следует открыть первоначально поданный СЗВ-ТД с верным кодом).
  2. Скопировать нужный код (либо через «Открыть файл», либо через мероприятие в СЗВ-ТД скопировать идентификатор в соответствующей графе). Обратите внимание, что копирование или редактирование кода GUID в графе «Идентификатор» возможно только в том случае, если в СЗВ-ТД не стоит галка «Документ принят в ПФР (не редактируется)».
  3. Открыть корректировочный или отменяющий СЗВ-ТД, в графу «Идентификатор» в Мероприятии вставить нужный код и сохранить изменения.
  4. Провести корректировочный или отменяющий СЗВ-ТД и отправить в Фонд.

Аналогичным образом код GUID при необходимости может быть добавлен и отредактирован в документе «Регистрация трудовой деятельности».

Штрафы и ответственность

В соответствии со ст. 15.33.2 КоАП РФ, в случае несвоевременной сдачи СЗВ-ТД или сдаче с ошибочными данными, за каждого работника должностному лицу грозит штраф в размере от 300 до 5000 рублей, а самой организации — 500 рублей.

Помимо этого, существует штраф за нарушение правил сдачи формы СТД-Р, данные которой формируются на основе ранее поданных работодателем отчетов СЗВ-ТД и которую при увольнении выдают сотруднику с электронной трудовой книжкой. Если просрочить выдачу СТД-Р сотруднику, к организации могут быть применены штрафные санкции по ст. 5.27 КоАП РФ.

Отладка – это процесс локализации и исправления ошибок,

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

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

Отладка программы – один их самых сложных этапов разработки программного обеспечения, требующий глубокого знания:

специфики управления используемыми техническими средствами;

операционной системы;

среды и языка программирования;

реализуемых процессов;

природы и специфики различных ошибок;

методик отладки и соответствующих программных средств.

9.1Классификация ошибок

Всоответствии с этапом обработки, на котором проявляются ошибки, различают:

синтаксические ошибки;

ошибки компоновки;

ошибки выполнения.

Ошибки

Ошибки

Ошибки

Ошибки

компиляции

компоновки

выполнения

9.1 Классификация ошибок (2)

Синтаксические ошибки

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

Чем лучше формализованы правила синтаксиса языка, тем больше ошибок из общего количества может обнаружить компилятор.

Всвязи с этим говорят о языках программирования с защищенным синтаксисом и с незащищенным синтаксисом.

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

Ко вторым – С со всеми его модификациями.

9.1 Классификация ошибок (3)

Ошибки компоновки

Ошибки компоновки связаны с проблемами, обнаруженными при разрешении внешних ссылок.

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

Ошибки выполнения

К самой непредсказуемой группе относятся ошибки выполнения.

Они могут иметь разную природу, и соответственно по-разному проявляться.

Часть ошибок обнаруживается и документируется операционной системой.

Выделяют четыре способа проявления таких ошибок:

9.1Классификация ошибок (4)

появление сообщения об ошибке, зафиксированной схемами контроля выполнения машинных команд, например, переполнении разрядной сетки, ситуации «деление на ноль», нарушении адресации и т.п.;

появление сообщения об ошибке, обнаруженные операционной системой, например, нарушении защиты памяти, попытке записи на устройства, защищенные от записи, отсутствии файла с заданным именем и т.п.;

«зависание» компьютера, как простое, когда удается завершить программу без перезагрузки операционной системы, так и «тяжелое», когда для продолжения работы необходима перезагрузка;

несовпадение полученных результатов с ожидаемыми.

9.1 Классификация ошибок (5)

Все возможные причины ошибок выполнения можно разделить на следующие группы:

Ошибки

выполнения

Ошибки определения данных

Ошибки

передачи

Ошибки

преобразования

Ошибки

перезаписи

Неправильные

данные

Логические

ошибки

Проектирования

Кодирования

Неприменимый

Некорректная

работас

метод

переменными

Неверный

Некорректные

алгоритм

вычисления

Неверная

Ошибки

структураданных

межмодульных

Другие

интерфейсов

Неправильнаяреализация

алгоритма

Другие

Ошибки накопления погрешностей

Игнорирование

ограничений разрядной сетки

Игнорирование

способов

уменьшения

погрешности

9.2 Методы отладки

Отладка программы в любом случае предполагает обдумывание и логическое осмысление всей имеющейся информации об ошибке. При этом можно использовать различные методы:

метод тестирования;

метод индукции;

метод дедукции;

метод обратного прослеживания.

Метод тестирования

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

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

Данный метод часто используется как составная часть других методов отладки

9.2 Методы отладки(2)

Метод индукции

Метод основан на тщательном анализе симптомов ошибки, которыми могут проявляться как неверные результаты

вычислений или как сообщение об ошибке.

Процесс отладки с использованием метода индукции можно представить в виде алгоритма.

Самый ответственный этап – получение необходимой информации об ошибке. Дополнительную информацию можно получить в результате выполнения схожих

тестов.

В процессе доказательства пытаются выяснить, все ли проявления ошибки объясняет данная гипотеза, если не все, то либо гипотеза не верна, либо ошибок несколько.

Начало

Выявлениесимптомов ошибки

Организацияданных обошибке

Изучениеих взаимосвязей

Выдвижениегипотезы

Доказательство

гипотезы

Гипотеза

нет

доказана?

да

Нахождениеошибки

Конец

9.2 Методы отладки(2)

Метод дедукции

Начало

По

методу

дедукции

вначале

Перечисление

формируют

множество

причин,

возможныхпричин

которые могли бы вызвать данное

проявление

ошибки.

Затем

Сборновыхданных

Использование

анализируя причины, исключают

те,

процессаисключения

которые

противоречат

имеющимся

да

Исключены

данным.

все?

Если все причины исключены, то следует

нет

Доказательство

выполнить

дополнительное

гипотезы

тестирование

исследуемого

фрагмента.

Гипотеза

нет

В

противном

случае

наиболее

доказана?

да

вероятную

гипотезу

пытаются

Нахождениеошибки

доказать.

Если

гипотеза

объясняет

полученные

признаки

ошибки,

то

ошибка найдена, иначе – проверяют

Конец

следующую причину.

9.3 Общая методика отладки ПО

Можно предложить следующую методику отладки программного обеспечения, написанного на универсальных языках программирования для выполнения в операционных системах MS DOS и Win32:

1 этап. Изучение проявления ошибки.

2 этап. Локализации ошибки .

3 этап. Определение причины ошибки.

4 этап. Исправление ошибки .

5 этап. Повторное тестирование.

Следует иметь в виду, что процесс отладки можно существенно упростить, если следовать основным рекомендациям структурного подхода к программированию.

Логическая ошибка, или алогизм, — это ход мысли, нарушающий какие-то законы или правила логики.

Если ошибка допущена неумышленно, ее называют паралогизмом.

Когда ошибка допускается преднамеренно, ее обычно именуют со­физмом, хотя, как увидим далее, многие из софизмов не сводятся к ло­гической ошибке.

Ошибки в доказательствах уже обсуждались. Рассмотрим теперь ошибки в определениях, в делениях (классификациях) и софизмы.

Все определения делятся на неявные и явные.

Явное определение — это определение, имеющее форму равенства двух понятий (определяемого и определяющего).

Неявное определение — определение, не имеющее формы равен­ства двух понятий.

К неявным относятся определения путем указания отрывка текста, в котором встречается определяемое понятие, определения посред­ством показа предмета, подпадающего под это понятие, и т. п. В явных определениях отождествляются, приравниваются друг к другу два имени. Одно — определяемое имя, содержание которого требуется раскрыть, другое — определяющее имя, решающее эту задачу.

Обычное словарное определение гиперболы: «Гипербола — это стилистическая фигура, состоящая в образном преувеличении, напри­мер: „Наметали стог выше тучи“». Определяющая часть выражается словами «стилистическая фигура, состоящая.» и слагается из двух частей. Сначала понятие гиперболы подводится под более широкое понятие «стилистическая фигура». Затем гипербола отграничивает­ся от всех других стилистических фигур. Это достигается указанием признака «образное преувеличение», присущего только гиперболе и отсутствующего у других стилистических фигур, за которые можно было бы принять гиперболу. Явное определение гиперболы дополня­ется примером.

К явным определениям, и в частности к классическим, предъявляется ряд достаточно простых и очевидных требований. Их называют прави­лами определения.

1. Определяемое и определяющее понятия должны быть взаимоза­меняемы. Если в каком-то предложении встречается одно из этих по­нятий, всегда должна существовать возможность заменить его другим. При этом предложение, истинное до замены, должно остаться истинным и после нее.

Для определений через род и видовое отличие это правило форму­лируется как правило соразмерности определяемого и определяющего понятий: совокупности предметов, охватываемые ими, должны быть од­ними и теми же.

Соразмерны, например, имена «гомотипия» и «сходство симметрич­ных органов» (скажем, правой и левой руки). Соразмерны также «гол­кипер» и «вратарь», «нонсенс» и «бессмыслица». Встретив в каком-то предложении слово «нонсенс», мы вправе заменить его на «бессмысли­цу» и наоборот.

Если объем определяющего понятия шире, чем объем опреде­ляемого, говорят об ошибке слишком широкого определения. Та­кую ошибку мы допустили бы, определив, к примеру, ромб просто как плоский четырехугольник. В этом случае к ромбам были бы отнесены и трапеции, и все прямоугольники, а не только те, у которых равны все стороны.

Если объем определяющего понятия уже объема определяемого, имеет место ошибка слишком узкого определения. Такую ошибку допускает, в частности, тот, кто определяет ромб как плоский четы­рехугольник, у которого все стороны и все углы равны. Ромб в этом случае отождествляется со своим частным случаем — квадратом, и из числа ромбов исключаются четырехугольники, у которых не все углы равны.

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

Содержат очевидный круг определения «Война есть война» и «Театр — это театр, а не кинотеатр». Задача определения — раскрыть содержание ранее неизвестного имени и сделать его известным. Опреде­ление, содержащее круг, разъясняет неизвестное через него же. В итоге неизвестное так и остается неизвестным. Истину можно, к примеру, оп­ределить как верное отражение действительности, но только при усло­вии, что до этого верное отражение действительности не определялось как такое, которое даст истину.

3. Определение должно быть ясным. Это означает, что в определяю­щей части могут использоваться только имена, известные и понятные тем, на кого рассчитано определение. Желательно также, чтобы в этой части не встречались образы, метафоры, сравнения, т. е. все то, что не предполагает однозначного и ясного истолкования.

Можно определить, к примеру, пролегомены как пропедевтику. Но такое определение будет ясным лишь для тех, кто знает, что пропедевти­ка — это введение в какую-либо науку.

Не особенно ясны определения «Архитектура — это застывшая музыка», «Овал — круг в стесненных обстоятельствах», «Дети — это цветы жизни» и т. п. Они образны, иносказательны, ничего не говорят об определяемом предмете прямо и по существу, каждый человек может понимать их по-своему.

Ясность не является, конечно, абсолютной и неизменной характе­ристикой. Ясное для одного может оказаться не совсем понятным для другого и совершенно темным и невразумительным для третьего. Пред­ставления о ясности меняются и с углублением знаний. На первых порах изучения каких-то объектов даже не вполне совершенное их определение может быть воспринято как успех. Но в дальнейшем первоначальные оп­ределения начинают казаться все более туманными. Встает вопрос о за­мене их более ясными определениями, соответствующими новому, более высокому уровню знания.

Интересно отметить, что наши обычные загадки представляют собой, в сущности, своеобразные определения. Формулировка загадки — это половина определения, его определяющая часть. Отгадка — вторая его половина, определяемая часть. «Утром — на четырех ногах, днем — на двух, вечером — на трех. Что это?» Понятно, что это — человек в разные периоды своей жизни. Саму загадку можно переформулировать так, что она станет одним из возможных его определений.

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

Древний китайский буддист Дэн Инь-фэн однажды задал такую за­гадку своим ученикам. «Люди умирают сидя и лежа, некоторые умирают даже стоя. А кто умер вниз головой?» — «Мы такого не знаем», — от­ветили ученики. Тогда Дэн встал на голову и. умер.

Сейчас такого рода «загадка» кажется абсурдом. Но в то давнее вре­мя, когда жил Дэн, в атмосфере полемики с существующими обычаями и ритуалом его «загадка» и предложенная им «разгадка» показались вполне естественными. Во всяком случае, его сестра, присутствовав­шая при этом, заметила только: «Живой ты, Дэн, пренебрегал обычаями и правилами и вот теперь, будучи мертвым, опять нарушаешь общест­венный порядок!»

< Предыдущая   Следующая >


Многие компании считают, что работают и принимают решения на основе данных, но часто это не так. Ведь для того чтобы управление велось на основе данных, их, эти самые данные, недостаточно только собрать и свести в статистику.

Намного важнее провести правильный анализ, а для этого они должны быть «чисты».
Разбираться в чистоте данных и в основных качественных параметрах я начну с этой статьи.
Для достоверной аналитики должны быть соблюдены все «П» данных: правильные, правильно собранные, собранные в правильной форме, в правильном месте и в правильное время.
Если один из параметров нарушен, это может сказаться на достоверности всей аналитики, а значит нужно понимать, на что важно обращать внимание при  работе с данными.

Главные аспекты качества данных

Доступность
У аналитиков должен быть доступ к необходимым данным, но, кроме этого, доступ должен быть и к инструментам, используемым в аналитике.

Точность
Все данные должны быть достоверны, а также указаны допустимые погрешности.
Точная температура — хорошие данные, а устаревший адрес, телефон или e-mail — нехорошие данные.

Взаимосвязанность
Всегда должна быть возможность связать одни данные с другими. Например, к номеру заказа должна быть привязана информация о клиенте, его адрес, контактная и платежная информации.

Полнота
Данные должны быть «жирными» и со всеми частями. «Инвалиды» с отсутствующей частью информации могут помешать получить качественную аналитику.

Непротиворечивость
Если данные не согласованы и противоречат друг другу, значит где-то закралась ошибка.
Так если адрес клиента присутствует в двух базах, то он должен совпадать. В противном случае необходимо выбрать один источник достоверным и игнорировать остальные до исправления ошибок.

Однозначность
Каждое поле с информацией должно иметь полноценное описание, не допускающее двусмысленных значений.

Релевантность
Данные должны соответствовать характеру анализа.
Например, статистика сезонных миграций леммингов слабо относится к сезонным колебаниям биржевых курсов.

Тот самый лемминг, не влияющий на биржевые курсы.

Надежность
Надежные данные — это одновременно полная и точная информация.

Своевременность
Бич российского бизнеса — несвоевременные данные.
Часто случается, что данные еще не успели обработать и проанализировать, а они уже устарели.

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

Еще один недостаток устаревших данных — они стали уже почти бесполезны, а компания несет издержки по их хранению и обработке.

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

Данные с ошибками


Василиск — в его описании явно закралась ошибка.

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

Давайте разберем основные причины возникновения ошибок и способы, которые помогут их избежать.

Генерация данных
Самая частая и очевидная причина ошибок: тут могут быть как технические причины, так и влияние человеческого фактора.

В случае технических причин и сбоев все решается калибровкой и правильной настройкой инструментов сбора информации.

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

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

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

Самое надежное и простое решение — стандартизировать как можно больше этапов процесса сбора данных.

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

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

Так исследование показало, что 46% медицинских ошибок обусловлено неточностью при расшифровке рукописных данных. А уровень ошибок в медицинских базах данных достигал 26%, есть предположение, что это связано с тем, что персонал неправильно понял или не смог разобрать написанное от руки.

Так, например, некоторые результаты медицинских опросов населения показывают, что рост взрослого человека может быть 53 см или 112 см. И если в первом случае понятно, что закралась ошибка, и скорее всего рост реципиента был 153 см, то во втором случае рост может быть как правильным, так и ошибочным. При опросах часто встречаются ошибки-очепятки, такие как «аллергия на окошек» или вес 156 кг вместо 56 кг.

В среднем ошибки делятся на четыре типа:

  1. Запись
    Ошибка, при которой данные были изначально записаны неверно.
  2. Вставка
    Появление дополнительного символа.
    Например: 53,247 ► 523,247.
  3. Удаление
    Потеря одного или нескольких символов.
    Например: 53,247 ► 53,27.
  4. Перемена мест
    Просто берем и меняем два или более символов местами.
    Например: 53,247 ► 52,437.

Отдельно стоит рассмотреть диттографию (случайное повторение символа) и гаплографию (пропуск повторяющихся символов). С этими ошибками часто сталкиваются ученые, занимающиеся восстановлением поврежденных или переписанных от руки древних текстов. И это еще одна проблема, связанная с некачественными данными.

Часто ошибки встречаются в написании дат, а еще чаще при столкновении разных стандартов, таких как американский (месяц/день/год) и европейский (день/месяц/год).
И если иногда ясно, что это ошибка (23 марта — 3/25), то в других случаях она может быть не замечена (3 апреля — 3 / 5 или 5/3?).

Как снизить количество  ошибок


Гиппогриф — гордое и величественное  мифическое животное, разновидность грифонов. Да, на гравюре тоже он, но с ошибками в описании.

Первым действием нужно сократить количество этапов генерации данных до ввода. Если вы можете избежать участия бумажного носителя, как передаточного звена, исключайте его.
В электронных формах следует ввести проверку значений, особенно это важно при введении структурированных данных: индекс, номер телефона и код города, БИК, СНИЛС и р/с.

Во многих данных есть четкая структура, которая помогает снизить ошибки — это может быть и количество символов, и их разбивка по группам, и иные виды форматов.

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

Если же количество вариантов велико, то можно использовать форму вопрос-ответ с заключительным подтверждением правильности введенных данных.

Идеально — исключить человеческий фактор при вводе данных и автоматизировать процесс.
При расшифровке данных хорошо себя зарекомендовал «принцип двойной записи».
При использовании этого метода два сотрудника независимо друг от друга занимаются расшифровкой, а после результаты сравниваются и перепроверяются данные, в которых обнаружены расхождения.

Интересный метод проверки данных используется при передаче данных в цифровом формате.
Так, например, в номерах банковских счетов используется контрольное число (сумма).
Контрольное число — это когда после передаваемого номера добавляется число, используемое для проверки данных и обнаружения ошибок.

Так для числа 94121 контрольным числом будет 8, при последовательном складывании цифр получается сумма 17, продолжаем складывание и получаем 17=1+7=8.

Передаем 941218, а при получении система проводит обратные расчеты и, если сумма не совпадает, то число будет отмечено как ошибочное.

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


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

Возможно, вы с чем-то не согласны или хотите поделиться своими методами и наработками — приглашаю в комментарии и надеюсь на увлекательное и полезное обсуждение.

Всем спасибо за внимание и хорошего дня!

Источник информации

Автор: Карл Андерсон
Аналитическая культура. От сбора данных до бизнес-результатов
Creating a Data-Driven Organization
ISBN: 978-5-00100-781-4
Издательство: Манн, Иванов и Фербер


Подборка по базе: ТИПОВАЯ ЗАДАЧА № 2. ОПРЕДЕЛЕНИЕ СТАТИЧЕСКОЙ УСТОЙЧИВОСТИ ПРМ.doc, Л№2 Причины отказов программного обеспечения, признаки появления, Понятие, виды и структура бизнес плана.pdf, 4курсовая работа автодор Виды социальных услуг точно.rtf, 1. Статистика ошибок и дефектов в комплексах программ и их харак, Бланк отчета ПЗ 4.1.4. Определение класса защищенности ГИС — .do, 2022 Курсовая ГП Договор понятие значение виды! доработка 2.docx, Тема Определение коммерческой скорости и сроков.docx, Модуль 2. Виды конфликтов, ПЗ 2.doc, Диктант виды предложений.docx


Виды ошибок. Определение ошибок ПО. Классификация ошибок

Ошибки в программах могут допускаться от самого начального этапа составления алгоритма решения задачи до окончательного оформления программы. Разновидностей ошибок достаточно много. Рассмотрим некоторые группы ошибок и соответствующие примеры:

Вид ошибки Пример
Неправильная постановка задачи Правильное решение неверно сформулированной задачи
Неверный алгоритм Выбор алгоритма, который привел к неточному или неэффективному решению задачи
Ошибка анализа Неполный перечень ситуаций, которые могут возникнуть при решении задачи, наличие логических ошибок
Семантические ошибки Неправильное понимание порядка выполнение оператора
Синтаксические ошибки Нарушение правил, которые определяются выбранным ЯП
Ошибки при выполнении операций Использование слишком большого числа, деление на ноль, извлечение квадратного корня из отрицательного не комплексного числа и т.д.
Ошибки в данных Неправильно определен возможный диапазон изменения данных
Опечатки Неправильное использование схожих по внешнему виду символов
Ошибки ввода/вывода Неправильное считывание входных данных, неправильное задание форматов данных

Также, ошибки могут относится к самым разным частям кода:

  • ошибки обращения к данным,
  • ошибки описания данных,
  • ошибки вычислений,
  • ошибки при сравнении,
  • ошибки в передаче управления,
  • ошибки ввода-вывода,
  • ошибки интерфейса,

Ошибки


Ошибки выполнения

Ошибки компоновки

Ошибки компиляции

Классификация ошибок по этапу обработки программы

Ошибки выполнения


Ошибки накопления погрешностей

Ошибки определения данных


Логические ошибки


Кодирования

Проектирования

  • Игнорирование ограничений разрядной сетки
  • Игнорирование способов уменьшения погрешности
  • Ошибки передачи
  • Ошибки преобразования
  • Ошибки перезаписи
  • Неправильные данные

  • Некорректная работа с переменными
  • Некорректные вычисления
  • Ошибки межмодульных интерфейсов
  • Неправильная реализация алгоритма
  • Неправильный метод
  • Неверный алгоритм
  • Неверная структура данных
Классификация ошибок этапа выполнения

Ошибки анализа.
Связаны либо с неполным учетом ситуации, которые могут возникнуть, либо с неверным решением задачи.
К первому случаю относятся, например, пренебрежение возможностью появления отрицательных значений переменных, малых и больших величин.
Во втором случае обычно имеют место крупные и мелкие логические ошибки, из которых можно назвать:

  1. Отсутствие заданий начальных значений переменных.
  2. Неверные условия окончания цикла.
  3. Неверную индексацию цикла.
  4. Отсутствие задания условий инициирования цикла.
  5. Неправильное указание ветви алгоритма для продолжения процесса решения задачи.

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

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

Ошибки физического характера.
Можно назвать несколько типов ошибок, вызываемых неверными действиями разработчика:

  1. Пропуск некоторых операторов.
  2. Отсутствие необходимых данных.
  3. Непредусмотренные данные.
  4. Неверный формат данных.

Большое значение для успешной отладки программы имеют простота и рациональность ее кодирования. Когда программа написана аккуратно и логично, легче избежать ошибок или выявить их в случае возникновения.
Следует избегать возможных «костылей», т.к. чем их больше, тем труднее отладка программы для самого автора, а кто-то другой этого сделать просто не сможет.
Правильность программ.
Любые программы — правильные в отношении их логического построения только для определенного типа данных, поэтому необходимо четко определить область значений данных, в которой программа способна функционировать. Необходимо вводить операторы, позволяющие проверить, находятся ли данные в установленных границах.
Нарушение правильности может проявляться двумя способами:

  • неверная синтаксическая конструкция программы
  • программа выдает неверные результаты

Правильность синтаксиса означает, что должны быть точно сформированы наименования переменных; арифметические и логические операции должны подчиняться определенным синтаксическим правилам и т.п.

Синтаксические ошибки.
Выявление транслятором синтаксических ошибок представляет собой самый важный и необходимый этап отладки программы.
Если под синтаксической ошибкой понимать «всякое нарушение требований языка программирования», то следует признать, что многие ошибки остаются необнаруженными.
В качестве примеров синтаксических ошибок можно назвать:

  • пропуск необходимого знака пунктуации
  • несогласованность скобок
  • пропуск нужных скобок
  • неправильное формирование оператора
  • неверное образование имени переменной
  • неправильное использование арифметических операторов
  • неверное написание зарезервированных слов

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

  1. Противоречивые команды.
  2. Отсутствие условий окончания цикла.
  3. Дублирование или отсутствие меток.
  4. Отсутствие описания массива.
  5. Запрещенный переход.

Советы по устранению ошибок:

  1. Если ошибок много, то в первую очередь устранить очевидные.
  2. Обратиться к руководству по программированию на данном языке (справка).
  3. Выбрать хороший отладочный компилятор.

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

  1. Присваивание.
  2. Ввод.
  3. Чтение из файла.

Разные прогоны программы с одними и теми же данными могут привести к различным результатам.

Обнаружение ошибок.

Ситуации, по которым мы определяем, что в программе есть ошибка:

  1. Отсутствует уверенность в том, что программа начала выполняться.
  2. Программа начала выполняться, но произошел преждевременный останов с выдачей или без выдачи сообщений о системной ошибке.
  3. Программа начала выполняться, но зациклилась.
  4. Программа выдала неправильную информацию.

Любая из этих ситуаций требует проверки последовательности выполнения команд. Обычно для этого пригодна трассировка. Процесс обнаружения ошибок характеризуется выявлением двух мест в программе:

  • точки обнаружения
  • точки происхождения

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

Автор статьи

Юлия Валерьевна Шульгина

Эксперт по предмету «Логика»

преподавательский стаж — 10 лет

Задать вопрос автору статьи

Характеристика определения и сходных с определением приемов

Определение 1

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

Любое определение состоит из двух основных элементов:

  • того, что определяется (определяемого понятия, definiendum);
  • того, при помощи чего определяется (определяющего понятия, definiens).

Итак, определение как логическая операция состоит в придании языковому выражению (слову, словосочетанию) точного смысла. Целью определения является уточнение содержания используемых понятий. Задачей определения выступает выделение системы признаков, общей и отличительной для предметов, которые обозначаются рассматриваемым термином.

Китайский язык для начинающих

Научись писать, понимать и воспроизводить текстовую информацию

Выбрать занятия

Иногда дать определение (т.е. однозначно и полностью задать значение термина) невозможно. Тогда прибегают к приемам, сходным с определением:

  • указанию (остенсивному определению), т. е. разъяснению выражений путем непосредственного указания на предметы (процессы, явления), ими обозначаемые. Маленькие дети усваивают значения большинства терминов именно таким способом. Также остенсивные определения могут использоваться при изучении иностранного языка;
  • описанию, т. е. перечислению некоторых признаков предметов, позволяющих их отличить (обнаружить). Прием описания относится к эмпирическому уровню познания, на котором происходит выявление свойств изучаемых предметов;
  • характеристике, т. е. указанию существенных (в том или ином отношении) отличительных признаков. Характеристика близка к настоящему определению, но отличие состоит в том, что у характеристики нет цели отграничить, отличить характеризуемый предмет от всех остальных;
  • сравнению, т. е. косвенной характеристике, состоящей в указании общих и отличных черт предметов рассматриваемого класса по сравнению с предметами другого класса.

«Ошибки при определении понятий в логике» 👇

Классификация определений

В зависимости от того, что определяется (сам предмет или просто утверждается новое обозначающее его имя) выделяют два вида определений:

  • реальные (касающиеся предметов). Их цель – раскрыть содержание, взаимосвязи и существенные признаки предмета;
  • номинальные (касающиеся имен). Их цель – указать, что из перечисленного в определении именуется вводимым термином.

Определение 2

Номинальным определением называют соглашение, касающееся смысла и способа употребления термина (определяемого понятия), объясняющее значение имени (слова, термина), обозначающего конкретное понятие.

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

Пример номинального определения: «Электролиты – это вещества, растворы (расплавы) которых проводят электрический ток».

Определение 3

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

Пример реального определения: «Правосудие – это деятельность суда, заключающаяся в разбирательстве и разрешении гражданских и уголовных дел».

Разница между номинальными и реальными определениями состоит в различении описания и предписания. Описание предполагает указание на присущие предмету признаки. Если описание адекватно предмету, оно является истинным, если не адекватно – ложным. Поэтому реальное определение может быть истинным или ложным. В случае с предписанием ситуация иная. Предписание указывает, каким предмет должен быть, а не какой он уже есть. Поэтому у номинального определения нет истинностного значения.

По форме определения бывают:

  • явными (имеющими форму «А есть В» или «А, если и только если В»);
  • неявными (в которых нет четкого различия между определяемой и определяющей частями).

Правила определения и типовые ошибки

Ко всем определениям – независимо от их вида и формы – предъявляются определенные требования, сформулированные в виде правил.

Первое правило: определение должно быть соразмерным. В определении объем определяемого термина должен быть равен объему определяющего термина. Если это правило нарушается, могут возникнуть ошибки:

  1. Слишком широкое определение (если объем определяющего термина больше, чем объем определяемого термина).

    Пример 1

    Пример слишком широкого определения: «Море – это часть водной поверхности». Под это определение подходят не только моря, но и озера, и океаны, и даже лужи.

  2. Слишком узкое определение (если объем определяющего термина меньше, чем объем определяемого термина).

    Пример 2

    Пример слишком узкого определения: «Биология – это наука о растениях и животных». На самом деле, этими направлениями занимаются отдельные разделы биологии; биология в целом охватывает более общие и широкие вопросы.

Второе правило: определение не должно порождать круг. Это значит, что должны быть выполнены условия:

  • определяющая часть явного определения не должна содержать определяемый термин;
  • термины, используемые в определяющей части, не должны определяться через определяемый термин.

Если это правило нарушается, могут возникнуть следующие ошибки:

  1. Порочный круг. В этом случае смысл термина из определяющей части раскрывается в другом определении через исходный определяемый термин.

    Пример 3

    Пример порочного круга: «Материя – это все, не являющееся сознанием; сознание – это все, не являющееся материей».

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

    Пример 4

    Пример тавтологичного определения: «Дождливая погода – это погода, когда идет дождь».

Третье правило: определение должно быть ясным. Если это правило нарушается, формируется неясное определение (с двусмысленным, метафорическим и непонятным определяющим термином).

Пример 5

Пример неясного определения: «Такса – это колбаса с лапами». Если человек не знает, что такса – это порода собаки, по такому определению он даже не сможет разобраться, идет речь о живом существе или о блюде (форме изготовления колбасы).

Находи статьи и создавай свой список литературы по ГОСТу

Поиск по теме

Отладка программы — один их самых сложных этапов разработки программного обеспечения, требующий глубокого знания:

специфики управления используемыми техническими средствами,

операционной системы,

среды и языка программирования,

реализуемых процессов,

природы и специфики различных ошибок,

методик отладки и соответствующих программных средств. 

Отладка — это процесс локализации и исправления ошибок, обнаруженных при тестировании программного обеспечения. Локализацией называют процесс определения оператора программы, выполнение которого вызвало нарушение нормального вычислительного процесса. Доя исправления ошибки необходимо определить ее причину, т. е. определить оператор или фрагмент, содержащие ошибку. Причины ошибок могут быть как очевидны, так и очень глубоко скрыты.

Вцелом сложность отладки обусловлена следующими причинами:

требует от программиста глубоких знаний специфики управления используемыми техническими средствами, операционной системы, среды и языка программирования, реализуемых процессов, природы и специфики различных ошибок, методик отладки и соответствующих программных средств;

психологически дискомфортна, так как необходимо искать собственные ошибки и, как правило, в условиях ограниченного времени;

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

отсутствуют четко сформулированные методики отладки.

Всоответствии с этапом обработки, на котором проявляются ошибки, различают (рис. 10.1):


    синтаксические ошибки — ошибки, фиксируемые компилятором (транслятором, интерпретатором) при выполнении синтаксического и частично семантического анализа программы; ошибки компоновки — ошибки, обнаруженные компоновщиком (редактором связей) при объединении модулей программы;

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

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

Следует иметь в виду, что чем лучше формализованы правила синтаксиса языка, тем больше ошибок из общего количества может обнаружить компилятор и, соответственно, меньше ошибок будет обнаруживаться на следующих этапах. В связи с этим говорят о языках программирования с защищенным синтаксисом и с незащищенным синтаксисом. К первым, безусловно, можно отнести Pascal, имеющий очень простой и четко определенный синтаксис, хорошо проверяемый при компиляции программы, ко вторым — Си со всеми его модификациями. Чего стоит хотя бы возможность выполнения присваивания в условном операторе в Си, например:

if (c = n) x = 0; /* в данном случае не проверятся равенство с и n, а выполняется присваивание с значения n, после чего результат операции сравнивается с нулем, если программист хотел выполнить не присваивание, а сравнение, то эта ошибка будет обнаружена только на этапе выполнения при получении результатов, отличающихся от ожидаемых */ 

Ошибки компоновки. Ошибки компоновки, как следует из названия, связаны с проблемами,

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

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

• появление сообщения об ошибке, зафиксированной схемами контроля выполнения машинных команд, например, переполнении разрядной сетки, ситуации «деление на ноль», нарушении адресации и т. п.;

появление сообщения об ошибке, обнаруженной операционной системой, например, нарушении защиты памяти, попытке записи на устройства, защищенные от записи, отсутствии файла с заданным именем и т. п.;

«зависание» компьютера, как простое, когда удается завершить программу без перезагрузки операционной системы, так и «тяжелое», когда для продолжения работы необходима перезагрузка;

несовпадение полученных результатов с ожидаемыми.

Примечание. Отметим, что, если ошибки этапа выполнения обнаруживает пользователь, то в двух первых случаях, получив соответствующее сообщение, пользователь в зависимости от своего характера, степени необходимости и опыта работы за компьютером, либо попробует понять, что произошло, ища свою вину, либо обратится за помощью, либо постарается никогда больше не иметь дела с этим продуктом. При «зависании» компьютера пользователь может даже не сразу понять, что происходит что-то не то, хотя его печальный опыт и заставляет волноваться каждый раз, когда компьютер не выдает быстрой реакции на введенную команду, что также целесообразно иметь в виду. Также опасны могут быть ситуации, при которых пользователь получает неправильные результаты и использует их в своей работе.

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

неверное определение исходных данных,

логические ошибки,

накопление погрешностей результатов вычислений (рис. 10.2).

Н е в е р н о е о п р е д е л е н и е и с х о д н ы х д а н н ы х происходит, если возникают любые ошибки при выполнении операций ввода-вывода: ошибки передачи, ошибки преобразования, ошибки перезаписи и ошибки данных. Причем использование специальных технических средств и программирование с защитой от ошибок (см.§ 2.7) позволяет обнаружить и предотвратить только часть этих ошибок, о чем безусловно не следует забывать.

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

Кпоследней группе относят:

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

ошибки вычислений, например, некорректные вычисления над неарифметическими переменными, некорректное использование целочисленной арифметики, некорректное преобразование типов данных в процессе вычислений, ошибки, связанные с незнанием приоритетов выполнения операций для арифметических и логических выражений, и т. п.;

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

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

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

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

опосредованного проявления ошибок;

возможности взаимовлияния ошибок;

возможности получения внешне одинаковых проявлений разных ошибок;

отсутствия повторяемости проявлений некоторых ошибок от запуска к запуску – так называемые стохастические ошибки;

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

написания отдельных частей программы разными программистами.

Методы отладки программного обеспечения

Отладка программы в любом случае предполагает обдумывание и логическое осмысление всей имеющейся информации об ошибке. Большинство ошибок можно обнаружить по косвенным признакам посредством тщательного анализа текстов программ и результатов тестирования без получения дополнительной информации. При этом используют различные методы:

ручного тестирования;

индукции;

дедукции;

обратного прослеживания.

Метод ручного тестирования. Это — самый простой и естественный способ данной группы. При обнаружении ошибки необходимо выполнить тестируемую программу вручную, используя тестовый набор, при работе с которым была обнаружена ошибка.

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

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

Метод индукции. Метод основан на тщательном анализе симптомов ошибки, которые могут проявляться как неверные результаты вычислений или как сообщение об ошибке. Если компьютер просто «зависает», то фрагмент проявления ошибки вычисляют, исходя из последних полученных результатов и действий пользователя. Полученную таким образом информацию организуют и тщательно изучают, просматривая соответствующий фрагмент программы. В результате этих действий выдвигают гипотезы об ошибках, каждую из которых проверяют. Если гипотеза верна, то детализируют информацию об ошибке, иначе — выдвигают другую гипотезу. Последовательность выполнения отладки методом индукции показана на рис. 10.3 в виде схемы алгоритма.

Самый ответственный этап — выявление симптомов ошибки. Организуя данные об ошибке, целесообразно записать все, что известно о ее проявлениях, причем фиксируют, как ситуации, в которых фрагмент с ошибкой выполняется нормально, так и ситуации, в которых ошибка проявляется. Если в результате изучения данных никаких гипотез не появляется, то необходима дополнительная информация об ошибке. Дополнительную информацию можно получить, например, в результате выполнения схожих тестов.

В процессе доказательства пытаются выяснить, все ли проявления ошибки объясняет данная гипотеза, если не все, то либо гипотеза не верна, либо ошибок несколько.

Метод дедукции. По методу дедукции вначале формируют множество причин, которые могли бы вызвать данное проявление ошибки. Затем анализируя причины, исключают те, которые противоречат имеющимся данным. Если все причины исключены, то следует выполнить дополнительное тестирование исследуемого фрагмента. В противном случае наиболее вероятную гипотезу пытаются доказать. Если гипотеза объясняет полученные признаки ошибки, то ошибка найдена, иначе — проверяют следующую причину (рис. 10.4).

Метод обратного прослеживания. Для небольших программ эффективно применение метода обратного прослеживания. Начинают с точки вывода неправильного результата. Для этой точки строится гипотеза о значениях основных переменных, которые могли бы привести к получению имеющегося результата. Далее, исходя из этой гипотезы, делают предложения о значениях переменных в предыдущей точке. Процесс продолжают, пока не обнаружат причину ошибки.

При заполнении таблиц в Экселе вручную приходится вводить очень много данных, что может привести к появлению множества опечаток и ошибок. Некоторые такие ошибки может исключить проверка данных в Excel при вводе, что мы далее и рассмотрим.

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

Чтобы сделать проверку данных в Excel для определенных ячеек, их необходимо выделить, перейти на вкладку «Данные», и найти в разделе «Работа с данными» меню «Проверка данных». При нажатии на стрелочку справа от данного пункта появляется три пункта меню, из которых нам нужен самый первый «Проверка данных…».

Как сделать проверку данных в excel?

Уточненная декларация в обязательном порядке подается по любому налогу в случае, когда налогоплательщик самостоятельно обнаружил в ранее представленной декларации ошибку, которая привела к занижению суммы налога к уплате, а также при применении налогоплательщиком упрощенной системы налогообложения, в случае если организация продала основное средство до истечения срока, установленного п. 3 ст. 346.16 НК РФ. Во всех остальных случаях и неточностях в представленных данных подача уточненной налоговой декларации является правом налогоплательщика, но никак не его обязанностью.

Уточненная декларация представляется по той же форме, по которой представлялась первоначальная декларация. В уточненную декларацию нужно включить не только исправленные данные, но и все остальные показатели, в том числе и те, которые были изначально корректны.

При этом не стоит забывать, что если допущенная ошибка привела к занижению суммы налога к уплате, а срок уплаты уже прошел, то перед тем, как подать уточненную декларацию, следует заплатить не только сумму самой недоимки (дельту между уточнёнными и первоначальными данными по налогу), но и сумму начисленных за соответствующий период пеней. В противном случае, на налогоплательщика будет наложен штраф в размере 20% от суммы неуплаченного в срок налога. Также возможно, что предварительная уплата причитающихся сумм не сможет освободить от ответственности (если налоговый орган обнаружит ошибку раньше налогоплательщика, либо будет назначена выездная налоговая проверка).

Давайте разберем конкретные ситуации, которые могут возникнуть в действительности.

Какие есть сроки для подачи уточненных деклараций?

На практике широко распространено мнение, что подать «уточненку» можно только за период, не превышающий трехлетний срок. Однако это не совсем соответствует действительности. Согласно п. 1 ст. 81 НК РФ при обнаружении налогоплательщиком в поданной им декларации недостоверных сведений, а также ошибок, не приводящих к занижению суммы налога, подлежащей уплате, налогоплательщик вправе внести необходимые изменения в налоговую декларацию и представить в налоговый орган уточненную декларацию в порядке, установленном в данной статье. При этом уточненная налоговая декларация, представленная после истечения установленного срока подачи декларации, не считается представленной с нарушением срока. 

Однако в соответствии с п. 7 ст. 78 НК РФ заявление о зачете или о возврате суммы излишне уплаченного налога может быть подано в течение трех лет со дня уплаты указанной суммы, если иное не предусмотрено законодательством РФ.

Таким образом, подача «уточнёнки» может быть осуществлена за пределами 3-летнего срока, а вот возврат излишне уплаченного налога возможен только в пределах этого срока. Данное правило применяется и в отношении возврата (зачета) излишне уплаченных авансовых платежей (п. 14 ст. 78 НК РФ).

Итак, основания для возврата переплаты наступают с даты представления налогоплательщиком уточненной декларации за соответствующий год, но не позднее срока, установленного для ее представления в налоговый орган. Такой вывод сделан в Постановлении Президиума ВАС РФ от 28.06.2011 №17750/10.

Заявление о возврате суммы излишне уплаченного налога может быть подано налогоплательщиком в течение 3-х лет, начиная с даты фактического представления налоговой декларации за соответствующий налоговый период, но не позднее срока, установленного для ее представления в налоговый орган (т.е. срок может быть только более ранним, чем законодательно установленный). Дата фактического представления налоговой декларации подтверждается отчетом оператора, через которого сдается налоговая отчетность в электронном виде.

Определяем, грозит ли нам ответственность за представление «уточнёнки»?

Законодательством поощряется намерение налогоплательщиков (плательщиков сборов, налоговых агентов) самостоятельно выявлять допущенные ими искажения в отчетности и устранять их. Так, п. 3 и п. 4 ст. 81 НК РФ предусматривают условия освобождения от налоговой ответственности при сдаче «уточненки» к доплате, если соблюдаются следующие условия:

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

когда уточненная декларация представляется в налоговый орган после истечения срока подачи налоговой декларации и срока уплаты налога, при условии, что одновременно соблюдаются следующие требования:

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

  • до представления уточненной декларации налогоплательщик уплатил недостающую сумму налога и соответствующие ей пени.

При этом необходимо отметить, что согласно многочисленным разъяснениям сам факт представления уточненной декларации с суммой налога, подлежащей доплате, еще не свидетельствует о занижении налогоплательщиком налоговой базы. В любом случае, чтобы привлечь лицо к ответственности должен быть установлен соответствующий состав налогового правонарушения (Письмо Минфина России от 04.02.2013 №03-02-07/1/2279; Постановление ФАС СЗО от 21.01.2014 № А05-1380/2013).

Кроме того, возможен вариант, что по соответствующему налогу у налогоплательщика по данным карточки «Расчеты с бюджетом» (КРСБ) числится образовавшаяся еще до уточняемого периода переплата, сумма которой в полной мере перекрывает суммы недоимки по «уточненке» и начисленных пеней, в таком случае штраф начисляться не должен. Ведь в соответствии с п. 20 Постановления Пленума ВАС РФ от 30.07.2013 № 57 налоговый орган вправе самостоятельно зачесть переплату в счет недоплаченной суммы налога.

В целом все ясно и просто: перед тем как сдать «уточненку» (после положенного срока) нужно заплатить суммы налога и пени либо подтвердить, что суммы переплаты по соответствующему налогу хватит покрыть образующуюся недоимку, нужно убедиться, что в отношении вашей организации (индивидуального предпринимателя) не назначена выездная налоговая проверка (а не знать об этом достаточно сложно, так как налоговый орган уведомляет о таком событии всегда своевременно и по всем имеющимся у него ресурсам), и мы получаем освобождение от штрафных санкций. Казалось бы, все предельно понятно, но что делать с туманной формулировкой «…до момента, когда налогоплательщик узнал об обнаружении налоговым органом неотражения или неполноты отражения сведений…».

Приведем ситуацию, когда вам могут грозить штрафные санкции. 

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

В любом случае стоит помнить, что для привлечения к ответственности, предусмотренной ст. 122 НК РФ, необходимо наличие установленных в ходе проведения выездной или камеральной налоговой проверки обстоятельств, свидетельствующих о совершении налогоплательщиком неправомерных действий либо неправомерного бездействия, повлекших незаконное занижение налоговой базы по налогу за определенный налоговый период, которое, в свою очередь, повлекло его неуплату за этот период.

Как отразится сдача уточненной декларации на ходе налоговой проверки?

Если уточненная декларация сдается до окончания проведения камеральной налоговой проверки за этот же период, то налогоплательщику необходимо учесть следующее:

  • проверка первоначальной (предыдущей «уточненки») прекращается, как и все контрольные мероприятия, проводимые в её рамках;
  • начинается новая проверка представленной декларации, соответственно, сроки её проведения обновляются;
  • налоговый орган может использовать в новой проверке те документы и сведения, которые были получены им в рамках прекращенной проверки, это относится и к результатам проведенных контрольных мероприятий;
  • даже если предыдущая проверка, в рамках которой было получено требование о предоставлении сведений, прекращена, запрошенные документы и пояснения стоит всё же представить, иначе вы рискуете стать привлеченным к ответственности в виде штрафа в размере 200 руб. за каждый непредставленный документ. Ведь ст. 88 и ст. 93 НК РФ не содержат норм об отзыве налоговым органом выставленного ранее требования в случае представления налогоплательщиком «уточненки». Такого же мнения придерживаются и суды (Определения ВС РФ от 12.11.2015  № 306-КГ15-14509, от 12.04.2016 № 306-КГ16-2522).

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

Самый безболезненный вариант — сдать «уточненку» во время проведения проверки, т.е. до того момента, как налогоплательщику будет вручена справка о проведенной выездной налоговой проверке. В таком случае уточнённые данные в обязательном порядке будут учтены проверяющими в результатах такой проверки. 

Имейте в виду, что к сдаче «уточнёнок» во время проверок налоговый орган относится с повышенным вниманием. Скорее всего в таком случае будет выставлено требование о представлении документов и пояснений на суммы уточнений. Запрошенные документы и пояснения должны быть представлены в течение 10 рабочих дней. Для подтверждения данных, внесенных в налоговую декларацию, налогоплательщик может дополнительно представить бухгалтерские справки, выписки из регистров налогового и (или) бухгалтерского учета и (или) другие документы, а также дать письменные пояснения в произвольной форме по заданным вопросам, чтобы подтвердить правомерность своей позиции.

Неясным остается вопрос, что произойдет, если уточненная декларация будет сдана уже после проверки. Например, после того, как налогоплательщик получит Акт выездной налоговой проверки или даже Решение о привлечении к ответственности за совершение налогового правонарушения. Конечно, говорить о том, что такая «уточнёнка» будет проанализирована в ходе проверки не приходится, ведь проверка будет уже закончена. Таким образом, у налогового органа будет право на выбор одного из следующих действий:

  • проведение дополнительных мероприятий налогового контроля после проведения выездной налоговой проверки (если ещё не было вынесено Решение о привлечении к ответственности за совершение налогового правонарушения);
  • назначение повторной выездной налоговой проверки, предметом которой станут именно уточнённые данные по декларации;
  • проведение камеральной налоговой проверки, если назначение выездной проверки сочтут нецелесообразным.

Будьте внимательны! Имейте в виду, что представление уточнённой декларации может инициировать назначение выездной налоговой проверки за корректируемый период, в т.ч. повторной. В рамках этой повторной выездной проверки проверяется период, за который представлена уточненная налоговая декларация. При этом норма абз. 6 п. 10 ст. 89 НК РФ не исключает возможность проведения повторной выездной проверки уточненных налоговых деклараций по налогу на прибыль, в которых увеличена сумма первоначально заявленного убытка.

С помощью программной линейки продуктов компании Такском вы всегда гарантированно сможете быстро, надёжно и максимально удобно обмениваться документами с ФНС и другими контролирующими органами. Просто выберите удобный для себя тариф и присоединяйтесь к дружной семье абонентов Такском. 

Несмотря на кажущуюся простоту отчета СЗВ-ТД, при его формировании пользователи могут столкнуться с рядом сложностей. На основе поступающих обращений к нам на Линию консультаций мы рассмотрели наиболее частые из них.

  • СЗВ-ТД: что это и для чего нужно
  • Формы подачи отчета
  • В каких случаях отправляется
  • Сроки отправки СЗВ-ТД
  • Формирование СЗВ-ТД в 1С:ЗУП 3.1 и частые ошибки
  • Ошибочная подача нескольких событий
  • Дублирование мероприятий
  • Исправление неверно поданных данных
  • Отсутствие мероприятий в формируемом отчете
  • Несовпадение кодов мероприятий при корректировке или отмене поданных данных
  • Штрафы и ответственность

СЗВ-ТД: что это и для чего нужно

Сведения о трудовой деятельности зарегистрированного лица или СЗВ-ТД — это отчет, который необходимо формировать бухгалтеру на основании приказов, распоряжений и иных решений или документов кадрового учета для отправки в ПФР. Полученные данные позволяют Фонду фиксировать стаж работников и все ключевые кадровые изменения.

Формы подачи отчета

СЗВ-ТД можно сдавать либо на бумажном носителе в случае, если в компании работает менее 25 человек, либо в электронном виде.

Не нашли ответа на свой вопрос в наших статьях?

Обратитесь за помощью к специалисту напрямую. Быстро ответим и поможем решить проблему.

Обратиться

В каких случаях отправляется

СЗВ-ТД необходимо подавать при приеме на работу, переводе сотрудника на другую должность и увольнении. Также основаниями для отправки являются повышение квалификации сотрудника или получение им дополнительной специальности, наличие судебного решения на запрет занимать определенные должности, а также получение от работника заявления с выбором формы ведения трудовой книжки.

Помимо этого, с октября 2022 г. СЗВ-ТД необходимо отправлять при приостановлении или возобновлении трудового договора.

Сроки отправки СЗВ-ТД

В соответствии с п. 2,5 ст. 11 Закона от 01.04.1996 № 27-ФЗ, при приеме на работу и увольнении отчет СЗВ-ТД формируется и сдается в ПФР не позднее рабочего дня, следующего за днем издания соответствующего кадрового приказа. При переводе на другую должность и прочих кадровых мероприятиях СЗВ-ТД сдается не позднее 15 числа месяца, который следует за месяцем, в котором были зарегистрированы кадровые изменения.

Формирование СЗВ-ТД в 1С:ЗУП 3.1 и частые ошибки

В программе 1С:ЗУП 3.1 отчет СЗВ-ТД можно сформировать двумя способами: либо через раздел «Отчетность, справки», либо через раздел «Кадры» — «Электронные трудовые книжки».

При этом часто пользователи сталкиваются со следующими сложностями при формировании отчета, а именно:

  • Ошибочной подачей нескольких событий.
  • Дублированием мероприятий.
  • Исправлением неверно поданных данных.
  • Отсутствием мероприятий в формируемом отчете.
  • Несовпадением кодов мероприятий при корректировке или отмене поданных данных.

Наиболее корректным и предпочтительным вариантом исправления подобных ошибок является перезаполнение документов или переформирование СЗВ-ТД заново с верными данные. Однако это возможно тогда, когда ошибки допущены в текущем периоде. На практике же часто бывает, что необходимо исправить ошибку, допущенную в прошлых периодах, и чем быстрее, тем лучше. Поэтому далее мы более подробно рассмотрим каждый из случаев и возможные варианты оперативного решения возникших трудностей.

Ошибочная подача нескольких событий

Данная ошибка возникает в случае, если по каким-то причинам в графу «Мероприятия» подтягивается не только нужное значение, но и то, по которому СЗВ-ТД уже был отправлен ранее. Например, сотрудника перевели на другую должность, сформировали кадровый перевод, а в СЗВ-ТД по этому сотруднику помимо перевода подтягивается еще и прием на работу.

СЗВ-ТД

Для исправления ошибки, в первую очередь, необходимо проверить галку «Документ принят в ПФР» в СЗВ-ТД, поданном ранее для «ненужного» мероприятия (в нашем примере это прием на работу). Если галка не стоит, ее необходимо проставить и провести документ заново. Далее — сформировать СЗВ-ТД на перевод.

СЗВ-ТД

Если же в ранее поданном СЗВ-ТД необходимая галка стояла, исправить ошибку можно, сформировав искусственную отмену «ненужного» мероприятия. Для этого нужно:

1. Предварительно отменить проведения нужного мероприятия (кадровый перевод в примере), чтобы оно не подтягивалось.

2. Сформировать документ «Регистрация трудовой деятельности», отменяющий «ненужное» мероприятие (прием на работу).

Регистрация трудовой деятельности

Регистрация трудовой деятельности

3. Сформировать «черновой» вариант СЗВ-ТД с признаком отмены «ненужного» мероприятия. Проверить, что мероприятие действительно отменено, можно с помощью вывода печатной формы документа. Обратите внимание, что этот документ черновой и отправлять его не нужно.

СЗВ-ТД

4. Провести кадровый документ с «нужным» мероприятием (кадровый перевод).

5. Сформировать «чистовой» вариант СЗВ-ТД и отправить его в Фонд.

СЗВ-ТД

Дублирование мероприятий

Возникает тогда, когда в СЗВ-ТД подтягиваются два одинаковых мероприятия. Это может быть связано с перепроведением кадровых документов, внесением каких-либо изменений в них и, как следствие, с неправильным отражением данных по регистрам учета.

Исправить данную ошибку можно, сформировав СЗВ-ТД с помощью документа «Регистрация трудовой деятельности», для этого нужно:

1. Сформировать «неправильный» СЗВ-ТД с задублированными мероприятиями — это «черновой» вариант, который отправлять в Фонд не нужно.

СЗВ-ТД

2. Создать документ «Регистрация трудовой деятельности» и вручную внести необходимые данные по мероприятию.

Регистрация трудовой деятельности

3. Создать новый «чистовой» СЗВ-ТД и отправить в Фонд.

Исправление неверно поданных данных

Иногда возникают ситуации, когда в поданном СЗВ-ТД допущены ошибки: например, указан неправильный номер или дата приказа. Для исправления неверно поданных данных формируется корректировочный СЗВ-ТД через документ «Регистрация трудовой деятельности», для этого нужно:

1. Создать документ «Регистрация трудовой деятельности» и по кнопке «Изменить» внести в него актуальные данные.

Регистрация трудовой деятельности

2. Создать СЗВ-ТД и отправить в Фонд.

Отсутствие мероприятий в формируемом отчете

Помимо вышеописанных ситуаций пользователи сталкиваются с тем, что СЗВ-ТД формируется пустым без каких-либо мероприятий. В данном случае в программе необходимо проделать следующие действия:

  1. Проверить, выставлена ли галка «Отразить в трудовой книжке» в кадровых документах, данные из которых должны подтягиваться в графу «Мероприятия» СЗВ-ТД. Если указанная галка в них не выставлена, то проставить ее, перепровести данные кадровые документы и сформировать отчет.
  2. Проверить, были ли ранее сформированы отчеты СЗВ-ТД по данному мероприятию: если они были сформированы, то необходимо снять в них галку «Документ принят в ПФР (не редактируется)».
  3. Если все настройки и ранее сформированные отчеты проверены, но СЗВ-ТД все равно заполняется пустым, то сформировать документ «Регистрация трудовой деятельности» с необходимым мероприятием (внести данные вручную) и затем создать СЗВ-ТД.

Несовпадение кодов мероприятий при корректировке или отмене поданных данных

При проведении кадрового документа и первичном формировании СЗВ-ТД каждому мероприятию в программе присваивается свой уникальный код — так называемый, код GUID (или UUID). Данный код представляет собой идентификатор, который обеспечивает уникальность электронного документа.

Увидеть код GUID можно двумя способами: либо нажав на кнопку «Открыть файл» в СЗВ-ТД, либо через Мероприятие в СЗВ-ТД в графе «Идентификатор». Если графы «Идентификатор» нет, ее можно добавить через функцию «Изменить форму» по кнопке «Еще».

СЗВ-ТД

Мероприятия

При корректировке или отмене ранее поданных сведений необходимо, чтобы этот код совпадал с тем, который до этого был представлен в ПФР по данному мероприятию. В случае если эти коды не совпадают, ПФР присылает отказ в приеме отчета. Тогда чаще всего в протоколе ошибок указывается код ошибки 30 с описанием проверки «По застрахованному лицу мероприятия не приняты. Не найдены исходные сведения для отменяемого мероприятия».

Перечень ошибок

Для того чтобы исправить расхождение в кодах GUID, необходимо скопировать нужный код и вставить вместо ошибочного. Для этого нужно:

  1. Уточнить исходный GUID, который понадобится для подачи сведений (т.е. следует открыть первоначально поданный СЗВ-ТД с верным кодом).
  2. Скопировать нужный код (либо через «Открыть файл», либо через мероприятие в СЗВ-ТД скопировать идентификатор в соответствующей графе). Обратите внимание, что копирование или редактирование кода GUID в графе «Идентификатор» возможно только в том случае, если в СЗВ-ТД не стоит галка «Документ принят в ПФР (не редактируется)».
  3. Открыть корректировочный или отменяющий СЗВ-ТД, в графу «Идентификатор» в Мероприятии вставить нужный код и сохранить изменения.
  4. Провести корректировочный или отменяющий СЗВ-ТД и отправить в Фонд.

Аналогичным образом код GUID при необходимости может быть добавлен и отредактирован в документе «Регистрация трудовой деятельности».

Штрафы и ответственность

В соответствии со ст. 15.33.2 КоАП РФ, в случае несвоевременной сдачи СЗВ-ТД или сдаче с ошибочными данными, за каждого работника должностному лицу грозит штраф в размере от 300 до 5000 рублей, а самой организации — 500 рублей.

Помимо этого, существует штраф за нарушение правил сдачи формы СТД-Р, данные которой формируются на основе ранее поданных работодателем отчетов СЗВ-ТД и которую при увольнении выдают сотруднику с электронной трудовой книжкой. Если просрочить выдачу СТД-Р сотруднику, к организации могут быть применены штрафные санкции по ст. 5.27 КоАП РФ.

Отладка – это процесс локализации и исправления ошибок,

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

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

Отладка программы – один их самых сложных этапов разработки программного обеспечения, требующий глубокого знания:

специфики управления используемыми техническими средствами;

операционной системы;

среды и языка программирования;

реализуемых процессов;

природы и специфики различных ошибок;

методик отладки и соответствующих программных средств.

9.1Классификация ошибок

Всоответствии с этапом обработки, на котором проявляются ошибки, различают:

синтаксические ошибки;

ошибки компоновки;

ошибки выполнения.

Ошибки

Ошибки

Ошибки

Ошибки

компиляции

компоновки

выполнения

9.1 Классификация ошибок (2)

Синтаксические ошибки

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

Чем лучше формализованы правила синтаксиса языка, тем больше ошибок из общего количества может обнаружить компилятор.

Всвязи с этим говорят о языках программирования с защищенным синтаксисом и с незащищенным синтаксисом.

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

Ко вторым – С со всеми его модификациями.

9.1 Классификация ошибок (3)

Ошибки компоновки

Ошибки компоновки связаны с проблемами, обнаруженными при разрешении внешних ссылок.

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

Ошибки выполнения

К самой непредсказуемой группе относятся ошибки выполнения.

Они могут иметь разную природу, и соответственно по-разному проявляться.

Часть ошибок обнаруживается и документируется операционной системой.

Выделяют четыре способа проявления таких ошибок:

9.1Классификация ошибок (4)

появление сообщения об ошибке, зафиксированной схемами контроля выполнения машинных команд, например, переполнении разрядной сетки, ситуации «деление на ноль», нарушении адресации и т.п.;

появление сообщения об ошибке, обнаруженные операционной системой, например, нарушении защиты памяти, попытке записи на устройства, защищенные от записи, отсутствии файла с заданным именем и т.п.;

«зависание» компьютера, как простое, когда удается завершить программу без перезагрузки операционной системы, так и «тяжелое», когда для продолжения работы необходима перезагрузка;

несовпадение полученных результатов с ожидаемыми.

9.1 Классификация ошибок (5)

Все возможные причины ошибок выполнения можно разделить на следующие группы:

Ошибки

выполнения

Ошибки определения данных

Ошибки

передачи

Ошибки

преобразования

Ошибки

перезаписи

Неправильные

данные

Логические

ошибки

Проектирования

Кодирования

Неприменимый

Некорректная

работас

метод

переменными

Неверный

Некорректные

алгоритм

вычисления

Неверная

Ошибки

структураданных

межмодульных

Другие

интерфейсов

Неправильнаяреализация

алгоритма

Другие

Ошибки накопления погрешностей

Игнорирование

ограничений разрядной сетки

Игнорирование

способов

уменьшения

погрешности

9.2 Методы отладки

Отладка программы в любом случае предполагает обдумывание и логическое осмысление всей имеющейся информации об ошибке. При этом можно использовать различные методы:

метод тестирования;

метод индукции;

метод дедукции;

метод обратного прослеживания.

Метод тестирования

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

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

Данный метод часто используется как составная часть других методов отладки

9.2 Методы отладки(2)

Метод индукции

Метод основан на тщательном анализе симптомов ошибки, которыми могут проявляться как неверные результаты

вычислений или как сообщение об ошибке.

Процесс отладки с использованием метода индукции можно представить в виде алгоритма.

Самый ответственный этап – получение необходимой информации об ошибке. Дополнительную информацию можно получить в результате выполнения схожих

тестов.

В процессе доказательства пытаются выяснить, все ли проявления ошибки объясняет данная гипотеза, если не все, то либо гипотеза не верна, либо ошибок несколько.

Начало

Выявлениесимптомов ошибки

Организацияданных обошибке

Изучениеих взаимосвязей

Выдвижениегипотезы

Доказательство

гипотезы

Гипотеза

нет

доказана?

да

Нахождениеошибки

Конец

9.2 Методы отладки(2)

Метод дедукции

Начало

По

методу

дедукции

вначале

Перечисление

формируют

множество

причин,

возможныхпричин

которые могли бы вызвать данное

проявление

ошибки.

Затем

Сборновыхданных

Использование

анализируя причины, исключают

те,

процессаисключения

которые

противоречат

имеющимся

да

Исключены

данным.

все?

Если все причины исключены, то следует

нет

Доказательство

выполнить

дополнительное

гипотезы

тестирование

исследуемого

фрагмента.

Гипотеза

нет

В

противном

случае

наиболее

доказана?

да

вероятную

гипотезу

пытаются

Нахождениеошибки

доказать.

Если

гипотеза

объясняет

полученные

признаки

ошибки,

то

ошибка найдена, иначе – проверяют

Конец

следующую причину.

9.3 Общая методика отладки ПО

Можно предложить следующую методику отладки программного обеспечения, написанного на универсальных языках программирования для выполнения в операционных системах MS DOS и Win32:

1 этап. Изучение проявления ошибки.

2 этап. Локализации ошибки .

3 этап. Определение причины ошибки.

4 этап. Исправление ошибки .

5 этап. Повторное тестирование.

Следует иметь в виду, что процесс отладки можно существенно упростить, если следовать основным рекомендациям структурного подхода к программированию.

Логическая ошибка, или алогизм, — это ход мысли, нарушающий какие-то законы или правила логики.

Если ошибка допущена неумышленно, ее называют паралогизмом.

Когда ошибка допускается преднамеренно, ее обычно именуют со­физмом, хотя, как увидим далее, многие из софизмов не сводятся к ло­гической ошибке.

Ошибки в доказательствах уже обсуждались. Рассмотрим теперь ошибки в определениях, в делениях (классификациях) и софизмы.

Все определения делятся на неявные и явные.

Явное определение — это определение, имеющее форму равенства двух понятий (определяемого и определяющего).

Неявное определение — определение, не имеющее формы равен­ства двух понятий.

К неявным относятся определения путем указания отрывка текста, в котором встречается определяемое понятие, определения посред­ством показа предмета, подпадающего под это понятие, и т. п. В явных определениях отождествляются, приравниваются друг к другу два имени. Одно — определяемое имя, содержание которого требуется раскрыть, другое — определяющее имя, решающее эту задачу.

Обычное словарное определение гиперболы: «Гипербола — это стилистическая фигура, состоящая в образном преувеличении, напри­мер: „Наметали стог выше тучи“». Определяющая часть выражается словами «стилистическая фигура, состоящая.» и слагается из двух частей. Сначала понятие гиперболы подводится под более широкое понятие «стилистическая фигура». Затем гипербола отграничивает­ся от всех других стилистических фигур. Это достигается указанием признака «образное преувеличение», присущего только гиперболе и отсутствующего у других стилистических фигур, за которые можно было бы принять гиперболу. Явное определение гиперболы дополня­ется примером.

К явным определениям, и в частности к классическим, предъявляется ряд достаточно простых и очевидных требований. Их называют прави­лами определения.

1. Определяемое и определяющее понятия должны быть взаимоза­меняемы. Если в каком-то предложении встречается одно из этих по­нятий, всегда должна существовать возможность заменить его другим. При этом предложение, истинное до замены, должно остаться истинным и после нее.

Для определений через род и видовое отличие это правило форму­лируется как правило соразмерности определяемого и определяющего понятий: совокупности предметов, охватываемые ими, должны быть од­ними и теми же.

Соразмерны, например, имена «гомотипия» и «сходство симметрич­ных органов» (скажем, правой и левой руки). Соразмерны также «гол­кипер» и «вратарь», «нонсенс» и «бессмыслица». Встретив в каком-то предложении слово «нонсенс», мы вправе заменить его на «бессмысли­цу» и наоборот.

Если объем определяющего понятия шире, чем объем опреде­ляемого, говорят об ошибке слишком широкого определения. Та­кую ошибку мы допустили бы, определив, к примеру, ромб просто как плоский четырехугольник. В этом случае к ромбам были бы отнесены и трапеции, и все прямоугольники, а не только те, у которых равны все стороны.

Если объем определяющего понятия уже объема определяемого, имеет место ошибка слишком узкого определения. Такую ошибку допускает, в частности, тот, кто определяет ромб как плоский четы­рехугольник, у которого все стороны и все углы равны. Ромб в этом случае отождествляется со своим частным случаем — квадратом, и из числа ромбов исключаются четырехугольники, у которых не все углы равны.

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

Содержат очевидный круг определения «Война есть война» и «Театр — это театр, а не кинотеатр». Задача определения — раскрыть содержание ранее неизвестного имени и сделать его известным. Опреде­ление, содержащее круг, разъясняет неизвестное через него же. В итоге неизвестное так и остается неизвестным. Истину можно, к примеру, оп­ределить как верное отражение действительности, но только при усло­вии, что до этого верное отражение действительности не определялось как такое, которое даст истину.

3. Определение должно быть ясным. Это означает, что в определяю­щей части могут использоваться только имена, известные и понятные тем, на кого рассчитано определение. Желательно также, чтобы в этой части не встречались образы, метафоры, сравнения, т. е. все то, что не предполагает однозначного и ясного истолкования.

Можно определить, к примеру, пролегомены как пропедевтику. Но такое определение будет ясным лишь для тех, кто знает, что пропедевти­ка — это введение в какую-либо науку.

Не особенно ясны определения «Архитектура — это застывшая музыка», «Овал — круг в стесненных обстоятельствах», «Дети — это цветы жизни» и т. п. Они образны, иносказательны, ничего не говорят об определяемом предмете прямо и по существу, каждый человек может понимать их по-своему.

Ясность не является, конечно, абсолютной и неизменной характе­ристикой. Ясное для одного может оказаться не совсем понятным для другого и совершенно темным и невразумительным для третьего. Пред­ставления о ясности меняются и с углублением знаний. На первых порах изучения каких-то объектов даже не вполне совершенное их определение может быть воспринято как успех. Но в дальнейшем первоначальные оп­ределения начинают казаться все более туманными. Встает вопрос о за­мене их более ясными определениями, соответствующими новому, более высокому уровню знания.

Интересно отметить, что наши обычные загадки представляют собой, в сущности, своеобразные определения. Формулировка загадки — это половина определения, его определяющая часть. Отгадка — вторая его половина, определяемая часть. «Утром — на четырех ногах, днем — на двух, вечером — на трех. Что это?» Понятно, что это — человек в разные периоды своей жизни. Саму загадку можно переформулировать так, что она станет одним из возможных его определений.

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

Древний китайский буддист Дэн Инь-фэн однажды задал такую за­гадку своим ученикам. «Люди умирают сидя и лежа, некоторые умирают даже стоя. А кто умер вниз головой?» — «Мы такого не знаем», — от­ветили ученики. Тогда Дэн встал на голову и. умер.

Сейчас такого рода «загадка» кажется абсурдом. Но в то давнее вре­мя, когда жил Дэн, в атмосфере полемики с существующими обычаями и ритуалом его «загадка» и предложенная им «разгадка» показались вполне естественными. Во всяком случае, его сестра, присутствовав­шая при этом, заметила только: «Живой ты, Дэн, пренебрегал обычаями и правилами и вот теперь, будучи мертвым, опять нарушаешь общест­венный порядок!»

< Предыдущая   Следующая >


Многие компании считают, что работают и принимают решения на основе данных, но часто это не так. Ведь для того чтобы управление велось на основе данных, их, эти самые данные, недостаточно только собрать и свести в статистику.

Намного важнее провести правильный анализ, а для этого они должны быть «чисты».
Разбираться в чистоте данных и в основных качественных параметрах я начну с этой статьи.
Для достоверной аналитики должны быть соблюдены все «П» данных: правильные, правильно собранные, собранные в правильной форме, в правильном месте и в правильное время.
Если один из параметров нарушен, это может сказаться на достоверности всей аналитики, а значит нужно понимать, на что важно обращать внимание при  работе с данными.

Главные аспекты качества данных

Доступность
У аналитиков должен быть доступ к необходимым данным, но, кроме этого, доступ должен быть и к инструментам, используемым в аналитике.

Точность
Все данные должны быть достоверны, а также указаны допустимые погрешности.
Точная температура — хорошие данные, а устаревший адрес, телефон или e-mail — нехорошие данные.

Взаимосвязанность
Всегда должна быть возможность связать одни данные с другими. Например, к номеру заказа должна быть привязана информация о клиенте, его адрес, контактная и платежная информации.

Полнота
Данные должны быть «жирными» и со всеми частями. «Инвалиды» с отсутствующей частью информации могут помешать получить качественную аналитику.

Непротиворечивость
Если данные не согласованы и противоречат друг другу, значит где-то закралась ошибка.
Так если адрес клиента присутствует в двух базах, то он должен совпадать. В противном случае необходимо выбрать один источник достоверным и игнорировать остальные до исправления ошибок.

Однозначность
Каждое поле с информацией должно иметь полноценное описание, не допускающее двусмысленных значений.

Релевантность
Данные должны соответствовать характеру анализа.
Например, статистика сезонных миграций леммингов слабо относится к сезонным колебаниям биржевых курсов.

Тот самый лемминг, не влияющий на биржевые курсы.

Надежность
Надежные данные — это одновременно полная и точная информация.

Своевременность
Бич российского бизнеса — несвоевременные данные.
Часто случается, что данные еще не успели обработать и проанализировать, а они уже устарели.

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

Еще один недостаток устаревших данных — они стали уже почти бесполезны, а компания несет издержки по их хранению и обработке.

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

Данные с ошибками


Василиск — в его описании явно закралась ошибка.

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

Давайте разберем основные причины возникновения ошибок и способы, которые помогут их избежать.

Генерация данных
Самая частая и очевидная причина ошибок: тут могут быть как технические причины, так и влияние человеческого фактора.

В случае технических причин и сбоев все решается калибровкой и правильной настройкой инструментов сбора информации.

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

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

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

Самое надежное и простое решение — стандартизировать как можно больше этапов процесса сбора данных.

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

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

Так исследование показало, что 46% медицинских ошибок обусловлено неточностью при расшифровке рукописных данных. А уровень ошибок в медицинских базах данных достигал 26%, есть предположение, что это связано с тем, что персонал неправильно понял или не смог разобрать написанное от руки.

Так, например, некоторые результаты медицинских опросов населения показывают, что рост взрослого человека может быть 53 см или 112 см. И если в первом случае понятно, что закралась ошибка, и скорее всего рост реципиента был 153 см, то во втором случае рост может быть как правильным, так и ошибочным. При опросах часто встречаются ошибки-очепятки, такие как «аллергия на окошек» или вес 156 кг вместо 56 кг.

В среднем ошибки делятся на четыре типа:

  1. Запись
    Ошибка, при которой данные были изначально записаны неверно.
  2. Вставка
    Появление дополнительного символа.
    Например: 53,247 ► 523,247.
  3. Удаление
    Потеря одного или нескольких символов.
    Например: 53,247 ► 53,27.
  4. Перемена мест
    Просто берем и меняем два или более символов местами.
    Например: 53,247 ► 52,437.

Отдельно стоит рассмотреть диттографию (случайное повторение символа) и гаплографию (пропуск повторяющихся символов). С этими ошибками часто сталкиваются ученые, занимающиеся восстановлением поврежденных или переписанных от руки древних текстов. И это еще одна проблема, связанная с некачественными данными.

Часто ошибки встречаются в написании дат, а еще чаще при столкновении разных стандартов, таких как американский (месяц/день/год) и европейский (день/месяц/год).
И если иногда ясно, что это ошибка (23 марта — 3/25), то в других случаях она может быть не замечена (3 апреля — 3 / 5 или 5/3?).

Как снизить количество  ошибок


Гиппогриф — гордое и величественное  мифическое животное, разновидность грифонов. Да, на гравюре тоже он, но с ошибками в описании.

Первым действием нужно сократить количество этапов генерации данных до ввода. Если вы можете избежать участия бумажного носителя, как передаточного звена, исключайте его.
В электронных формах следует ввести проверку значений, особенно это важно при введении структурированных данных: индекс, номер телефона и код города, БИК, СНИЛС и р/с.

Во многих данных есть четкая структура, которая помогает снизить ошибки — это может быть и количество символов, и их разбивка по группам, и иные виды форматов.

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

Если же количество вариантов велико, то можно использовать форму вопрос-ответ с заключительным подтверждением правильности введенных данных.

Идеально — исключить человеческий фактор при вводе данных и автоматизировать процесс.
При расшифровке данных хорошо себя зарекомендовал «принцип двойной записи».
При использовании этого метода два сотрудника независимо друг от друга занимаются расшифровкой, а после результаты сравниваются и перепроверяются данные, в которых обнаружены расхождения.

Интересный метод проверки данных используется при передаче данных в цифровом формате.
Так, например, в номерах банковских счетов используется контрольное число (сумма).
Контрольное число — это когда после передаваемого номера добавляется число, используемое для проверки данных и обнаружения ошибок.

Так для числа 94121 контрольным числом будет 8, при последовательном складывании цифр получается сумма 17, продолжаем складывание и получаем 17=1+7=8.

Передаем 941218, а при получении система проводит обратные расчеты и, если сумма не совпадает, то число будет отмечено как ошибочное.

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


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

Возможно, вы с чем-то не согласны или хотите поделиться своими методами и наработками — приглашаю в комментарии и надеюсь на увлекательное и полезное обсуждение.

Всем спасибо за внимание и хорошего дня!

Источник информации

Автор: Карл Андерсон
Аналитическая культура. От сбора данных до бизнес-результатов
Creating a Data-Driven Organization
ISBN: 978-5-00100-781-4
Издательство: Манн, Иванов и Фербер


Подборка по базе: ТИПОВАЯ ЗАДАЧА № 2. ОПРЕДЕЛЕНИЕ СТАТИЧЕСКОЙ УСТОЙЧИВОСТИ ПРМ.doc, Л№2 Причины отказов программного обеспечения, признаки появления, Понятие, виды и структура бизнес плана.pdf, 4курсовая работа автодор Виды социальных услуг точно.rtf, 1. Статистика ошибок и дефектов в комплексах программ и их харак, Бланк отчета ПЗ 4.1.4. Определение класса защищенности ГИС — .do, 2022 Курсовая ГП Договор понятие значение виды! доработка 2.docx, Тема Определение коммерческой скорости и сроков.docx, Модуль 2. Виды конфликтов, ПЗ 2.doc, Диктант виды предложений.docx


Виды ошибок. Определение ошибок ПО. Классификация ошибок

Ошибки в программах могут допускаться от самого начального этапа составления алгоритма решения задачи до окончательного оформления программы. Разновидностей ошибок достаточно много. Рассмотрим некоторые группы ошибок и соответствующие примеры:

Вид ошибки Пример
Неправильная постановка задачи Правильное решение неверно сформулированной задачи
Неверный алгоритм Выбор алгоритма, который привел к неточному или неэффективному решению задачи
Ошибка анализа Неполный перечень ситуаций, которые могут возникнуть при решении задачи, наличие логических ошибок
Семантические ошибки Неправильное понимание порядка выполнение оператора
Синтаксические ошибки Нарушение правил, которые определяются выбранным ЯП
Ошибки при выполнении операций Использование слишком большого числа, деление на ноль, извлечение квадратного корня из отрицательного не комплексного числа и т.д.
Ошибки в данных Неправильно определен возможный диапазон изменения данных
Опечатки Неправильное использование схожих по внешнему виду символов
Ошибки ввода/вывода Неправильное считывание входных данных, неправильное задание форматов данных

Также, ошибки могут относится к самым разным частям кода:

  • ошибки обращения к данным,
  • ошибки описания данных,
  • ошибки вычислений,
  • ошибки при сравнении,
  • ошибки в передаче управления,
  • ошибки ввода-вывода,
  • ошибки интерфейса,

Ошибки


Ошибки выполнения

Ошибки компоновки

Ошибки компиляции

Классификация ошибок по этапу обработки программы

Ошибки выполнения


Ошибки накопления погрешностей

Ошибки определения данных


Логические ошибки


Кодирования

Проектирования

  • Игнорирование ограничений разрядной сетки
  • Игнорирование способов уменьшения погрешности
  • Ошибки передачи
  • Ошибки преобразования
  • Ошибки перезаписи
  • Неправильные данные

  • Некорректная работа с переменными
  • Некорректные вычисления
  • Ошибки межмодульных интерфейсов
  • Неправильная реализация алгоритма
  • Неправильный метод
  • Неверный алгоритм
  • Неверная структура данных
Классификация ошибок этапа выполнения

Ошибки анализа.
Связаны либо с неполным учетом ситуации, которые могут возникнуть, либо с неверным решением задачи.
К первому случаю относятся, например, пренебрежение возможностью появления отрицательных значений переменных, малых и больших величин.
Во втором случае обычно имеют место крупные и мелкие логические ошибки, из которых можно назвать:

  1. Отсутствие заданий начальных значений переменных.
  2. Неверные условия окончания цикла.
  3. Неверную индексацию цикла.
  4. Отсутствие задания условий инициирования цикла.
  5. Неправильное указание ветви алгоритма для продолжения процесса решения задачи.

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

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

Ошибки физического характера.
Можно назвать несколько типов ошибок, вызываемых неверными действиями разработчика:

  1. Пропуск некоторых операторов.
  2. Отсутствие необходимых данных.
  3. Непредусмотренные данные.
  4. Неверный формат данных.

Большое значение для успешной отладки программы имеют простота и рациональность ее кодирования. Когда программа написана аккуратно и логично, легче избежать ошибок или выявить их в случае возникновения.
Следует избегать возможных «костылей», т.к. чем их больше, тем труднее отладка программы для самого автора, а кто-то другой этого сделать просто не сможет.
Правильность программ.
Любые программы — правильные в отношении их логического построения только для определенного типа данных, поэтому необходимо четко определить область значений данных, в которой программа способна функционировать. Необходимо вводить операторы, позволяющие проверить, находятся ли данные в установленных границах.
Нарушение правильности может проявляться двумя способами:

  • неверная синтаксическая конструкция программы
  • программа выдает неверные результаты

Правильность синтаксиса означает, что должны быть точно сформированы наименования переменных; арифметические и логические операции должны подчиняться определенным синтаксическим правилам и т.п.

Синтаксические ошибки.
Выявление транслятором синтаксических ошибок представляет собой самый важный и необходимый этап отладки программы.
Если под синтаксической ошибкой понимать «всякое нарушение требований языка программирования», то следует признать, что многие ошибки остаются необнаруженными.
В качестве примеров синтаксических ошибок можно назвать:

  • пропуск необходимого знака пунктуации
  • несогласованность скобок
  • пропуск нужных скобок
  • неправильное формирование оператора
  • неверное образование имени переменной
  • неправильное использование арифметических операторов
  • неверное написание зарезервированных слов

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

  1. Противоречивые команды.
  2. Отсутствие условий окончания цикла.
  3. Дублирование или отсутствие меток.
  4. Отсутствие описания массива.
  5. Запрещенный переход.

Советы по устранению ошибок:

  1. Если ошибок много, то в первую очередь устранить очевидные.
  2. Обратиться к руководству по программированию на данном языке (справка).
  3. Выбрать хороший отладочный компилятор.

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

  1. Присваивание.
  2. Ввод.
  3. Чтение из файла.

Разные прогоны программы с одними и теми же данными могут привести к различным результатам.

Обнаружение ошибок.

Ситуации, по которым мы определяем, что в программе есть ошибка:

  1. Отсутствует уверенность в том, что программа начала выполняться.
  2. Программа начала выполняться, но произошел преждевременный останов с выдачей или без выдачи сообщений о системной ошибке.
  3. Программа начала выполняться, но зациклилась.
  4. Программа выдала неправильную информацию.

Любая из этих ситуаций требует проверки последовательности выполнения команд. Обычно для этого пригодна трассировка. Процесс обнаружения ошибок характеризуется выявлением двух мест в программе:

  • точки обнаружения
  • точки происхождения

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

Автор статьи

Юлия Валерьевна Шульгина

Эксперт по предмету «Логика»

преподавательский стаж — 10 лет

Задать вопрос автору статьи

Характеристика определения и сходных с определением приемов

Определение 1

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

Любое определение состоит из двух основных элементов:

  • того, что определяется (определяемого понятия, definiendum);
  • того, при помощи чего определяется (определяющего понятия, definiens).

Итак, определение как логическая операция состоит в придании языковому выражению (слову, словосочетанию) точного смысла. Целью определения является уточнение содержания используемых понятий. Задачей определения выступает выделение системы признаков, общей и отличительной для предметов, которые обозначаются рассматриваемым термином.

Китайский язык для начинающих

Научись писать, понимать и воспроизводить текстовую информацию

Выбрать занятия

Иногда дать определение (т.е. однозначно и полностью задать значение термина) невозможно. Тогда прибегают к приемам, сходным с определением:

  • указанию (остенсивному определению), т. е. разъяснению выражений путем непосредственного указания на предметы (процессы, явления), ими обозначаемые. Маленькие дети усваивают значения большинства терминов именно таким способом. Также остенсивные определения могут использоваться при изучении иностранного языка;
  • описанию, т. е. перечислению некоторых признаков предметов, позволяющих их отличить (обнаружить). Прием описания относится к эмпирическому уровню познания, на котором происходит выявление свойств изучаемых предметов;
  • характеристике, т. е. указанию существенных (в том или ином отношении) отличительных признаков. Характеристика близка к настоящему определению, но отличие состоит в том, что у характеристики нет цели отграничить, отличить характеризуемый предмет от всех остальных;
  • сравнению, т. е. косвенной характеристике, состоящей в указании общих и отличных черт предметов рассматриваемого класса по сравнению с предметами другого класса.

«Ошибки при определении понятий в логике» 👇

Классификация определений

В зависимости от того, что определяется (сам предмет или просто утверждается новое обозначающее его имя) выделяют два вида определений:

  • реальные (касающиеся предметов). Их цель – раскрыть содержание, взаимосвязи и существенные признаки предмета;
  • номинальные (касающиеся имен). Их цель – указать, что из перечисленного в определении именуется вводимым термином.

Определение 2

Номинальным определением называют соглашение, касающееся смысла и способа употребления термина (определяемого понятия), объясняющее значение имени (слова, термина), обозначающего конкретное понятие.

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

Пример номинального определения: «Электролиты – это вещества, растворы (расплавы) которых проводят электрический ток».

Определение 3

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

Пример реального определения: «Правосудие – это деятельность суда, заключающаяся в разбирательстве и разрешении гражданских и уголовных дел».

Разница между номинальными и реальными определениями состоит в различении описания и предписания. Описание предполагает указание на присущие предмету признаки. Если описание адекватно предмету, оно является истинным, если не адекватно – ложным. Поэтому реальное определение может быть истинным или ложным. В случае с предписанием ситуация иная. Предписание указывает, каким предмет должен быть, а не какой он уже есть. Поэтому у номинального определения нет истинностного значения.

По форме определения бывают:

  • явными (имеющими форму «А есть В» или «А, если и только если В»);
  • неявными (в которых нет четкого различия между определяемой и определяющей частями).

Правила определения и типовые ошибки

Ко всем определениям – независимо от их вида и формы – предъявляются определенные требования, сформулированные в виде правил.

Первое правило: определение должно быть соразмерным. В определении объем определяемого термина должен быть равен объему определяющего термина. Если это правило нарушается, могут возникнуть ошибки:

  1. Слишком широкое определение (если объем определяющего термина больше, чем объем определяемого термина).

    Пример 1

    Пример слишком широкого определения: «Море – это часть водной поверхности». Под это определение подходят не только моря, но и озера, и океаны, и даже лужи.

  2. Слишком узкое определение (если объем определяющего термина меньше, чем объем определяемого термина).

    Пример 2

    Пример слишком узкого определения: «Биология – это наука о растениях и животных». На самом деле, этими направлениями занимаются отдельные разделы биологии; биология в целом охватывает более общие и широкие вопросы.

Второе правило: определение не должно порождать круг. Это значит, что должны быть выполнены условия:

  • определяющая часть явного определения не должна содержать определяемый термин;
  • термины, используемые в определяющей части, не должны определяться через определяемый термин.

Если это правило нарушается, могут возникнуть следующие ошибки:

  1. Порочный круг. В этом случае смысл термина из определяющей части раскрывается в другом определении через исходный определяемый термин.

    Пример 3

    Пример порочного круга: «Материя – это все, не являющееся сознанием; сознание – это все, не являющееся материей».

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

    Пример 4

    Пример тавтологичного определения: «Дождливая погода – это погода, когда идет дождь».

Третье правило: определение должно быть ясным. Если это правило нарушается, формируется неясное определение (с двусмысленным, метафорическим и непонятным определяющим термином).

Пример 5

Пример неясного определения: «Такса – это колбаса с лапами». Если человек не знает, что такса – это порода собаки, по такому определению он даже не сможет разобраться, идет речь о живом существе или о блюде (форме изготовления колбасы).

Находи статьи и создавай свой список литературы по ГОСТу

Поиск по теме

Отладка программы — один их самых сложных этапов разработки программного обеспечения, требующий глубокого знания:

специфики управления используемыми техническими средствами,

операционной системы,

среды и языка программирования,

реализуемых процессов,

природы и специфики различных ошибок,

методик отладки и соответствующих программных средств. 

Отладка — это процесс локализации и исправления ошибок, обнаруженных при тестировании программного обеспечения. Локализацией называют процесс определения оператора программы, выполнение которого вызвало нарушение нормального вычислительного процесса. Доя исправления ошибки необходимо определить ее причину, т. е. определить оператор или фрагмент, содержащие ошибку. Причины ошибок могут быть как очевидны, так и очень глубоко скрыты.

Вцелом сложность отладки обусловлена следующими причинами:

требует от программиста глубоких знаний специфики управления используемыми техническими средствами, операционной системы, среды и языка программирования, реализуемых процессов, природы и специфики различных ошибок, методик отладки и соответствующих программных средств;

психологически дискомфортна, так как необходимо искать собственные ошибки и, как правило, в условиях ограниченного времени;

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

отсутствуют четко сформулированные методики отладки.

Всоответствии с этапом обработки, на котором проявляются ошибки, различают (рис. 10.1):


    синтаксические ошибки — ошибки, фиксируемые компилятором (транслятором, интерпретатором) при выполнении синтаксического и частично семантического анализа программы; ошибки компоновки — ошибки, обнаруженные компоновщиком (редактором связей) при объединении модулей программы;

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

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

Следует иметь в виду, что чем лучше формализованы правила синтаксиса языка, тем больше ошибок из общего количества может обнаружить компилятор и, соответственно, меньше ошибок будет обнаруживаться на следующих этапах. В связи с этим говорят о языках программирования с защищенным синтаксисом и с незащищенным синтаксисом. К первым, безусловно, можно отнести Pascal, имеющий очень простой и четко определенный синтаксис, хорошо проверяемый при компиляции программы, ко вторым — Си со всеми его модификациями. Чего стоит хотя бы возможность выполнения присваивания в условном операторе в Си, например:

if (c = n) x = 0; /* в данном случае не проверятся равенство с и n, а выполняется присваивание с значения n, после чего результат операции сравнивается с нулем, если программист хотел выполнить не присваивание, а сравнение, то эта ошибка будет обнаружена только на этапе выполнения при получении результатов, отличающихся от ожидаемых */ 

Ошибки компоновки. Ошибки компоновки, как следует из названия, связаны с проблемами,

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

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

• появление сообщения об ошибке, зафиксированной схемами контроля выполнения машинных команд, например, переполнении разрядной сетки, ситуации «деление на ноль», нарушении адресации и т. п.;

появление сообщения об ошибке, обнаруженной операционной системой, например, нарушении защиты памяти, попытке записи на устройства, защищенные от записи, отсутствии файла с заданным именем и т. п.;

«зависание» компьютера, как простое, когда удается завершить программу без перезагрузки операционной системы, так и «тяжелое», когда для продолжения работы необходима перезагрузка;

несовпадение полученных результатов с ожидаемыми.

Примечание. Отметим, что, если ошибки этапа выполнения обнаруживает пользователь, то в двух первых случаях, получив соответствующее сообщение, пользователь в зависимости от своего характера, степени необходимости и опыта работы за компьютером, либо попробует понять, что произошло, ища свою вину, либо обратится за помощью, либо постарается никогда больше не иметь дела с этим продуктом. При «зависании» компьютера пользователь может даже не сразу понять, что происходит что-то не то, хотя его печальный опыт и заставляет волноваться каждый раз, когда компьютер не выдает быстрой реакции на введенную команду, что также целесообразно иметь в виду. Также опасны могут быть ситуации, при которых пользователь получает неправильные результаты и использует их в своей работе.

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

неверное определение исходных данных,

логические ошибки,

накопление погрешностей результатов вычислений (рис. 10.2).

Н е в е р н о е о п р е д е л е н и е и с х о д н ы х д а н н ы х происходит, если возникают любые ошибки при выполнении операций ввода-вывода: ошибки передачи, ошибки преобразования, ошибки перезаписи и ошибки данных. Причем использование специальных технических средств и программирование с защитой от ошибок (см.§ 2.7) позволяет обнаружить и предотвратить только часть этих ошибок, о чем безусловно не следует забывать.

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

Кпоследней группе относят:

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

ошибки вычислений, например, некорректные вычисления над неарифметическими переменными, некорректное использование целочисленной арифметики, некорректное преобразование типов данных в процессе вычислений, ошибки, связанные с незнанием приоритетов выполнения операций для арифметических и логических выражений, и т. п.;

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

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

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

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

опосредованного проявления ошибок;

возможности взаимовлияния ошибок;

возможности получения внешне одинаковых проявлений разных ошибок;

отсутствия повторяемости проявлений некоторых ошибок от запуска к запуску – так называемые стохастические ошибки;

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

написания отдельных частей программы разными программистами.

Методы отладки программного обеспечения

Отладка программы в любом случае предполагает обдумывание и логическое осмысление всей имеющейся информации об ошибке. Большинство ошибок можно обнаружить по косвенным признакам посредством тщательного анализа текстов программ и результатов тестирования без получения дополнительной информации. При этом используют различные методы:

ручного тестирования;

индукции;

дедукции;

обратного прослеживания.

Метод ручного тестирования. Это — самый простой и естественный способ данной группы. При обнаружении ошибки необходимо выполнить тестируемую программу вручную, используя тестовый набор, при работе с которым была обнаружена ошибка.

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

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

Метод индукции. Метод основан на тщательном анализе симптомов ошибки, которые могут проявляться как неверные результаты вычислений или как сообщение об ошибке. Если компьютер просто «зависает», то фрагмент проявления ошибки вычисляют, исходя из последних полученных результатов и действий пользователя. Полученную таким образом информацию организуют и тщательно изучают, просматривая соответствующий фрагмент программы. В результате этих действий выдвигают гипотезы об ошибках, каждую из которых проверяют. Если гипотеза верна, то детализируют информацию об ошибке, иначе — выдвигают другую гипотезу. Последовательность выполнения отладки методом индукции показана на рис. 10.3 в виде схемы алгоритма.

Самый ответственный этап — выявление симптомов ошибки. Организуя данные об ошибке, целесообразно записать все, что известно о ее проявлениях, причем фиксируют, как ситуации, в которых фрагмент с ошибкой выполняется нормально, так и ситуации, в которых ошибка проявляется. Если в результате изучения данных никаких гипотез не появляется, то необходима дополнительная информация об ошибке. Дополнительную информацию можно получить, например, в результате выполнения схожих тестов.

В процессе доказательства пытаются выяснить, все ли проявления ошибки объясняет данная гипотеза, если не все, то либо гипотеза не верна, либо ошибок несколько.

Метод дедукции. По методу дедукции вначале формируют множество причин, которые могли бы вызвать данное проявление ошибки. Затем анализируя причины, исключают те, которые противоречат имеющимся данным. Если все причины исключены, то следует выполнить дополнительное тестирование исследуемого фрагмента. В противном случае наиболее вероятную гипотезу пытаются доказать. Если гипотеза объясняет полученные признаки ошибки, то ошибка найдена, иначе — проверяют следующую причину (рис. 10.4).

Метод обратного прослеживания. Для небольших программ эффективно применение метода обратного прослеживания. Начинают с точки вывода неправильного результата. Для этой точки строится гипотеза о значениях основных переменных, которые могли бы привести к получению имеющегося результата. Далее, исходя из этой гипотезы, делают предложения о значениях переменных в предыдущей точке. Процесс продолжают, пока не обнаружат причину ошибки.

При заполнении таблиц в Экселе вручную приходится вводить очень много данных, что может привести к появлению множества опечаток и ошибок. Некоторые такие ошибки может исключить проверка данных в Excel при вводе, что мы далее и рассмотрим.

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

Чтобы сделать проверку данных в Excel для определенных ячеек, их необходимо выделить, перейти на вкладку «Данные», и найти в разделе «Работа с данными» меню «Проверка данных». При нажатии на стрелочку справа от данного пункта появляется три пункта меню, из которых нам нужен самый первый «Проверка данных…».

Как сделать проверку данных в excel?

В появившемся окошке «Проверка вводимых значений» настраивается проверка. На вкладке «Параметры» выбирается из списка тип данных, которые будут проверяться и вводиться в выделенный нами диапазон ячеек. Для примера выберем «Целое число».

Как сделать проверку данных в excel?

После выбора типа данных становится возможным выбор условия соответствия вводимого значения в графе «Значение:». Выберем для примера «Между»

Как сделать проверку данных в excel?

На вкладке «Сообщение об ошибке» можно указать заголовок и само сообщение, появляющееся при ошибочном вводе данных, а также действие, которое при этом будет производится. На вкладке «Вид:» доступно три варианта.

«Останов» предотвращает ввод недопустимых данных и предлагает повторить попытку. «Предупреждение» выдает сообщение об ошибке, но дает возможность продолжить ввод недопустимого значения.

«Сообщение» просто проинформирует о недопустимом введенном значении.

  1. Как сделать проверку данных в excel?
  2. Сообщение подсказка.Как сделать проверку данных в excel?
  3. Вид «Останов».Как сделать проверку данных в excel?
  4. Вид «Предупреждение».Как сделать проверку данных в excel?
  5. Вид «Сообщение».Как сделать проверку данных в excel?

Для проверки уже введенных или вставленных через буфер обмена значений, можно выбрать пункт меню «Обвести неверные данные», после чего неудовлетворяющие условию значения будут обведены красным овалом. После ввода правильного значения овал автоматически исчезает.

Источник: http://officeprogs.ru/excel/proverka-danny-h-v-excel.html

Руководство по проверке данных Excel

Проверка данных — это функция в Excel, используемая для контроля того, что пользователь может ввести в ячейку. Например, вы можете использовать проверку данных, чтобы убедиться, что:

  • значение является числом от 1 до 6
  • дата произойдет в следующие 30 дней
  • текстовая запись содержит менее 25 символов

Проверка данных может просто отображать сообщение пользователю с информацией, что разрешено, как показано ниже:

Как сделать проверку данных в excel?Сообщение отображается автоматически при выборе ячейки

Проверка данных также может остановить неправильный ввод данных пользователем. Например, если код сотрудника не проходит проверку, вы можете увидеть следующее сообщение:

Как сделать проверку данных в excel? Пример сообщения об ошибке

Кроме того, проверка данных может использоваться для предоставления пользователю определенного выбора в раскрывающемся меню:

Как сделать проверку данных в excel? Пример раскрывающегося меню проверки данных

Это очень удобно, так как можно дать пользователю именно те значения, которые уже соответствуют требованиям.

Контроль достоверности данных

Проверка данных осуществляется с помощью правил, определенных в пользовательском интерфейсе Excel на вкладке «Данные» на ленте.

Как сделать проверку данных в excel? Элементы управления проверкой данных на вкладке ДАННЫЕ

Важное ограничение

Важно понимать, что проверку данных можно легко обойти. Если пользователь копирует данные из ячейки без проверки в ячейку с проверкой данных, проверка уничтожается (или заменяется). Проверка данных — это хороший способ помочь пользователям, сообщив им критерии ввода, но он не дает гарантированную защиту от ошибок.

Определение правил проверки данных

Проверка данных определяется в окне с 3 вкладками: Параметры, Сообщение для ввода и Сообщение об ошибке:

Как сделать проверку данных в excel? Окно проверки данных имеет три основные вкладки

На вкладке Параметры вы можете ввести критерии проверки. Существует ряд встроенных правил проверки с различными параметрами, также можно выбрать «Другой» и использовать собственную формулу для проверки ввода, как показано ниже:

Как сделать проверку данных в excel? Пример вкладки настроек проверки данных

Вкладка «Сообщение для ввода» определяет сообщение, отображаемое при выборе ячейки с правилами проверки. Оно не является обязательным.

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

Входное сообщение не влияет на то, что пользователь может ввести — оно просто отображает сообщение, чтобы сообщить пользователю, что разрешено или ожидается.

Как сделать проверку данных в excel? Вкладка настройки сообщения проверки данных

Вкладка «Сообщение об ошибке» определяет, как выполняется проверка. Например, когда вид установлен на «Останов», неверные данные вызывают окно с сообщением, и ввод не разрешен.

Как сделать проверку данных в excel? Вкладка предупреждения об ошибке проверки данных

Пользователь видит сообщение, подобное этому:

Как сделать проверку данных в excel? Пример сообщения об ошибке проверки данных

Когда в поле «Вид» установлено значение «Сообщение» или «Предупреждение», изменяется значок, отображаемый с пользовательским сообщением. Пользователь может игнорировать сообщение и вводить значения, которые не проходят проверку. Ниже обобщено поведение каждого вида предупреждения об ошибке.

Не позволяет пользователям вводить недопустимые данные в ячейку. Пользователи могут повторить попытку, но должны ввести значение, которое проходит проверку данных. В окне предупреждения «Останов» есть три опции: «Повторить», «Отмена» и «Справка».

Предупреждает пользователей о том, что данные неверны. Предупреждение ничего не делает, чтобы остановить ввод неверных данных. В окне «Предупреждение» есть три параметра: «Да» (для принятия недействительных данных), «Нет» (для редактирования недействительных данных), «Отмена» (для удаления недействительных данных) и «Справка».

Вид: Сообщение

Сообщает пользователям, что данные являются недействительными. Это сообщение не делает ничего, чтобы остановить ввод неверных данных. Информационное окно имеет 3 кнопки: «ОК», чтобы принять недействительные данные, «Отмена», чтобы удалить их и «Справка».

Параметры проверки данных

При создании правила проверки данных доступно восемь параметров:

Любое значение — проверка не выполняется. Примечание: если проверка данных ранее применялась с установленным входным сообщением, сообщение все равно будет отображаться при выборе ячейки, даже если выбрано любое значение.

Целое число — разрешены только целые числа. Как только опция целого числа выбрана, другие опции становятся доступными для дальнейшего ограничения ввода. Например, вам может потребоваться целое число от 1 до 10.

Действительное — работает как опция целого числа, но допускает десятичные значения. Например, если для параметра «Действительное» задано значение от 0 до 3, допустимы все значения, такие как 0,5 и 2,5.

Список — разрешены только значения из предварительно определенного списка. Значения представляются пользователю как выпадающее меню. Допустимые значения могут быть жестко заданы непосредственно на вкладке «Параметры» или указаны в виде диапазона на рабочем листе.

Дата — разрешены только даты. Например, вам может потребоваться дата между 1 января 2018 года и 31 декабря 2021 года или дата после 1 июня 2018 года.

Время — разрешено только время. Например, вы можете указать время между 9:00 и 17:00 или разрешить время только после 12:00.

Длина текста — проверяет ввод на основе количества символов или цифр. Например, вам может потребоваться код из 5 цифр.

Другой — проверяет ввод с использованием пользовательской формулы. Другими словами, вы можете написать собственную формулу для проверки ввода. Пользовательские формулы значительно расширяют возможности проверки данных. Например, вы можете использовать формулу, чтобы обеспечить значение в верхнем регистре, или значение, которое содержит «АБВ».

На вкладке параметров также есть два флажка:

Игнорировать пустые ячейки — говорит Excel не проверять ячейки, которые не содержат значений. На практике этот параметр влияет только на команду «Обвести неверные данные». Когда эта опция включена, пустые ячейки не обведены, даже если они не прошли проверку.

Распространить изменения на другие ячейки с тем же условием — этот параметр обновит проверку, примененную к другим ячейкам, когда она будет соответствовать (оригинальной) проверке редактируемых ячеек.

Простое выпадающее меню

Вы можете предоставить пользователю раскрывающееся меню опций, жестко закодировав значения в поле настроек или выбрав диапазон на листе. Например, чтобы ограничить записи действиями «ПРИНЯТ», «В ОБРАБОТКЕ» или «ОТГРУЖЕН», вы можете ввести эти значения через точку с запятой:

Как сделать проверку данных в excel? Раскрывающееся меню проверки данных с жестко заданными значениями

При применении к ячейке на рабочем листе раскрывающееся меню работает следующим образом:

Используются жестко заданные значения выпадающего меню проверки данных

Другой способ ввода значений в раскрывающееся меню — использование ссылки на рабочий лист. Например, с размерами (то есть маленький, средний и т.д.) в диапазоне F4:F6. Вы можете указать этот диапазон непосредственно в окне настроек проверки данных:

Значения выпадающего меню проверки данных со ссылкой на диапазон

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

Подсказка. Щелкните значок маленькой стрелки в дальнем правом углу поля «Источник», чтобы сделать выбор непосредственно на рабочем листе, чтобы вам не приходилось вводить диапазон вручную.

Вы также можете использовать именованные диапазоны для указания значений. Например, с именованным диапазоном под названием «размер» для F4:F6, вы можете ввести имя непосредственно в окне, начиная со знака равенства:

Значения выпадающего меню проверки данных с именованным диапазоном

Именованные диапазоны автоматически являются абсолютными, поэтому они не изменятся.

Вы также можете создавать зависимые выпадающие списки с пользовательской формулой.Совет.

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

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

Проверка данных с помощью пользовательской формулы

Формулы проверки данных должны быть логическими формулами, которые возвращают ИСТИНА, если ввод действителен, и ЛОЖЬ, если ввод недействителен. Например, чтобы разрешить ввод любого числа в ячейку A1, вы можете использовать функцию ЕЧИСЛО (ISNUMBER) в формуле, подобной этой:

= ЕЧИСЛО (А1)

Если пользователь вводит значение 10 в A1, ЕЧИСЛО (ISNUMBER) возвращает ИСТИНА, и проверка данных завершается успешно. Если вводится значение типа «яблоко» в A1, ЕЧИСЛО (ISNUMBER) возвращает ЛОЖЬ, и проверка данных завершается неудачно.

Чтобы включить проверку данных с помощью формулы, выберите «Другой» на вкладке «Параметры», затем введите формулу, начиная со знака равенства (=), как обычно.

Формулы устранения неполадок

Excel игнорирует формулы проверки данных, которые возвращают ошибки.

Если формула не работает, и вы не можете понять, почему, настройте фиктивные формулы, чтобы убедиться, что формула работает так, как вы ожидаете.

Фиктивные формулы — это просто формулы проверки данных, введенные непосредственно на листе, чтобы вы могли легко увидеть, что они возвращают. На приведенном ниже экране показан пример:

Проверка достоверности данныхс помощью фиктивных формул

После того, как фиктивная формула заработает так, как вы хотите, просто скопируйте и вставьте ее в область формулы проверки данных.

Примеры формул проверки данных

Возможности для проверки данных пользовательских формул практически не ограничены. Вот несколько примеров для вдохновения:

Чтобы разрешить только 5 символьных значений, начинающихся с «z», вы можете использовать:

= И (ЛЕВСИМВ (А1) = «z»; ДЛСТР (A1) = 5)

Эта формула возвращает ИСТИНА только тогда, когда код длиной 5 цифр и начинается с «z». Два значения в примере выше возвращают ЛОЖЬ с этой формулой.

Чтобы разрешить ввод даты в течение 30 дней с сегодняшнего дня:

= И (А1> СЕГОДНЯ (), А1

Источник: https://excelpedia.ru/bez-rubriki/rukovodstvo-po-proverke-dannyx-excel

Проверка вводимых данных в ячейки Excel

Допустим, что в таблице прайс-листа с розничными ценами на товары, в одном из столбцов указана процентная ставка НДС. Как часто бывает в рутинной работе срабатывает человеческий фактор и по ошибке для одной из категорий товаров, вместо ставки НДС 20% была введена старая ставка 19%.

Эта небольшая разница в данных – 1% может создать большие проблемы для фирмы с всевозможными последствиями.

Чтобы исключить ошибки созданных по причине человеческого фактора, воспользуемся встроенным инструментом Excel для проверки данных, который позволяет контролировать все что вводиться на рабочий лист.

Пример прайс-листа с введенными ошибками в процентных ставках НДС:

Как сделать проверку данных в excel?

Чтобы в Excel сделать проверку вводимых данных в ячейки следует выполнить ряд последовательных действий:

  1. Выделите диапазон ячеек где вводиться формула с процентной ставкой для цен с НДС и выберите инструмент: «ДАННЫЕ»-«Работа с данными»-«Проверка данных».Как сделать проверку данных в excel?
  2. В появившемся окне «Проверка вводимых значений» на вкладке «Параметры» из выпадающего списка «Тип данных:» выберите опцию «Список».Как сделать проверку данных в excel?
  3. В полю ввода «Источник:» введите значения разных процентных ставок: 0%; 20%; освобождается.Как сделать проверку данных в excel?
  4. Перейдите на закладку «Сообщение об ошибке» и заполните текстовое поле «Сообщение:» текстом который будет содержать сообщение при вводе других значений, которые отличаются от указанных значений в списке.

Закладка «Сообщение об ошибке» предоставляет пользователю возможность оформить стиль сообщения об ошибочных вводах значений. Если пользователь вводить в ячейку неправильное значение тогда будет выполнен один из 3-х параметров:

Как сделать проверку данных в excel?

  1. Останов – данный параметр разрешает вводить только правильное значение, выбранного из выпадающего списка или отменить ввод оставив пустую ячейку.
  2. Предупреждение – этот параметр предупреждает об вводе ошибочного значения и предоставляет попытку отредактировать или выбрать из выпадающего списка.
  3. Сообщение – параметр сообщает о неправильном значении и позволяет проигнорировать ошибку.

Закладка «Сообщение для ввода» содержит поля ввода для заголовка и текстовое поле для сообщения в примечании, которое будет появляться перед вводом данных в ячейку. А точнее как только ячейка будет активной сразу высветлиться соответствующее примечание. Данное примечание повышает контроль над ошибками связанных с вводом значений. В нем можно указать правильное значение для данных ячеек.

Как сделать проверку данных в excel?

После заполнения всех параметров в окне «Проверка вводимых значений» нажмите на кнопку ОК.

Как сделать проверку данных в excel?

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

Внимание! Инструмент «Проверка данных» срабатывает только при вводе значений в ячейку. Если же значения буду скопированы из других ячеек, то при вставке этот инструмент удалиться из этих ячеек и не сработает.

Источник: https://exceltable.com/vozmojnosti-excel/proverka-dannyh-v-yacheyke

Проверка данных в Excel — Microsoft Excel для начинающих

Используйте проверку данных в Excel, чтобы убедиться, что пользователи вводят в ячейки только определенные значения.

Пример проверки данных

В этом примере мы сделаем такое ограничение, при котором пользователи смогут вводить только целое число между 0 и 10.

Как сделать проверку данных в excel?

Как создать правило проверки данных

Чтобы создать правило проверки данных, следуйте нашей инструкции:

  1. Выделите ячейку С2.

На вкладке Данные (Data) нажмите кнопку Проверка данных (Data Validation).
Как сделать проверку данных в excel?

На вкладке Параметры (Settings) диалогового окна Проверка вводимых значений (Data Validation) сделайте следующее:

  • Из выпадающего списка Тип данных (Allow) выберите Целое число (Whole number).
  • Из выпадающего списка Значение (Data) выберите Между (Between).
  • Введите минимальное и максимальное значения.
    Как сделать проверку данных в excel?

Сообщение для ввода

Сообщения для ввода появляются, когда пользователь выделяет ячейку. Они указывают ему, что нужно вводить. Перейдите на вкладку Сообщение для ввода (Input Message) и сделайте следующее:

  1. Поставьте галочку напротив Отображать подсказку, если ячейка является текущей (Show input message when cell is selected).
  2. Введите заголовок.
  3. Введите само сообщение.
    Как сделать проверку данных в excel?

Сообщение об ошибке

Если пользователи игнорируют сообщение для ввода и вводят недопустимое число, вы можете показать им уведомление об ошибке. Перейдите на вкладку Сообщение об ошибке (Error Alert) и сделайте следующее:

  1. Поставьте галочку напротив параметра Выводить сообщение об ошибке (Show error alert after invalid data is entered).
  2. Введите заголовок.
  3. Введите сообщение об ошибке.
    Как сделать проверку данных в excel?
  4. Нажмите ОК.

Результат проверки данных

  1. Выделите ячейку С2.
    Как сделать проверку данных в excel?
  2. Попробуйте ввести число больше, чем 10.Результат:

    Как сделать проверку данных в excel?

Примечание: Чтобы удалить проверку данных из ячейки, выделите её и на вкладке Данные (Data) нажмите кнопку Проверка данных (Data Validation). Затем кликните по Очистить все (Clear All). Чтобы быстро выбрать все ячейки с проверкой данных, используйте инструмент Выделение группы ячеек (Go To Special).

Источник: https://office-guru.ru/excel/proverka-dannyh-v-excel-381.html

Проверка данных

Проверка данных является неплохим инструментом Excel для контроля за вносимыми на листах изменениями, не прибегая к помощи VBA. С её помощью можно ограничить ввод в ячейку, разрешив вводить только даты либо время, либо только числа. Да к тому же еще и задать диапазон дат либо предел чисел(к примеру от 1 до 10).

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

Разберем поподробней.

Сей чудесный инструмент находится: Данные(Data)Проверка данных(Data Validation). Должно появиться окно:
Как сделать проверку данных в excel?

Для начала надо выделить ячейку(или диапазон ячеек) для которой необходимо установить проверку. Затем идем в Данные(Data)Проверка данных(Data Validation).

Первая вкладка — Параметры(Settings)

В поле Тип данных(Allow) — выбирается непосредственно тип данных, который должен быть записан в ячейке. Всего доступно 8 типов: Любое значение, Целое число, Действительное, Список, Дата, Время, Длина текста, Другой(Any Value, Whole number, Decimal, List, Date, Time, Text lenght, Custom).

Пункт Любое значение(Any Value) установлен по умолчанию, проверка не осуществляется. Подробно про пункт Списки(List) и как их создавать можно посмотреть и почитать в статье Выпадающие списки.

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

  • Целое число(Whole number) — говорит само за себя. После установки такой проверки в ячейку можно будет внести только целое число. Т.е. число, не имеющее дробного остатка(9,1 например уже нельзя будет ввести). Так же нельзя будет ввести произвольный текст. Чаще всего подобная проверка применяется в полях для записи кол-ва штук товара и т.п. Т.е. там, где не может быть дробных значений.
  • Действительное(Decimal) — тоже, что и в предыдущем пункте, но ввести можно любое число — хоть целое, хоть дробное, но невозможно будет ввести текст
  • Примечание: применив данные типы проверок, внести в ячейку можно только число. Занести текст Excel уже не разрешит. Однако стоит помнить, что даты и время Excel воспринимает и хранит именно как ЧИСЛОВЫЕ значения, поэтому ввод даты и времени тоже будет разрешен, если он не противоречит остальным условиям проверки(см.ниже). Но для проверки Целое число разрешен будет ввод только даты, т.к. время Excel хранит как дробное значение(кроме 24:00:00 и 00:00:00, которые Excel воспринимает как 1 и 0 соответственно). Более подробно о восприятии Excel-ем данных читайте в статье Как Excel воспринимает данные?.
  • Дата(Date) — В ячейке может содержаться только значение даты. Дата может быть записана в любом формате, допустимом в текущей локализации Windows. Здесь тот же нюанс, что и проверкой на числа, только в обратную сторону — любая дата это число, поэтому по сути можно будет ввести любое целое число, которое может быть переведено Excel-м в дату.
  • Время(Time) — можно записывать значения в формате времени для текущей локализации и так же как с датой в ячейку можно будет вводить не только время, но и любые числа: целые или дробные
  • Длина текста(Text lenght) — позволяет ограничить количество вводимых в ячейку символов. Данные могут являться и числом и текстом и временем. Чем угодно, только должны соответствовать остальным условиям проверки. Часто применяется для контроля ввода данных по ИНН, КПП, БИК, артикулам и т.п.

Если посмотреть на картинку в начале статьи, то можно увидеть еще три поля, помимо тех, которые я перечислил: Значение(Data), Минимум(Minimum) и Максимум(Maximum).

Поле Значение содержит несколько вариантов проверки: Между, Вне, Равно, Больше, Меньше, Больше или равно, Меньше или равно(between, not between, equal to, not equal to, greater than, less than, greater than or equal to, less than or equal to) и доступно оно только при выборе Типа данных Целое число, Действительное, Дата, Время, Длина текста.

Для других типов поле Значение недоступно. В зависимости от того, какой пункт выбран в поле Значение появляются дополнительные поля: Минимум и Максимум. При этом может быть только одно поле и название может быть иным.

Например, для варианта Равно будет показано только одно поле и называться оно будет Значение(Value). Но здесь нет никаких подводных камней и разобраться с этими полями можно не напрягаясь и без поллитры 🙂

По сути все пункты довольно красноречивы и пояснять подробно каждый, думаю, смысла нет. Например, Между(between) — указывается интервал дат или чисел, в который должно входить условие(например целое число от 1 до 12: Минимум = 1, Максимум = 12). Если пользователь попытается ввести число за пределами указанного интервала(скажем число 0, -3 или 14), то Excel выдаст сообщение об ошибке(см.ниже). Вариант Больше или равно(greater than or equal to) позволит вносить только положительные значения больше нуля, если указать в поле Минимум значение 1.

Чуть большее внимание следует уделить варианту проверки Вне(not between). При установленном значении Вне, в ячейку можно будет внести только данные, которые не входят в диапазон, указанный в полях Минимум и Максимум.

Т.е. при тех же условиях от 1 до 12 ввести можно будет и 0 и -3 и 14, но нельзя будет ввести 1 или 10.
При этом в полях для ввода значений допускается указать ссылку на ячейку. Например, в ячейке A1 записана начальная дата приема заявок, в B1 — конечная дата. И надо установить в ячейках A2:A50 проверку на интервал дат, указанных как раз в A1 и B1. Для этого выделяем ячейки A2:A50 и создаем в них проверку данных: Тип данных: Дата, Значение: Между, Начальная дата: =A1, Конечная дата: =B1. Теперь можно регулировать интервал без изменения самой проверки данных — просто изменяя значения ячеек A1 и B1.

  • Другой(Custom) — на мой взгляд самый интересный и самый мощный тип проверки. Здесь нам предоставляется возможность более широко контролировать ввод данных. Для заполнения есть только одно поле — Формула(Formula). В него необходимо записать формулу и при каждом вводе значений в ячейку, Excel проверит введенное выражение на ИСТИНУ. Если быть точнее то Excel сначала вычислит формулу в этом поле ориентируясь на введенное в ячейку с проверкой данных значение, а потом проверит — возвращает ли формула значение ИСТИНА(TRUE). Если результатом будет ИСТИНА(TRUE), то введенное значение будет сохранено в ячейке, а если ЛОЖЬ(FALSE), то будет выдано окно с сообщением об ошибке:
    Как сделать проверку данных в excel?
    Приведу простой пример. В ячейку А1 введем число 1. Выделяем ячейку В1 — назначаем проверку данных-Другой. В поле Формула вписываем: =B1=A1. Теперь в ячейку В1 можно вписать только значение, которое полностью идентично значению в ячейке А1.
    Важно: если проверка данных в дальнейшем будет скопирована в другие ячейки, то ссылки будут смещены так, будто это простая формула. Поэтому при создании формул в проверке данных необходимо учитывать возможность смещения и при необходимости закреплять ссылки(знак доллара — $).

Вкладка Сообщение для ввода (Input Message)
Как сделать проверку данных в excel?
Вкладка Сообщение об ошибке(Error Alert)
Здесь указывается отображать сообщение об ошибочном вводе или нет, и сам тип выводимого сообщения об ошибке.

  • Выводить сообщение об ошибке(Show error alert after invalid data is entered) — в большинстве случаев необходимо установить галочку. Если галочка снята, то проверка вводимых в ячейку данных не будет осуществляться.
  • Вид(Style)
  • Останов, Сообщение(Stop, Information) — можно ввести только разрешенные проверкой значения. Различается только вид сообщения(пример сообщения Останов приведен на рисунке выше).
  • Предупреждение(Warning) — в ячейку можно ввести любое значение, но при вводе значения, противоречащего проверке, появиться предупреждающее сообщение с подтверждением ввода данных.
  • Заголовок(Title) — текст, который будет показан в заголовке сообщения об ошибке. Если не указан, то в заголовке будет написано Microsoft Excel.
  • Сообщение(Error message) — непосредственно текст самого сообщения об ошибке. Если не указан, то будет показан текст примерно следующего содержания:
    Это значение не соответствует ограничениям по проверке данных, установленным для этой ячейки
    (This value doesn’t match the data validation restrictions defined for this cell)

Но так же необходимо помнить, что какое бы условие на проверку Вы не поставили — значение в ячейке можно удалить, нажав кнопку Del. Либо скопировав ячейку из другой книги или листа и вставив на место проверки данных — проверка исчезнет, т.к. вся ячейка будет заменена скопированной. И от этого никак не уйти — такой проверку сделали разработчики…

Как скопировать проверку данных на другие ячейки
Все очень просто — копируем ячейку с нужной проверкой данных -выделяем ячейки для создания в них такого же условия -Правая кнопка мыши —Специальная вставка(Paste Special) -в окне выбираем Условия на значения(Validation)Ок:
Как сделать проверку данных в excel?

Как удалить проверку данных из ячеек. Выделяем необходимые ячейки -вкладка Данные(Data)Проверка данных(Data Validation). В поле Тип данных(Allow) устанавливаем Любое значение(Any Value)Ок.

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

После того, как ячейкам была назначена проверка данных переходим на вкладку Данные(Data)Проверка данных(Data Validation) -раскрываем меню и выбираем Обвести неверные данные(Circle Invalid Data).

Все ячейки, данные в которых не соответствуют условиям проверки данных будут обведены красной линией:
Как сделать проверку данных в excel?
Это можно использовать не только когда необходима проверка данных, но и просто для определения ошибочных значений. Например, есть список товара на складе и есть лист, в который этот товар вносился сотрудниками вручную. Необходимо определить какие наименования товара не соответствуют тем, которые заведены на складе. Создаем проверку данных Список(Выпадающие списки), указывая в качестве источника список товара на складе. Далее распространяем эту проверку на ячейки с занесенными сотрудниками данными. И теперь применяем функцию Обвести неверные данные.

Сразу после исправления неверных значений на те, которые есть в списке обводка исчезает.

Если не все значения надо исправлять, а обводку тем не менее надо удалить, то после всех нужных правок просто переходим на вкладку Данные(Data)Проверка данных(Data Validation) -раскрываем меню и выбираем Удалить обводку неверных данных(Clear Validation Circles)

Источник: https://www.excel-vba.ru/chto-umeet-excel/proverka-dannyx/

Как сделать проверку данных в Excel?

Привет всем. Как часто Вы сталкиваетесь с таблицами общего пользования, которые заполняют несколько сотрудников? Например, Вы формируете базу данных в Эксель, и всю информацию вносит несколько человек. Ошибок не избежать, некорректные данные часто проскакивают в таблицы. Вот если бы Excel мог проверить их перед внесением и указать на ошибку.

А он может! В программу встроен мощный инструмент под названием «Проверка данных», который минимизирует ошибки внесения информации.

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

Чтобы подключить инструмент «Проверка данных», выделите проверяемые ячейки и кликните на ленте «Данные – Работа с данными – Проверка данных». Откроется окно настройки «модератора»:

Как сделать проверку данных в excel?

  1. На вкладке «Параметры» нужно задать условие для проверки в поле «Тип данных». Есть 8 типов условий для проверки:
  2. Любое значение – проверка данных отключена
  3. Целое число – можно ввести лишь целое число с дополнительным критерием;
  4. Действительное число – любое действительное число с дополнительным критерием
  5. Список – выбрать значение из заранее заданного списка
  6. Дата – ввести только дату, удовлетворяющую дополнительному критерию
  7. Время – ввести время с дополнительным условием
  8. Длина текста – ввести текст определенной длины
  9. Другой – ввести значение, которое удовлетворяет записанному вручную логическому выражению

В этом окне можно установить еще две галки:

  • Игнорировать пустые ячейки – не применять условие к пустым ячейкам
  • Распространить изменения на другие ячейки с тем же условием – найти ячейки с аналогичными условиями и применить к ним такие же изменения

На вкладке «Сообщение для ввода» введите подсказку о том, какие данные нужно внести в ячейку.

На вкладке «Сообщение об ошибке выберите событие, которое произойдет при введении неправильных данных. Сначала сделаем выбор в списке «Вид»:

  1. Останов – отменить внесение ошибочных данных, вывести заданное сообщение
  2. Предупреждение – программа сообщит, что значение не соответствует требованиям и уточнит, вносить ли его в ячейку
  3. Сообщение – примерно то же, что и предупреждение, но выглядит менее устрашающе

После этого запишем заголовок и основной текст для окна-предупреждения.

А теперь поговорим детальнее о каждом из видов условий.

Условие на целое число в Excel

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

  • Между минимальным и максимальным значением
  • Вне заданного промежутка значений
  • Равно определенному значению
  • Не равно определенному значению
  • Больше заданного значения
  • Меньше заданного значения
  • Больше или равно значению
  • Меньше или равно значению

Как сделать проверку данных в excel?

Условие на действительное значение

Действительные числа – все положительные, отрицательные числа, а так же, ноль. От предыдущего пункта это правило отличается тем, что можно вводить и дробные числа. Все остальные настройки – аналогичны описанным выше.

Список

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

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

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

Чтобы задать список, опишите его в поле источник. Это можно сделать несколькими способами:

  • Записать перечень в ячейках на листе книги, а в поле «Источник» указать ссылку на этот массив
  • Создать именованный массив, в поле «Источник» указать его имя
  • Перечислить пункты прямо в поле «Источник» через точку с запятой

Как сделать проверку данных в excel?

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

Дата

Этот фильтр позволит внести в ячейку только дату. Напомню, что дата в Эксель дата – это тоже число, поэтому такое правило перекликается с условием на действительное значение.  Тем не менее, ввести можно только дату, с указанием параметров, таких же, как и в первых двух пунктах.

Время

Проверка на время – то же, что и в предыдущем пункте, только задается конкретное время без привязки к дате. Так же, вводится дополнительный параметр для ограничения выбора.

Длина текста

С этой проверкой Вы можете ввести и число и текст, но предлагается задать условие на его длину (в символах). Список параметров все тот же: длина между заданными значениями, вне промежутка, равна какой-то величине и т.п.

Другой

Этот способ проверки самый гибкий. В строке «Формула» Можно задать свою логическую формулу для проверки, если ни один из предыдущих способов проверки Вас не устраивает.

Например, чтобы в ячейку А1 вносили только коды, начинающиеся с символов “SUV”, и содержащие 12 символов, внесем в поле формулу: =И(ЛЕВСИМВ(A1;3)=»SUV»;ДЛСТР(A1)=12).

Лишь при выполнении этого правила значение будет считаться верным.

Напомню, функция ЛЕВСИМВ возвращает заданное количество символов слева направо, а ДЛСТР – считает количество символов в ячейке.

Как сделать проверку данных в excel?

Если Вы применили «Проверку данных» к таблице, в которой уже есть какие-то данные, можно проверить их на соблюдение заданных правил и, при необходимости, вручную исправить.

Для этого кликните на стрелке вниз возле ленточной команды «Проверка данных», в выпадающем меню выберите «Обвести неверные данные». Excel обведет ячейки с ошибками красным кругом.

Осталось только исправить ошибки, круги сами будут исчезать.

Чтобы убрать выделения без исправления, в этом же меню выберите «Удалить обводку неверных данных».

Как сделать проверку данных в excel?

И так, в этом уроке мы рассмотрели инструмент «Проверка данных», который позволяет найти ошибки в заполнении таблиц информацией, а так же, избежать появления новых.

Вы знаете, как важно, чтобы данные были «чистыми», ведь их проще обрабатывать, а результаты расчетов будут точнее отображать исследуемые процессы. Так что, лучше взять этот замечательный инструмент на вооружение.

Я, таким образом, иногда подстраховываю и себя самого, когда создаю таблицы данных. Думаю, «Проверка данных» будет и для Вас полезным помощником!

Источник: https://officelegko.com/2017/01/30/proverka-dannyih-v-excel-dlya-teh-kto-tsenit-svoe-vremya/

Существует две фундаментальные стратегии: обработка исправимых ошибок (исключения, коды возврата по ошибке, функции-обработчики) и неисправимых (assert(), abort()). В каких случаях какую стратегию лучше использовать?

Виды ошибок

Ошибки возникают по разным причинам: пользователь ввёл странные данные, ОС не может дать вам обработчика файла или код разыменовывает (dereferences) nullptr. Каждая из описанных ошибок требует к себе отдельного подхода. По причинам ошибки делятся на три основные категории:

  • Пользовательские ошибки: здесь под пользователем подразумевается человек, сидящий перед компьютером и действительно «использующий» программу, а не какой-то программист, дёргающий ваш API. Такие ошибки возникают тогда, когда пользователь делает что-то неправильно.
  • Системные ошибки появляются, когда ОС не может выполнить ваш запрос. Иными словами, причина системных ошибок — сбой вызова системного API. Некоторые возникают потому, что программист передал системному вызову плохие параметры, так что это скорее программистская ошибка, а не системная.
  • Программистские ошибки случаются, когда программист не учитывает предварительные условия API или языка программирования. Если API требует, чтобы вы не вызывали foo() с 0 в качестве первого параметра, а вы это сделали, — виноват программист. Если пользователь ввёл 0, который был передан foo(), а программист не написал проверку вводимых данных, то это опять же его вина.

Каждая из описанных категорий ошибок требует особого подхода к их обработке.

Пользовательские ошибки

Сделаю очень громкое заявление: такие ошибки — на самом деле не ошибки.

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

Поэтому не имеет смысла применять к пользовательским ошибкам какие-либо стратегии обработки. Вводимые данные нужно как можно скорее проверять, чтобы ошибок не возникало.

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

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

Системные ошибки

Обычно системные ошибки нельзя предсказать. Более того, они недетерминистские и могут возникать в программах, которые до этого работали без нареканий. В отличие от пользовательских ошибок, зависящих исключительно от вводимых данных, системные ошибки — настоящие ошибки.

Но как их обрабатывать, как исправимые или неисправимые?

Это зависит от обстоятельств.

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

Но падение программы из-за того, что ОС не может выделить сокет, — это не слишком дружелюбное поведение. Так что лучше бросить исключение и позволить catch аккуратно закрыть программу.

Но бросание исключения — не всегда правильный выбор.

Кто-то даже скажет, что он всегда неправильный.

Если вы хотите повторить операцию после её сбоя, то обёртывание функции в try-catch в цикле — медленное решение. Правильный выбор — возврат кода ошибки и цикличное исполнение, пока не будет возвращено правильное значение.

Если вы создаёте вызов API только для себя, то просто выберите подходящий для своей ситуации путь и следуйте ему. Но если вы пишете библиотеку, то не знаете, чего хотят пользователи. Дальше мы разберём подходящую стратегию для этого случая. Для потенциально неисправимых ошибок подойдёт «обработчик ошибок», а при других ошибках необходимо предоставить два варианта развития событий.

Обратите внимание, что не следует использовать подтверждения (assertions), включающиеся только в режиме отладки. Ведь системные ошибки могут возникать и в релизной сборке!

Программистские ошибки

Это худший вид ошибок. Для их обработки я стараюсь сделать так, чтобы мои ошибки были связаны только с вызовами функций, то есть с плохими параметрами. Прочие типы программистских ошибок могут быть пойманы только в runtime, с помощью отладочных макросов (assertion macros), раскиданных по коду.

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

Если исходное требование для функции — запрет на передачу ей плохих параметров, то, если их передать, это считается неопределённым поведением и должно проверяться не самой функцией, а оператором вызова (caller). Функция должна делать только отладочное подтверждение (debug assertion).

С другой стороны, если отсутствие плохих параметров не является частью исходных требований, а документация определяет, что функция будет бросать bad_parameter_exception при передаче ей плохого параметра, то передача — это хорошо определённое поведение (бросание исключения или любая другая стратегия обработки исправимых ошибок), и функция всегда должна это проверять.

В качестве примера рассмотрим получающие функции (accessor functions) std::vector<T>: в спецификации на operator[] говорится, что индекс должен быть в пределах валидного диапазона, при этом at() сообщает нам, что функция кинет исключение, если индекс не попадает в диапазон. Более того, большинство реализаций стандартных библиотек обеспечивают режим отладки, в котором проверяется индекс operator[], но технически это неопределённое поведение, оно не обязано проверяться.

Примечание: необязательно бросать исключение, чтобы получилось определённое поведение. Пока это не упомянуто в исходных условиях для функции, это считается определённым. Всё, что прописано в исходных условиях, не должно проверяться функцией, это неопределённое поведение.

Когда нужно проверять только с помощью отладочных подтверждений, а когда — постоянно?

К сожалению, однозначного рецепта нет, решение зависит от конкретной ситуации. У меня есть лишь одно проверенное правило, которому я следую при разработке API. Оно основано на наблюдении, что проверять исходные условия должен вызывающий, а не вызываемый. А значит, условие должно быть «проверяемым» для вызывающего. Также условие «проверяемое», если можно легко выполнить операцию, при которой значение параметра всегда будет правильным. Если для параметра это возможно, то это получается исходное условие, а значит, проверяется только посредством отладочного подтверждения (а если слишком дорого, то вообще не проверяется).

Но конечное решение зависит от многих других факторов, так что очень трудно дать какой-то общий совет. По умолчанию я стараюсь свести к неопределённому поведению и использованию только подтверждений. Иногда бывает целесообразно обеспечить оба варианта, как это делает стандартная библиотека с operator[] и at().

Хотя в ряде случаев это может быть ошибкой.

Об иерархии std::exception

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

Я предлагаю наследовать только от одного из этих четырёх классов:

  • std::bad_alloc: для сбоев выделения памяти.
  • std::runtime_error: для общих runtime-ошибок.
  • std::system_error (производное от std::runtime_error): для системных ошибок с кодами ошибок.
  • std::logic_error: для программистских ошибок с определённым поведением.

Обратите внимание, что в стандартной библиотеке разделяются логические (то есть программистские) и runtime-ошибки. Runtime-ошибки — более широкое определение, чем «системные». Оно описывает «ошибки, обнаруживаемые только при выполнении программы». Такая формулировка не слишком информативна. Лично я использую её для плохих параметров, которые не являются исключительно программистскими ошибками, а могут возникнуть и по вине пользователей. Но это можно определить лишь глубоко в стеке вызовов. Например, плохое форматирование комментариев в standardese приводит к исключению при парсинге, проистекающему из std::runtime_error. Позднее оно ловится на соответствующем уровне и фиксируется в логе. Но я не стал бы использовать этот класс иначе, как и std::logic_error.

Подведём итоги

Есть два пути обработки ошибок:

  • как исправимые: используются исключения или возвращаемые значения (в зависимости от ситуации/религии);
  • как неисправимые: ошибки журналируются, а программа прерывается.

Подтверждения — это особый вид стратегии обработки неисправимых ошибок, только в режиме отладки.

Есть три основных источника ошибок, каждый требует особого подхода:

  • Пользовательские ошибки не должны обрабатываться как ошибки на верхних уровнях программы. Всё, что вводит пользователь, должно проверяться соответствующим образом. Это может обрабатываться как ошибки только на нижних уровнях, которые не взаимодействуют с пользователями напрямую. Применяется стратегия обработки исправимых ошибок.
  • Системные ошибки могут обрабатываться в рамках любой из двух стратегий, в зависимости от типа и тяжести. Библиотеки должны работать как можно гибче.
  • Программистские ошибки, то есть плохие параметры, могут быть запрещены исходными условиями. В этом случае функция должна использовать только проверку с помощью отладочных подтверждений. Если же речь идёт о полностью определённом поведении, то функции следует предписанным образом сообщать об ошибке. Я стараюсь по умолчанию следовать сценарию с неопределённым поведением и определяю для функции проверку параметров лишь тогда, когда это слишком трудно сделать на стороне вызывающего.

Гибкие методики обработки ошибок в C++

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

Это относительно легко сделать в высокоуровневых функциях. Вы точно знаете, почему что-то пошло не так, и можете обработать это соответствующим образом. Но в случае с низкоуровневыми функциями всё не так просто. Они не знают, что пошло не так, они знают лишь о самом факте сбоя и должны сообщить об этом тому, кто их вызвал.

В C++ есть два основных подхода: коды возврата ошибок и исключения. Сегодня широко распространено использование исключений. Но некоторые не могут / думают, что не могут / не хотят их использовать — по разным причинам.

Я не буду принимать чью-либо сторону. Вместо этого я опишу методики, которые удовлетворят сторонников обоих подходов. Особенно методики пригодятся разработчикам библиотек.

Проблема

Я работаю над проектом foonathan/memory. Это решение предоставляет различные классы выделения памяти (allocator classes), так что в качестве примера рассмотрим структуру функции выделения.

Для простоты возьмём malloc(). Она возвращает указатель на выделяемую память. Если выделить память не получается, то возвращается nullptr, то есть NULL, то есть ошибочное значение.

У этого решения есть недостатки: вам нужно проверять каждый вызов malloc(). Если вы забудете это сделать, то выделите несуществующую память. Кроме того, по своей натуре коды ошибок транзитивны: если вызвать функцию, которая может вернуть код ошибки, и вы не можете его проигнорировать или обработать, то вы тоже должны вернуть код ошибки.

Это приводит нас к ситуации, когда чередуются нормальные и ошибочные ветви кода. Исключения в таком случае выглядят более подходящим решением. Благодаря им вы сможете обрабатывать ошибки только тогда, когда вам это нужно, а в противном случае — достаточно тихо передать их обратно вызывающему.

Это можно расценить как недостаток.

Но в подобных ситуациях исключения имеют также очень большое преимущество: функция выделения памяти либо возвращает валидную память, либо вообще ничего не возвращает. Это функция «всё или ничего», возвращаемое значение всегда будет валидным. Это полезное следствие согласно принципу Скотта Майера «Make interfaces hard to use incorrectly and easy to use correctly».

Учитывая вышесказанное, можно утверждать, что вам следует использовать исключения в качестве механизма обработки ошибок. Этого мнения придерживается большинство разработчиков на С++, включая и меня. Но проект, которым я занимаюсь, — это библиотека, предоставляющая средства выделения памяти, и предназначена она для приложений, работающих в реальном времени. Для большинства разработчиков подобных приложений (особенно для игроделов) само использование исключений — исключение.

Каламбур детектед.

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

Так что же делать?

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

К счастью, я могу определить, что вы делаете, когда обнаруживаете ошибку нехватки памяти: чаще всего вы журналируете это событие и прерываете программу, поскольку она не может корректно работать без памяти. В таких ситуациях исключения — просто способ передачи контроля другой части кода, которая журналирует и прерывает программу. Но есть старый и эффективный способ передачи контроля: указатель функции (function pointer), то есть функция-обработчик (handler function).

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

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

Решение 1: обработчик исключений

Если вам нужно обработать ошибку в условиях, когда наиболее распространённым поведением будет «журналировать и прервать», то можно использовать обработчика исключений. Это такая функция-обработчик, которая вызывается вместо бросания объекта-исключения. Её довольно легко реализовать даже в уже существующем коде. Для этого нужно поместить управление обработкой в класс исключений и обернуть в макрос выражение throw.

Сначала дополним класс и добавим функции для настройки и, возможно, запрашивания функции-обработчика. Я предлагаю делать это так же, как стандартная библиотека обрабатывает std::new_handler:

class my_fatal_error
{
public:
    // тип обработчика, он должен брать те же параметры, что и конструктор,
    // чтобы у них была одинаковая информация
    using handler = void(*)( ... );

    // меняет функцию-обработчика
    handler set_handler(handler h);

    // возвращает текущего обработчика
    handler get_handler();

    ... // нормальное исключение
};

Поскольку это входит в область видимости класса исключений, вам не нужно именовать каким-то особым образом. Отлично, нам же легче.

Если исключения включены, то для удаления обработчика можно использовать условное компилирование (conditional compilation). Если хотите, то также напишите обычный подмешанный класс (mixin class), дающий требуемую функциональность.

Конструктор исключений элегантен: он вызывает текущую функцию-обработчика, передавая ей требуемые аргументы из своих параметров. А затем комбинирует с последующим макросом throw:

If```cpp #if EXCEPTIONS #define THROW(Ex) throw (Ex) #else #define THROW(Ex) (Ex), std::abort() #endif

> Такой макрос throw также предоставляется [foonathan/compatiblity](https://github.com/foonathan/compatibility).

Можно использовать его и так:

```cpp
THROW(my_fatal_error(...))

Если у вас включена поддержка исключений, то будет создан и брошен объект-исключение, всё как обычно. Но если поддержка выключена, то объект-исключение всё равно будет создан, и — это важно — только после этого произойдёт вызов std::abort(). А поскольку конструктор вызывает функцию-обработчика, то он и работает, как требуется: вы получаете точку настройки для журналирования ошибки. Благодаря же вызову std::abort() после конструктора пользователь не может нарушить постусловие.

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

Так что при этой методике вам ещё будет доступна определённая степень кастомизации, даже если вы отключите исключения. Конечно, замена неполноценная, мы только журналируем и прерываем работу программы, без дальнейшего продолжения. Но в ряде случаев, в том числе при исчерпании памяти, это вполне пригодное решение.

А если я хочу продолжить работу после бросания исключения?

Методика с обработчиком исключений не позволяет этого сделать в связи с постусловием кода. Как же тогда продолжить работу?

Ответ прост — никак. По крайней мере, это нельзя сделать так же просто, как в других случаях. Нельзя просто так вернуть код ошибки вместо исключения, если функция на это не рассчитана.
Есть только одно решение: сделать две функции. Одна возвращает код ошибки, а вторая бросает исключения. Клиенты, которым нужны исключения, будут использовать второй вариант, остальные — первый.

Извините, что говорю такие очевидные вещи, но ради полноты изложения я должен был об этом сказать.

Для примера снова возьмём функцию выделения памяти. В этом случае я использую такие функции:

void* try_malloc(..., int &error_code) noexcept;

void* malloc(...);

При сбое выделения памяти первая версия возвращает nullptr и устанавливает error_code в коде ошибки. Вторая версия не возвращает nullptr, зато бросает исключение. Обратите внимание, что в рамках первой версии очень легко реализовать вторую:

void* malloc(...)
{
    auto error_code = 0;
    auto res = try_malloc(..., error_code);
    if (!res)
        throw malloc_error(error_code);
    return res;
}

Не делайте этого в обратной последовательности, иначе вам придётся ловить исключение, а это дорого. Также это не даст нам скомпилировать код без включённой поддержки исключений. Если сделаете, как показано, то можете просто стереть другую перегрузку (overload) с помощью условного компилирования.

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

Решение 2: предоставить две перегрузки

Если недостаточно обработчика исключений, то нужно предоставить две перегрузки. Одна использует код возврата, а вторая бросает исключение.

Если рассматриваемая функция не имеет возвращаемого значения, то можете её использовать для кода ошибки. В противном случае вам придётся возвращать недопустимое значение для сигнализирования об ошибке — как nullptr в вышеприведённом примере, — а также установить выходной параметр для кода ошибки, если хотите предоставить вызывающему дополнительную информацию.

Пожалуйста, не используйте глобальную переменную errno или что-то типа GetLastError()!

Если возвращаемое значение не содержит недопустимое значение для обозначения сбоя, то по мере возможности используйте std::optional или что-то похожее.

Перегрузка исключения (exception overload) может — и должна — быть реализована в рамках версии с кодом ошибки, как это показано выше. Если компилируете без исключений, сотрите перегрузку с помощью условного компилирования.

std::system_error

Подобная система идеально подходит для работы с кодами ошибок в С++ 11.

Она возвращает непортируемый (non-portable) код ошибки std::error_code, то есть возвращаемый функцией операционной системы. С помощью сложной системы библиотечных средств и категорий ошибок вы можете добавить собственные коды ошибок, или портируемые std::error_condition. Для начала почитайте об этом здесь. Если нужно, то можете использовать в функции кода ошибки std::error_code. А для функции исключения есть подходящий класс исключения: std::system_error. Он берёт std::error_code и применяется для передачи этих ошибок в виде исключений.

Эту или подобную систему должны использовать все низкоуровневые функции, являющиеся закрытыми обёртками ОС-функций. Это хорошая — хотя и сложная — альтернатива службе кодов ошибок, предоставляемой операционной системой.

Да, и мне ещё нужно добавить подобное в функции виртуальной памяти. На сегодняшний день они не предоставляют коды ошибок.

std::expected

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

А глобальные переменные вообще не вариант!

В № 4109 предложено решение: std::expected. Это шаблон класса, который также хранит возвращаемое значение или код ошибки. В вышеприведённом примере он мог бы использоваться так:

std::expected<void*, std::error_code> try_malloc(...);

В случае успеха std::expected будет хранить не-null указатель памяти, а при сбое — std::error_code. Сейчас эта методика работает при любых возвращаемых значениях. Комбинация std::expected и функции исключения определённо допускает любые варианты использования.

Заключение

Если вы создаёте библиотеки, то иногда приходится обеспечивать максимальную гибкость использования. Под этим подразумевается и разнообразие средств обработки ошибок: иногда требуются коды возврата, иногда — исключения.

Одна из возможных стратегий — улаживание этих противоречий с помощью обработчика исключений. Просто удостоверьтесь, что когда нужно, то вызывается callback, а не бросается исключение. Это замена для критических ошибок, которая в любом случае будет журналироваться перед прерыванием работы программы. Как таковой этот способ не универсален, вы не можете переключаться в одной программе между двумя версиями. Это лишь обходное решение при отключённой поддержке исключений.

Более гибкий подход — просто предоставить две перегрузки, одну с исключениями, а вторую без. Это даст пользователям максимальную свободу, они смогут выбирать ту версию, что лучше подходит в их ситуации. Недостаток этого подхода: вам придётся больше потрудиться при создании библиотеки.

Понравилась статья? Поделить с друзьями:
  • Данные для проверки pin кода заблокированы код ошибки 27011
  • Данные всегда должны и ошибки если
  • Данные в базе рса с ошибками
  • Данные nls отсутствуют или содержат ошибки 0xc0000225
  • Данное явление является уникальным ошибка