Как распознать и исправить синтаксическую ошибку в предложении?
Синтаксическая ошибка — это ошибка, связанная с неверной структурой предложения или нарушением грамматических правил. Она может привести к тому, что предложение будет непонятным или даже смысловой кашей. В этой статье мы рассмотрим, как распознать и исправить синтаксические ошибки в предложениях.
Как распознать синтаксическую ошибку?
Синтаксическая ошибка может проявляться в различных формах. Некоторые из них включают:
- Нарушение порядка слов в предложении
- Неправильное использование знаков препинания
- Несоответствие времен глаголов в предложении
- Неправильное использование формы глагола
Для того, чтобы распознать синтаксическую ошибку, нужно внимательно прочитать предложение, сосредоточиться на его структуре и правильной грамматике. Если не уверены в правильности написания, можно проверить в словаре, грамматическом справочнике или обратиться к более опытному человеку.
Как исправить синтаксическую ошибку?
Исправление синтаксической ошибки может потребовать большего времени и внимания, чем ее распознавание. Однако, есть несколько общих подходов, которые можно использовать при исправлении ошибок в предложениях:
-
Проверьте порядок слов в предложении. Если нужно, переставьте слова, чтобы убедиться, что смысл предложения остался неизменным.
-
Проверьте знаки препинания. Некоторые предложения могут иметь смысл только с правильным использованием знаков препинания.
-
Проверьте согласование времен глаголов в предложении. Убедитесь, что все глаголы в предложении соответствуют своему времени.
-
Проверьте форму глаголов и существительных в предложении. Убедитесь, что все слова в предложении написаны правильно и используются в правильной форме.
-
Попросите кого-то проверить ваше предложение на ошибки. Иногда другой человек может заметить ошибку, которую вы не заметили.
В заключении
Синтаксические ошибки могут быть сложными, но их можно распознать и исправить. Для того, чтобы избежать ошибок в написании предложений, нужно сосредоточиться на своей грамматике и правильной структуре предложения. Если вы не уверены в своих навыках грамматики, не стесняйтесь обращаться за помощью.
Синтаксические ошибки заключаются в неверном построении словосочетаний, в нарушении структуры простых, осложненных и сложных предложений.
Ошибки в структуре словосочетаний:
1. Нарушение согласования с главным словом в роде, числе и падеже слова зависимого, выраженного прилагательным, причастием, порядковым числительным, местоимением: «Нынешнее летом я был в степном Заволжье».
2. Нарушение управления. Ошибки в беспредложном управлении (неправильный выбор предлога): «Если в жаркий день дотронешься к березе, то почувствуешь прохладный ствол».
3. Неправильный выбор падежа при правильно выбранном предлоге: «Он был похож на смертельно усталым человеком».
4. Пропуск предлога: «Пообедав торопливо, сел за штурвал, поехал (?) поле».
5. Употребление лишнего предлога «Жажда к славе».
6. Пропуск зависимого компонента словосочетания: «Снова садится в жаркую кабину, снова крутить лоснящийся от ладоней штурвал, (?) ехать».
Ошибки в строении и значении предложения:
1. Нарушение связи между подлежащим и сказуемым: «Но не вечно ни юность, ни лето», «Солнце уже села, когда мы вернулись».
2. Отсутствие смысловой законченности предложения, нарушение его границ: «Однажды в годы войны. Попал в тополь снаряд».
3. Синтаксическая двузначность: «Их (девочек) мечта сбылась, они (рыбаки) вернулись».
4. Нарушение видовременной соотнесенности глаголов в составе предложения: «Гринев видит, как Пугачев садился в карету».
Ошибки в простом двусоставном предложении:
Подлежащее:
– Местоименное дублирование подлежащего: «Дети, сидящие на старой опрокинутой вверх килем лодке, они ждут своего отца».
– Нарушение согласования подлежащего и местоимения, заменяющего подлежащее в другом предложении: «Видимо, на море шторм, поэтому он полон опасностей».
Сказуемое:
– Ошибки в конструировании сказуемого: «Все были счастливые».
– Нарушение согласования сказуемого в роде и числе с подлежащим, выраженным собирательными существительным, количественно-именным словосочетанием, вопросительным и неопределенным местоимением: «Я с мамой остались дома», «В комнату проникли сноп лучей солнца».
– Местоименное дублирование дополнения: «Многие книги их можно читать несколько раз».
Определение:
– Неправильное использование несогласованного определения: «Справа висят светильник и мой портрет из садика».
– Нагромождение согласованных и не согласованных определений, относящихся к одному члену предложения: «Огромный, прекрасный мир жизни нашей страны и наших сверстников открывается в миллионах книг».
– Неверный выбор морфологической формы обстоятельства: «Я учу уроки на столе» (за столом).
Ошибки в односоставном предложении:
1. Использование двусоставных конструкций на месте односоставных.
2. Использование деепричастного оборота в безличном предложении: «Увидев собаку, мне стало жаль ее».
Предложения с однородными членами:
1. Использование разных частей речи в роли однородных членов предложения: «Комната мне нравится, потому что в ней светло, большая, чистая».
2. Включение в ряд однородных членов слов, обозначающих неоднородные понятия: «Когда весна и ясный день, солнце освещает всю мою комнату».
3. Неправильное использование сочинительных союзов для соединения однородных членов: «Мальчик был лобастый, но серьезный».
4. Неверное присоединение к одному главному члену логически неоднородных второстепенных членов: «В шкафу стоят книги, на полках лежат газеты и стеклянная посуда».
5. Ошибки в согласовании однородных подлежащих со сказуемым: «Тревога и тоска застыла в ее глазах».
6. Нарушения в области однородных сказуемых:
а) использование разных типов сказуемых в качестве однородных: «Море после шторма спокойное, ласковое и играет лучами солнца»;
б) нарушение единообразного оформления составных именных сказуемых: использование разных падежных форм именной части однородных составных именных сказуемых: «Их отец был опытным рыбаком и отважный мореход»; присоединение к однородным глагольным сказуемым дополнения, которое управляется лишь одним из сказуемых: «Все очень ждут и переживают за солдат»; употребление кратких и полных форм прилагательных и причастий в именной части: «Моя комната недавно отремонтирована: побелена и покрашенная».
7. Объединение членов и частей разных предложений на правах однородных: «Под березой растут грибы, ягоды, подснежники расцветают весной». «Дети ждали отца и когда покажется его лодка».
Предложения с вводными словами и вводными конструкциями:
1. Неправильный выбор вводного слова: «Девочки напряженно вглядывались в даль моря: наверное, на горизонте появится лодка».
2. Использование такого вводного слова, которое приводит к двусмысленности: «По словам рыбаков, ночью был шторм, а теперь штиль».
3. Употребление вводного предложения как самостоятельного: «Книга – источник знаний. Как утверждают многие».
Предложения с обособленными членами:
1. Нарушение порядка слов в предложениях с причастным оборотом.
– Отрыв причастного оборота от определяемого слова: «Но с деревом опять произошло несчастье: его ветви обрубили, расположенные низко».
– Включение определяемого слова в состав причастного оборота: «У девочек устремленный взгляд в море».
2. Нарушение правил построения причастного оборота.
– Построение причастного оборота по образцу придаточного предложения: «На картине изображена девочка, которая только вставшая».
– Употребление причастного оборота вместо деепричастного: «И каждый раз, возвращавшиеся обратно, мы садились под тополем и отдыхали».
3. Ошибки в предложениях с обособленными обстоятельствами, выраженными деепричастным оборотом: Отдыхая в кресле, передо мной висит картина «Март».
Способы передачи прямой речи. Прямая и косвенная речь:
1. Объединение прямой речи и слов автора: Перед войной отец сказал мне: «Ухаживай за деревом и ушел на фронт».
2. Употребление прямой речи без слов автора: Девочки увидели баркас: «Папа!».
3. Смешение прямой косвенной речи: Дедушка сказал, что в детстве у них был такой закон: в дни рождения дарили мы только то, что сделано было своими руками».
4. Ошибки при введении цитат: К. Паустовский говорил, что «Человек, любящий и умеющий читать, счастливый человек».
Сложные предложения:
1. Нарушение логико-грамматической связи между частями сложносочиненного предложения: «Мой отец долго не забывал эту историю, но он умер».
2. Использование местоимения во второй части сложносочиненного предложения, приводящее к двусмысленности: «Пусть надежды сбудутся, и они вернутся».
3. Ошибки в использовании сложносочиненных союзов:
а) соединительных – для связи частей сложносочиненного предложения при отсутствии между ними противительных отношений: «Вчера был шторм, и сегодня все кругом было спокойно».
б) противительных – для соединения частей сложносочиненного предложения при отсутствии между ними противительных отношений: «У нас во дворе растет береза, но на ней тоже набухают почки»;
в) двойных и повторяющихся: «Не то птица села на воду, или обломки разбитой лодки плывут по морю»;
г) неоправданный повтор союзов: «И вдруг девочки увидели маленькую черную точку, и у них появилась надежда»;
д) неудачный выбор союзов: «Митраше было десять лет с хвостиком, но сестра была старше».
Сложноподчиненные предложения:
1. Несоответствие вида придаточного предложения значению главного: «Но они все же дождутся своего отца, так как рыбаков обязательно должны ждать на берегу».
2. Использование сочинения и подчинения для связи частей в сложноподчиненном предложении: «Если человек не занимается спортом, и он быстро стареет».
3. Утяжеления конструкций за счет «нанизывания» придаточных предложений: «Парус появился в море как счастливая весть о том, что с рыбаками все в порядке и что девочки смогут скоро обнять своих родителей, которые задержались в море, потому что был сильный шторм».
4. Пропуск необходимого указательного слова: «Мама всегда меня ругает, что я разбрасываю свои вещи».
5. Неоправданное употребление указательного слова: «У меня есть такое предположение, что рыбаков задержал шторм».
6. Неправильное использование союзов и союзных слов при правильном их выборе:
а) употребление союзов и союзных слов в середине придаточного предложения: «В комнате на тумбочке стоит телевизор, после школы по которому я смотрю развлекательные передачи»;
б) нарушение согласования союзного слова в придаточном предложении с замещаемым или определительным словом в главном предложении: «На двух полочках – художественная литература, которыми я пользуюсь при подготовке к урокам».
7. Использование однотипных придаточных предложений при последовательном подчинении: «Прогуливаясь по берегу, я увидела двух девочек, которые сидели на перевернутой лодке, которая лежала у берега верх килем».
8. Использование придаточного предложения как самостоятельного: «Девочки беспокоятся за своих родных. Поэтому так печально глядят они в даль».
Бессоюзное сложное предложение:
1. Нарушение единства конструкций однородных частей в составе бессоюзного сложного предложения: «На картине изображено: раннее утро, только встает солнце».
2. Разложение частей бессоюзного сложного предложения на самостоятельные предложения: «Одеты девочки просто. На них летние ситцевые платья. На голове у старшей платок».
3. Одновременное использование бессоюзной и союзной связи: «Одежда на девочках простая: которая постарше с платком на голове, в синей юбке и серой кофте, младшая без платка, в фиолетовом платье и темно-синей кофточке».
Сложное предложение с различными видами связи:
1. Нарушение порядка следования частей предложения: «Волны еще пенятся, но у берега успокаиваются; чем ближе к горизонту, тем море темнее; и поэтому у девочек есть надежда, что отец вернется».
2. Использование местоимений, приводящих к двусмысленности: «Мы видим, что кровать у девочки не заправлена, и она подтверждает, что девочка только что встала».
Время на чтение:
19 минут
Разновидности ошибок
Чтобы понимать, что представляют собой такие нарушения речи, важно видеть разницу. Существует несколько видов ошибок, которые отличаются в зависимости от неверных формулировок, неправильного использования времен глаголов, построения предложения в целом и много другого.
Нарушения структуры сочетания слов:
- неправильное использование правил согласования;
- неверное применение способов синтаксического управления;
- ошибки при выборе падежных окончаний;
- немотивированное употребление предлогов;
- использования предлогов там, где они неуместны;
- пропуск зависимого члена в составной структуре.
Построение блоков с потерей смысловой нагрузки:
- Сказуемое и подлежащее не имеют логической связи.
- Составление незаконченных самостоятельных единиц текста.
- Построение предложений, где любая из частей может обладать господствующим значением (двузначность).
- Неправильное сопоставление времен глаголов.
Неверное формирование простых двусоставных структур:
- Повторное указание подлежащего с помощью местоимения.
- Несогласованность местоимения и подлежащего во взаимосвязанных образованиях.
- Замена сказуемого на прилагательное.
- Отсутствие родовой и числительной связи между подлежащим и сказуемым.
- Некорректное использование нескольких местоимений, обозначающих подлежащее.
- Неверное употребление определений без их согласования.
- Неуместное применение большого количества определений обоих видов.
- Искажение формы обстоятельства при указании места действия.
Неправильное построение предложений с одним главным членом:
- Употребление двух главных членов в односоставной конструкции.
- Применение деепричастных словосочетаний в конструкции, описывающей независимое действие или обстоятельство.
- Ошибочное использование различных по свойствам классов речи в качестве однородных членов.
- Употребление разнородных определений как однородных частей предложения.
- Неверный выбор союзов для объединения однородных членов.
- Ошибочное образование взаимосвязи между главным и второстепенными членами.
- Отсутствие логической связи между подлежащим и сказуемым.
- Использование разнородных сказуемых как однородных частей.
- Разночтение падежных окончаний именных сказуемых.
Ошибки при образовании вводных слов и композиций:
- использование вводной конструкции в качестве самостоятельного элемента;
- некорректный подбор вводного слова;
- применение вводных композиций, приводящих к возможности двойственного толкования.
Построение неверных конструкций с синтаксически самостоятельными членами:
- Разрыв связи между причастием и словом, которое оно определяет.
- Объединение определения и причастной конструкции.
- Использование блока придаточного типа в качестве причастного оборота.
- Применение деепричастной конструкции как причастного оборота.
- Нарушение построения предложений с обстоятельствами, обладающими изолированными определениями, которые описываются с помощью деепричастия.
Ошибки при отображении прямой и косвенной речи:
- Совместное употребление прямой и авторской речи в одном образовании.
- Отсутствие вводной конструкции от автора при использовании прямой речи.
- Неуместное связывание своего и чужого повествования в одном блоке.
- Неверное формулирование при цитировании высказываний.
Неправильное формирование композиций с несколькими главными членами:
- Смысловые несоответствия грамматического сочетания в сложносочинённых конструкциях.
- Вставка местоимений во вторую половину сложносочинённого блока.
- Неверный выбор соединительного союза для образования взаимосвязи между составляющими сложносочинённого блока.
- Неверный выбор противительного союза.
- Некорректное введение дополнительных и повторяющихся союзов.
- Немотивированное применение одинаковых союзов в одном предложении.
- Ошибочный подбор союза.
Неверное составление конструкций сложноподчинённого типа:
- неправильное сочетание главной и зависимой частей;
- увеличение объема из-за неоправданного количества подчиненных сегментов;
- отсутствие указательного блока;
- выделение зависимой части композиции в самостоятельную единицу текста;
- вставка неуместного указательного оборота;
- разрыв смыслового значения между заместительным союзом подчинённой части и определением в основной части;
- неверное местоположение союзного слова в зависимом предложении;
- неоправданное употребление нескольких зависимых конструкций одного типа.
Ошибочное составление сложных блоков без союзов и союзных слов:
- Отсутствие взаимосвязи между отдельными частями бессоюзного образования сложного вида.
- Употребление частей сложной бессоюзной конструкции как самостоятельных единиц текста.
- Смешение союзных и бессоюзных способов образования сложных структур.
Неправильное формирование сложных блоков с применением связующих способов разного типа:
- Искаженная последовательность элементов сложной конструкции.
- Нарушение взаимосвязи составляющих сложного предложения из-за некорректной вставки местоимений.
Чтобы исключить из текста или речи ошибки такого рода, нужно знать и применять на практике установленные нормы и правила.
Способы исправления
Для того чтобы знать, как исправить синтаксическую ошибку, нужно провести тщательный анализ текста. Выявив смысловые провалы и логические несоответствия, можно приступать устранению несоответствий содержания грамматическим нормам русского языка.
Номера в списке исправления ошибок соответствуют порядку в перечне «Разновидности ошибок»
Список методов исправления ошибок:
- Соблюдать грамматически верную расстановку слов во всех видах предложений.
- Построение структуры без нарушения ее границ, с логически верным внутренним содержанием.
- Формируя двусоставные единицы, правильно использовать местоимения, не заменять сказуемые прилагательными. Не нарушать связи между частями предложения. Применять определения без потери смысловой нагрузки. Корректно согласовывать сказуемое и подлежащее, учитывая число и род.
- Запрещается составлять односоставные композиции по типу двусоставных моделей и вставлять деепричастные словосочетания без указания лица действия.
- Нельзя использовать вводные слова и конструкции как самостоятельные части речи.
- Правильно составлять причастные блоки и следить за логической последовательностью их в предложении.
- Грамматически верно сочетать прямую и косвенную речь.
- Соблюдение смысловых связей между составляющими сложных структур. Правильное употребление союзов сложносочинённого типа.
- Следить за смысловой и грамматической взаимосвязью частей. Избегать ненужного увеличение объема и не использовать подчиненные составляющие как самостоятельные элементы текста.
- Применять только принципы образования бессоюзных конструкций и воздерживаться от потери смысловой связи между сегментами.
Кроме того, нельзя допускать нарушение логической последовательности частей при образовании сложных элементов текста.
Примеры допущенных погрешностей
Наглядные модели предложений, содержащих синтаксические нарушения, помогают более глубоко понять правила русского языка и не позволяют допустить погрешность.
Синтаксические ошибки, примеры:
- Типичное нарушение структуры сочетания слов: Прошедшее зимой он гулял по берегу озера.
- Нарушение смысловой структуры: Снегопад уже начиналась, когда туристы возвращались в лагерь.
- Неверный порядок следования частей простого двусоставного образования: Облака, собравшиеся в грозовую тучу, они готовы разразиться дождем.
- Неправильное построение односоставного образования: Лес нам понравился, потому что в нем интересно, красивый и загадочный.
- Неверная постановка вводного слова: Люди с нетерпением поглядывали на часы, наверное, из-за поворота появится автобус.
- Ошибочный состав конструкции с синтаксически самостоятельными членами: Ребенку вручили подарки: он распечатал, красиво упакованные.
- Ошибки при отображении речевых выражений прямого и косвенного порядка: После остановки проводник крикнул: «Все пассажиры, на выход и первым покинул троллейбус».
- Неправильно сформированная композиция с несколькими главными членами: Ее собака любила играть с резиновым мячом, но она убежала.
- Неверное образование сложноподчинённой композиции: Они всё-таки смогут купаться, потому что дети должны уметь плавать.
- Отсутствие единообразия составляющих сложной бессоюзной структуры и неправильная расстановка знаков препинания: На фестивале показано интересное, представление играют актеры.
- Отсутствие правильной последовательности при формировании сложного образования: Ветер еще дует, но уже не так сильно, поэтому остается надежда, что рыбаки выживут, небо проясняется.
Виды синтаксических ошибок и способы их исправления можно изучить более подробно по многочисленным таблицам, широко представленным в специализированной литературе, а также пройти пробное задание.
Тест для закрепления материала
-
1
В каком предложении нет грамматической ошибки:- Нужно при выходе из автобуса оплатить за проезд
- Согласно приказу директора учащиеся прошли флюорографию
- Двое девушек собирали цветы на лугу
-
2
В каком предложении нет грамматической ошибки:- Поезд пришёл согласно расписанию.
- Одним из русских писателей, подробно описавшего русский быт, был Иван Бунин.
- Он в своих высказываниях недалек к истине.
-
3
В каком предложении нет грамматической ошибки:- Летом я поеду до дедушки в деревню.
- Вопреки прогнозам метеорологов пошёл дождь.
- С Ростова я вернулась поздним вечером.
-
4
Укажите предложение, в котором нет грамматической ошибки:- Эти факты говорят за то, что молодёжь совершенно перестали читать классику.
- Когда у него спросили, что какой твой любимый герой в романе, он сказал, что ещё не знает.
- Бабушка любила единственного внука и переживала за него.
-
5
Укажите предложение с грамматической ошибкой (с нарушением синтаксической нормы):- Обе фигуры были интеллигентные и приятные и напоминали мне почему-то героев И. С. Тургенева.
- Колька не столько пел, сколько раскрывал рот и делал вид, что поёт.
- Согласно приказа командира батальона, солдаты должны были идти в наступление.
Доска почета
Чтобы сюда попасть — пройдите тест
Все тесты
- Биология
- Фонетический разбор
- Химия
- Сочинения
- Философия
- Мифология
- Некрасов Н.А.
- Читательский дневник
- Анализ стихотворений
- Бунин И.А
- Чехов А.П.
- Достоевский Ф. М.
- Горький М.
- Салтыков-Щедрин М.Е
- Пушкин А.С
- Обществознание
- Естествознание
- Орфография
- Физкультура
- Математика
- География
- Физика
- Геометрия
- Биографии
- Правоведение
- Краткие содержания
- Литература
- Пунктуация
- Русский язык
- История
- Помощь студенту
- Экономика
-
Тест на тему
Как происходит процесс размножения птиц
5 вопросов -
Тест на тему
Семейство розоцветные — характеристика, признаки и примеры
5 вопросов -
Тест на тему
Характеристика пищеварительной системы рыб
5 вопросов -
Тест на тему
Биогенетический закон Геккеля-Мюллера
5 вопросов -
Тест на тему
Что такое хвощи и плавуны?
5 вопросов -
Тест на тему
Тест: Что такое микроэволюция и макроэволюция?
5 вопросов -
Тест на тему
Тест: Что вы знаете о цикле Кребса?
5 вопросов
Читайте также
Отладка программы призвана выискивать «вредителей» кода и устранять их. За это отвечают отладчик и журналирование для вывода сведений о программе.
В предыдущей части мы рассмотрели исходный код и его составляющие.
После того, как вы начнете проверять фрагменты кода или попытаетесь решить связанные с ним проблемы, вы очень скоро поймете, что существуют моменты, когда программа крашится, прерывается и прекращает работу.
Это часто вызвано ошибками, известными как дефекты или исключительные ситуации во время выполнения. Акт обнаружения и удаления ошибок из нашего кода – это отладка программы. Вы лучше разберетесь в отладке на практике, используя ее как можно чаще. Мы не только отлаживаем собственный код, но и порой дебажим написанное другими программистами.
Для начала необходимо рассортировать общие ошибки, которые могут возникнуть в исходном коде.
Синтаксические ошибки
Эти эрроры не позволяют скомпилировать исходный код на компилируемых языках программирования. Они обнаруживаются во время компиляции или интерпретации исходного кода. Они также могут быть легко обнаружены статическими анализаторами (линтами). Подробнее о линтах мы узнаем немного позже.
Синтаксические ошибки в основном вызваны нарушением ожидаемой формы или структуры языка, на котором пишется программа. Как пример, это может быть отсутствующая закрывающая скобка в уравнении.
Семантические ошибки
Отладка программы может потребоваться и по причине семантических ошибок, также известных как логические. Они являются наиболее сложными из всех, потому что не могут быть легко обнаружены. Признак того, что существует семантическая ошибка, – это когда программа запускается, отрабатывает, но не дает желаемого результата.
Рассмотрим данный пример:
3 + 5 * 6
По порядку приоритета, называемому старшинством операции, с учетом математических правил мы ожидаем, что сначала будет оценена часть умножения, и окончательный результат будет равен 33. Если программист хотел, чтобы сначала происходило добавление двух чисел, следовало поступить иначе. Для этого используются круглые скобки, которые отвечают за смещение приоритетов в математической формуле. Исправленный пример должен выглядеть так:
(3 + 5) * 6
3 + 5, заключенные в скобки, дадут желаемый результат, а именно 48.
Ошибки в процессе выполнения
Как и семантические, ошибки во время выполнения никогда не обнаруживаются при компиляции. В отличие от семантических ошибок, эти прерывают программу и препятствуют ее дальнейшему выполнению. Они обычно вызваны неожиданным результатом некоторых вычислений в исходном коде.
Вот хороший пример:
input = 25 x = 0.8/(Math.sqrt(input) - 5)
Фрагмент кода выше будет скомпилирован успешно, но input 25 приведет к ZeroDivisionError. Это ошибка во время выполнения. Другим популярным примером является StackOverflowError или IndexOutofBoundError. Важно то, что вы идентифицируете эти ошибки и узнаете, как с ними бороться.
Существуют ошибки, связанные с тем, как ваш исходный код использует память и пространство на платформе или в среде, в которой он запущен. Они также являются ошибками во время выполнения. Такие ошибки, как OutOfMemoryErrorand и HeapError обычно вызваны тем, что ваш исходный код использует слишком много ресурсов. Хорошее знание алгоритмов поможет написать код, который лучше использует ресурсы. В этом и заключается отладка программы.
Процесс перезаписи кода для повышения производительности называется оптимизацией. Менее популярное наименование процесса – рефакторинг. Поскольку вы тратите больше времени на кодинг, то должны иметь это в виду.
Отладка программы
Вот несколько советов о том, как правильно выполнять отладку:
- Использовать Linters. Linters – это инструменты, которые помогают считывать исходный код, чтобы проверить, соответствует ли он ожидаемому стандарту на выбранном языке программирования. Существуют линты для многих языков.
- Превалирование IDE над простыми редакторами. Вы можете выбрать IDE, разработанную для языка, который изучаете. IDE – это интегрированные среды разработки. Они созданы для написания, отладки, компиляции и запуска кода. Jetbrains создают отличные IDE, такие как Webstorm и IntelliJ. Также есть NetBeans, Komodo, Qt, Android Studio, XCode (поставляется с Mac), etc.
- Чтение кода вслух. Это полезно, когда вы ищете семантическую ошибку. Читая свой код вслух, есть большая вероятность, что вы зачитаете и ошибку.
- Чтение логов. Когда компилятор отмечает Error, обязательно посмотрите, где он находится.
Двигаемся дальше
Поздравляем! Слово «ошибка» уже привычно для вас, равно как и «отладка программы». В качестве новичка вы можете изучать кодинг по книгам, онлайн-урокам или видео. И даже чужой код вам теперь не страшен
В процессе кодинга измените что-нибудь, чтобы понять, как он работает. Но будьте уверены в том, что сами написали.
Викторина
- Какая ошибка допущена в фрагменте кода Python ниже?
items = [0,1,2,3,4,5] print items[8] //комментарий: элементы здесь представляют собой массив с шестью элементами. Например, чтобы получить 4-й элемент, вы будете использовать [3]. Мы начинаем отсчет с 0.
- Какая ошибка допущена в фрагменте кода Python ниже?
input = Hippo' if input == 'Hippo': print 'Hello, Hippo'
Ответы на вопросы
- Ошибка выполнения: ошибка индекса вне диапазона.
2. Синтаксическая ошибка: Отсутствует стартовая кавычка в первой строке.
Добавлено 16 апреля 2021 в 20:18
В программном обеспечении распространены ошибки. Их легко сделать, а найти сложно. В этой главе мы рассмотрим темы, связанные с поиском и устранением ошибок в наших программах на C++, включая изучение того, как использовать интегрированный отладчик, который является частью нашей IDE.
Хотя инструменты и методы отладки не входят в стандарт C++, умение находить и устранять ошибки в программах, которые вы пишете, является чрезвычайно важной частью успешной работы программиста. Поэтому мы уделим немного времени рассмотрению этих тем, чтобы по мере усложнения программ, которые вы пишете, ваша способность диагностировать и устранять проблемы развивалась с той же скоростью.
Если у вас есть опыт отладки программ на другом компилируемом языке программирования, многое из этого будет вам знакомо.
Синтаксические и семантические ошибки
Программирование может быть сложной задачей, и C++ – довольно необычный язык. Сложите эти две вещи вместе и получите множество способов сделать ошибку. Ошибки обычно делятся на две категории: синтаксические ошибки и семантические ошибки (логические ошибки).
Синтаксическая ошибка возникает, когда вы пишете инструкцию, недопустимую в соответствии с грамматикой языка C++. Сюда входят такие ошибки, как отсутствие точек с запятой, использование необъявленных переменных, несоответствие круглых или фигурных скобок и т.д. Например, следующая программа содержит довольно много синтаксических ошибок:
#include <iostream>
int main()
{
std::cout < "Hi there"; << x; // недопустимый оператор (<), лишняя точка с запятой, необъявленная переменная (x)
return 0 // отсутствие точки с запятой в конце инструкции
}
К счастью, компилятор обычно перехватывает синтаксические ошибки и генерирует предупреждения или ошибки, поэтому вы легко обнаружите и устраните проблему. Затем просто снова попробуйте скомпилировать программу, пока не избавитесь от всех ошибок.
После того, как ваша программа скомпилировалась правильно, может быть непросто добиться от нее желаемого результата. Семантическая ошибка возникает, когда оператор синтаксически правильный, но не выполняет то, что задумал программист.
Иногда это приводит к сбою программы, например, в случае деления на ноль:
#include <iostream>
int main()
{
int a { 10 };
int b { 0 };
std::cout << a << " / " << b << " = " << a / b; // деление на 0 не определено
return 0;
}
Чаще всего они просто приводят к неправильному значению или поведению:
#include <iostream>
int main()
{
int x;
std::cout << x; // Использование неинициализированной переменной приводит к неопределенному результату
return 0;
}
или же
#include <iostream>
int add(int x, int y)
{
return x - y; // функция должна складывать, но это не так
}
int main()
{
std::cout << add(5, 3); // должен выдать 8, но выдаст 2
return 0;
}
или же
#include <iostream>
int main()
{
return 0; // функция завершается здесь
std::cout << "Hello, world!"; // поэтому это никогда не выполняется
}
Современные компиляторы стали лучше обнаруживать определенные типы распространенных семантических ошибок (например, использование неинициализированной переменной). Однако в большинстве случаев компилятор не сможет отловить большинство из этих типов проблем, потому что компилятор предназначен для обеспечения соблюдения грамматики, а не намерений.
В приведенных выше примерах ошибки довольно легко обнаружить. Но в большинстве нетривиальных программ, взглянув на код, семантические ошибки найти нелегко. Здесь могут пригодиться методы отладки.
Теги
C++ / CppDebugLearnCppДля начинающихОбучениеОтладкаПрограммирование
Синтаксическая ошибка (программирование)
-
В информатике, синтаксическая ошибка относится к ошибке в синтаксисе последовательности символов или токенов, которая записана на определенном языке программирования.В компилируемых языках программирования синтаксические ошибки выявляются строго во время компиляции. Программа не будет компилироваться, пока все синтаксические ошибки не будут исправлены. Для интерпретируемых языков программирования, однако, не все синтаксические ошибки могут быть обнаружены во время выполнения и они не обязательно могут быть синтаксическими, но и логическими; во многих программах такие ошибки не обнаруживаются никогда.
В 8-разрядных домашних компьютерах, которые использовали интерпретатор языка Бейсик в качестве основного пользовательского интерфейса, сообщение СИНТАКСИЧЕСКАЯ ОШИБКА было малопонятным, так как это была реакция на любой ввод пользователя, который интерпретатор не мог разобрать.
Синтаксическая ошибка может возникать при некорректном вводе уравнения в калькулятор. Это может быть вызвано, например, путём открытия скобок без их закрытия, или, реже, вводом нескольких десятичных разделителей подряд.
Компилятор ставит флаг в строке, где совершена синтаксическая ошибка.
В Java синтаксически правильная постановка:
System.out.println(«Hello World»);А эта нет:
System.out.println(Hello World);В C++ синтаксически правильная постановка:
std::cout<<«Hello, World»;А эта нет:
std::cout<
Источник: Википедия
Связанные понятия
Синтаксис языка программирования — набор правил, описывающий комбинации символов алфавита, считающиеся правильно структурированной программой (документом) или её фрагментом. Синтаксису языка противопоставляется его семантика. Синтаксис языка описывает «чистый» язык, в то же время семантика приписывает значения (действия) различным синтаксическим конструкциям.
Псевдоко́д — компактный (зачастую неформальный) язык описания алгоритмов, использующий ключевые слова императивных языков программирования, но опускающий несущественные подробности и специфический синтаксис. Псевдокод обычно опускает детали, несущественные для понимания алгоритма человеком. Такими несущественными деталями могут быть описания переменных, системно-зависимый код и подпрограммы. Главная цель использования псевдокода — обеспечить понимание алгоритма человеком, сделать описание более воспринимаемым…
Синтаксический сахар (англ. syntactic sugar) в языке программирования — это синтаксические возможности, применение которых не влияет на поведение программы, но делает использование языка более удобным для человека.
Синтакси́ческий ана́лиз (или разбор, жарг. па́рсинг ← англ. parsing) в лингвистике и информатике — процесс сопоставления линейной последовательности лексем (слов, токенов) естественного или формального языка с его формальной грамматикой. Результатом обычно является дерево разбора (синтаксическое дерево). Обычно применяется совместно с лексическим анализом.
Упоминания в литературе
Как бы внимательно вы ни набирали текст, все равно возникают ошибки. При проверке работы грамматические ошибки не способствуют ее высокой оценке. В результате применения инструментов проверки правописания в редакторе Word можно будет избежать опечаток, а также многих синтаксических ошибок, которые часто возникают, если работать с текстом непосредственно в электронном виде. Правильные настройки проверки правописания и пунктуации приведут к тому, что слова, которые были набраны с ошибками, будут подчеркнуты красной волнистой линией, предложения с пунктуационными ошибками – зеленой волнистой линией.
Как бы внимательно вы ни набирали текст, все равно возникают ошибки. При проверке работы ошибки не способствуют ее высокой оценке. При помощи инструментов проверки правописания в редакторе Word можно будет избежать опечаток, а также многих синтаксических ошибок, которые часто возникают, если работать с текстом непосредственно в электронном виде. Правильные настройки проверки правописания и пунктуации приведут к тому, что слова с ошибками будут подчеркнуты красной волнистой линией, предложения с пунктуационными ошибками – зеленой волнистой линией.
Проверку синтаксиса HTML-документов невозможно выполнить с помощью обычных браузеров, так как они предназначены только для просмотра HTML-страниц. Если в документе имеются синтаксические ошибки, браузер пытается, игнорируя их, каким-либо образом показать страницу на экране. Однако решается такая задача каждый раз по-новому – в зависимости от типа браузера и даже от его версии. Если ошибок на странице слишком много, она может быть не отображена в окне браузера или отображена лишь частично. Программные и сетевые средства проверки HTML-документов позволяют предупредить такое поведение браузеров, выявляя допущенные при разработке страниц ошибки. Отметим, что сделать это довольно просто. Выявив ошибки до размещения HTML-документов в Internet, вы заметите, что страницы будут загружаться быстрее, а проблем станет значительно меньше.
Связанные понятия (продолжение)
Многопроходный компилятор (англ. Multi-pass compiler) — тип компилятора, который обрабатывает исходный код или абстрактное синтаксическое дерево программы несколько раз (в отличие от однопроходного компилятора, который проходит программу только один раз). Между проходами генерируется промежуточный код, который принимается следующим проходом в качестве входа. Таким образом, многопроходный компилятор обрабатывает код по частям, проход за проходом, а последний проход выдает финальный результат программы…
Конкатенативный язык программирования — это язык программирования, основанный на том, что конкатенация двух фрагментов кода выражает их композицию. В таком языке широко используется неявное указание аргументов функций (см. бесточечное программирование), новые функции определяются как композиция функций, а вместо аппликации применяется конкатенация. Этому подходу противопоставляется аппликативное программирование.
Эта статья о логической ошибке в программировании. Об ошибках, связанных с нарушением логической правильности рассуждений, см. Логическая ошибка.В программировании логической ошибкой называется баг, который приводит к некорректной работе программы, но не к краху программы.
Подробнее: Логическая ошибка (программирование)
Компилятор компиляторов — программа, воспринимающая синтаксическое или семантическое описание языка программирования и генерирующая компилятор для этого языка.
Интерпретируемый язык программирования — язык программирования, исходный код на котором выполняется методом интерпретации. Классифицируя языки программирования по способу исполнения, к группе интерпретируемых относят языки, в которых операторы программы друг за другом отдельно транслируются и сразу выполняются (интерпретируются) с помощью специальной программы-интерпретатора (что противопоставляется компилируемым языкам, в которых все операторы программы заранее оттранслированы в объектный код…
Язы́к ассе́мблера (англ. assembly language) — машинно-ориентированный язык программирования низкого уровня. Его команды прямо соответствуют отдельным командам машины или их последовательностям, также он может предоставлять дополнительные возможности облегчения программирования, такие как макрокоманды, выражения, средства обеспечения модульности программ. Может рассматриваться как автокод (см. ниже), расширенный конструкциями языков программирования высокого уровня. Является существенно платформо-зависимым…
В информатике лексический анализ («токенизация», от англ. tokenizing) — процесс аналитического разбора входной последовательности символов на распознанные группы — лексемы, с целью получения на выходе идентифицированных последовательностей, называемых «токенами» (подобно группировке букв в словах). В простых случаях понятия «лексема» и «токен» идентичны, но более сложные токенизаторы дополнительно классифицируют лексемы по различным типам («идентификатор, оператор», «часть речи» и т. п.). Лексический…
Количество строк кода (англ. Source Lines of Code — SLOC) — это метрика программного обеспечения, используемая для измерения его объёма с помощью подсчёта количества строк в тексте исходного кода. Как правило, этот показатель используется для прогноза трудозатрат на разработку конкретной программы на конкретном языке программирования, либо для оценки производительности труда уже после того, как программа написана.
Интерпретатор (англ. interpreter ıntə:’prıtə, от лат. interpretator — толкователь) — программа (разновидность транслятора), выполняющая интерпретацию.
Интерпретатор (англ. Interpreter) — поведенческий шаблон проектирования, решающий часто встречающуюся, но подверженную изменениям, задачу. Также известен как Little (Small) Language…
Трансля́тор — программа или техническое средство, выполняющее трансляцию программы.
Компилируемый язык программирования — язык программирования, исходный код которого преобразуется компилятором в машинный код и записывается в файл с особым заголовком и/или расширением для последующей идентификации этого файла, как исполняемого операционной системой (в отличие от интерпретируемых языков программирования, чьи программы выполняются программой-интерпретатором).
Стековый язык программирования (англ. stack-oriented programming language) — это язык программирования, в котором для передачи параметров используется машинная модель стека. Этому описанию соответствует несколько языков, в первую очередь Forth и PostScript, а также многие ассемблерные языки (использующие эту модель на низком уровне — Java, C#). При использовании стека в качестве основного канала передачи параметров между словами элементы языка естественным образом образуют фразы (последовательное…
Си (англ. C) — компилируемый статически типизированный язык программирования общего назначения, разработанный в 1969—1973 годах сотрудником Bell Labs Деннисом Ритчи как развитие языка Би. Первоначально был разработан для реализации операционной системы UNIX, но впоследствии был перенесён на множество других платформ. Согласно дизайну языка, его конструкции близко сопоставляются типичным машинным инструкциям, благодаря чему он нашёл применение в проектах, для которых был свойственен язык ассемблера…
Неопределённое поведение (англ. undefined behaviour, в ряде источников непредсказуемое поведение) — свойство некоторых языков программирования (наиболее заметно в Си), программных библиотек и аппаратного обеспечения в определённых маргинальных ситуациях выдавать результат, зависящий от реализации компилятора (библиотеки, микросхемы) и случайных факторов наподобие состояния памяти или сработавшего прерывания. Другими словами, спецификация не определяет поведение языка (библиотеки, микросхемы) в любых…
Правило одного определения (One Definition Rule, ODR) — один из основных принципов языка программирования C++. Назначение ODR состоит в том, чтобы в программе не могло появиться два или более конфликтующих между собой определения одной и той же сущности (типа данных, переменной, функции, объекта, шаблона). Если это правило соблюдено, программа ведёт себя так, как будто в ней существует только одно, общее определение любой сущности. Нарушение ODR, если оно не будет обнаружено при компиляции и сборке…
Гомоикони́чность (гомоиконность, англ. homoiconicity, англ. homoiconic, от греч. ὁμός — равный, одинаковый + ср.-греч. εἰκόνα — «о́браз», «изображение») — свойство некоторых языков программирования, в которых структура программы похожа на его синтаксис, и поэтому внутреннее представление программы можно определить прочитав текстовую разметку. Если язык гомоиконичен, это означает, что текст программы имеет такую же структуру, как её абстрактное синтаксическое дерево (то есть AST и синтаксис являются…
В программировании, ассемблерной вставкой называют возможность компилятора встраивать низкоуровневый код, написанный на ассемблере, в программу, написанную на языке высокого уровня, например, Си или Ada. Использование ассемблерных вставок может преследовать следующие цели…
Подробнее: Ассемблерная вставка
Язык программирования Си поддерживает множество функций стандартных библиотек для файлового ввода и вывода. Эти функции составляют основу заголовочного файла стандартной библиотеки языка Си
.
Подробнее: Файловый ввод-вывод в языке Си
Транспайлер — тип компилятора, который использует исходный код программы, написанной на одном языке программирования, в качестве исходных данных и производит эквивалентный исходный код на другом языке программирования. Транспайлер переводит между языками программирования, которые работают примерно на одном и том же уровне абстракции, в то время как традиционный компилятор переводит с более высокого уровня языка программирования на язык более низкого уровня. Например, транспайлер может выполнить перевод…
Низкоуровневый язык программирования (язык программирования низкого уровня) — язык программирования, близкий к программированию непосредственно в машинных кодах используемого реального или виртуального (например, байт-код, Microsoft .NET) процессора. Для обозначения машинных команд обычно применяется мнемоническое обозначение. Это позволяет запоминать команды не в виде последовательности двоичных нулей и единиц, а в виде осмысленных сокращений слов человеческого языка (обычно английских).
Вариативный макрос — возможность препроцессором Си при помощи специального макроса объявлять поддержку различного числа аргументов.
Обфуска́ция (от лат. obfuscare — затенять, затемнять; и англ. obfuscate — делать неочевидным, запутанным, сбивать с толку) или запутывание кода — приведение исходного текста или исполняемого кода программы к виду, сохраняющему её функциональность, но затрудняющему анализ, понимание алгоритмов работы и модификацию при декомпиляции.
Каламбур типизации является прямым нарушением типобезопасности. Традиционно возможность построить каламбур типизации связывается со слабой типизацией, но и некоторые сильно типизированные языки или их реализации предоставляют такие возможности (как правило, используя в связанных с ними идентификаторах слова unsafe или unchecked). Сторонники типобезопасности утверждают, что «необходимость» каламбуров типизации является мифом.
Код операции, операционный код, опкод — часть машинного языка, называемая инструкцией и определяющая операцию, которая должна быть выполнена.
Абстрактное синтаксическое дерево (АСД) — в информатике конечное помеченное ориентированное дерево, в котором внутренние вершины сопоставлены (помечены) с операторами языка программирования, а листья — с соответствующими операндами. Таким образом, листья являются пустыми операторами и представляют только переменные и константы.
Коммента́рии — пояснения к исходному тексту программы, находящиеся непосредственно внутри комментируемого кода. Синтаксис комментариев определяется языком программирования. С точки зрения компилятора или интерпретатора, комментарии — часть текста программы, не влияющая на её семантику. Комментарии не оказывают никакого влияния на результат компиляции программы или её интерпретацию. Помимо исходных текстов программ, комментарии также применяются в языках разметки и языках описания.
Расширенная форма Бэкуса — Наура (расширенная Бэкус — Наурова форма (РБНФ)) (англ. Extended Backus–Naur Form (EBNF)) — формальная система определения синтаксиса, в которой одни синтаксические категории последовательно определяются через другие. Используется для описания контекстно-свободных формальных грамматик. Предложена Никлаусом Виртом. Является расширенной переработкой форм Бэкуса — Наура, отличается от БНФ более «ёмкими» конструкциями, позволяющими при той же выразительной способности упростить…
Сема́нтика в программировании — дисциплина, изучающая формализации значений конструкций языков программирования посредством построения их формальных математических моделей. В качестве инструментов построения таких моделей могут использоваться различные средства, например, математическая логика, λ-исчисление, теория множеств, теория категорий, теория моделей, универсальная алгебра. Формализация семантики языка программирования может использоваться как для описания языка, определения свойств языка…
Пара́метр в программировании — принятый функцией аргумент. Термин «аргумент» подразумевает, что конкретно и какой конкретной функции было передано, а параметр — в каком качестве функция применила это принятое. То есть вызывающий код передает аргумент в параметр, который определен в члене спецификации функции.
Нисходящий синтаксический анализ (англ. top-down parsing) — это один из методов определения принадлежности входной строки к некоторому формальному языку, описанному LL(k) контекстно-свободной грамматикой. Это класс алгоритмов грамматического анализа, где правила формальной грамматики раскрываются, начиная со стартового символа, до получения требуемой последовательности токенов.
Макропроце́ссор (также макрогенера́тор) — программа, выполняющая преобразование входного текста в выходной при помощи задаваемых ей правил замены последовательностей символов, называемых правилами макроподстановки.
Шебанг (англ. shebang, sha-bang, hashbang, pound-bang, or hash-pling) — в программировании последовательность из двух символов: решётки и восклицательного знака («#!») в начале файла скрипта.
Дизассе́мблер (от англ. disassembler ) — транслятор, преобразующий машинный код, объектный файл или библиотечные модули в текст программы на языке ассемблера.
Пролог (англ. Prolog) — язык и система логического программирования, основанные на языке предикатов математической логики дизъюнктов Хорна, представляющей собой подмножество логики предикатов первого порядка.
Программи́рование ме́тодом копи́рования-вста́вки, C&P-программирование или копипаста в программировании — процесс создания программного кода с часто повторяющимися частями, произведёнными операциями копировать-вставить (англ. copy-paste). Обычно этот термин используется в уничижительном понимании для обозначения недостаточных навыков компьютерного программирования или отсутствия выразительной среды разработки, в которой, как правило, можно использовать подключаемые библиотеки.
Грамотное программирование (ГП; англ. Literate Programming) — концепция, методология программирования и документирования, в которой программа состоит из прозы на естественном языке вперемежку с макроподстановками и кодом на языках программирования. Термин и саму концепцию предложил Дональд Кнут в 1981 году при разработке системы компьютерной вёрстки TeX.
Вариативный шаблон или шаблон с переменным числом аргументов в программировании — шаблон с заранее неизвестным числом аргументов, которые формируют один или несколько так называемых пакетов параметров.
Перебор по словарю (англ. dictionary attack) — атака на систему защиты, использующая метод полного перебора (англ. brute-force) предполагаемых паролей, используемых для аутентификации, осуществляемого путём последовательного пересмотра всех слов (паролей в чистом виде или их зашифрованных образов) определённого вида и длины из словаря с целью последующего взлома системы и получения доступа к секретной информации.
Стандартная библиотека языка программирования — набор модулей, классов, объектов, констант, глобальных переменных, шаблонов, макросов, функций и процедур, доступных для вызова из любой программы, написанной на этом языке и присутствующих во всех реализациях языка.
Спецификация (стандарт, определение) языка программирования — это предмет документации, который определяет язык программирования, чтобы пользователи и разработчики языка могли согласовывать, что означают программы на данном языке. Спецификации обычно являются подробными и формальными и в основном используются разработчиками языка, в то время как пользователи обращаются к ним в случае двусмысленности: например, спецификация языка C++ часто цитируется пользователями из-за сложности. Сопутствующая документация…
Метод Даффа (англ. Duff’s device) в программировании — это оптимизированная реализация последовательного копирования, использующая ту же технику, что применяется для размотки циклов. Первое описание сделано в ноябре 1983 года Томом Даффом (англ. Tom Duff), который в то время работал на Lucasfilm. Пожалуй, это самое необычное использование того факта, что в языке Си инструкции внутри блока switch выполняются «насквозь» через все метки case.
Польская нотация (запись), также известна как префиксная нотация (запись), это форма записи логических, арифметических и алгебраических выражений. Характерная черта такой записи — оператор располагается слева от операндов. Если оператор имеет фиксированную арность, то в такой записи будут отсутствовать круглые скобки и она может быть интерпретирована без неоднозначности. Польский логик Ян Лукасевич изобрел эту запись примерно в 1920, чтобы упростить пропозициональную логику.
Обра́тная по́льская запись (англ. Reverse Polish notation, RPN) — форма записи математических и логических выражений, в которой операнды расположены перед знаками операций. Также именуется как обратная польская запись, обратная бесскобочная запись, постфиксная нотация, бесскобочная символика Лукасевича, польская инверсная запись, ПОЛИЗ.
MATLAB Programs
Stormy Attaway, in MATLAB (Fifth Edition), 2019
6.5.1 Types of Errors
There are several different kinds of errors that can occur in a program, which fall into the categories of syntax errors, runtime errors, and logical errors.
Syntax errors are mistakes in using the language. Examples of syntax errors are missing a comma or a quotation mark, or misspelling a word. MATLAB itself will flag syntax errors and give an error message. For example, the following character vector is missing the end quote:
-
>> mystr = ‘how are you;
-
mystr = ‘how are you;
-
↑
-
Error: Character vector is not terminated properly.
If this type of error is typed in a script or function using the Editor, the Editor will flag it.
Another common mistake is to spell a variable name incorrectly; MATLAB will also catch this error. Newer versions of MATLAB will typically be able to correct this for you, as in the following:
-
>> value = 5;
-
>> newvalue = valu + 3;
-
Unrecognized function or variable ‘valu’.
-
Did you mean:
-
>> newvalue = value + 3;
Runtime, or execution-time, errors are found when a script or function is executing. With most languages, an example of a runtime error would be attempting to divide by zero. However, in MATLAB, this will return the constant Inf. Another example would be attempting to refer to an element in an array that does not exist.
-
runtimeEx.m
% This script shows an execution-time error
vec = 3:5;
for i = 1:4
disp(vec(i))
end
The previous script initializes a vector with three elements, but then attempts to refer to a fourth. Running it prints the three elements in the vector, and then an error message is generated when it attempts to refer to the fourth element.
Note
MATLAB gives an explanation of the error, and it gives the line number in the script in which the error occurred.
-
>> runtimeEx
-
3
-
4
-
5
-
Index exceeds array bounds.
-
Error in runtimeEx (line 6)
-
disp(vec(i))
Logical errors are more difficult to locate because they do not result in any error message. A logical error is a mistake in reasoning by the programmer, but it is not a mistake in the programming language. An example of a logical error would be dividing by 2.54 instead of multiplying to convert inches to centimeters. The results printed or returned would be incorrect, but this might not be obvious.
All programs should be robust and should, wherever possible, anticipate potential errors and guard against them. For example, whenever there is input into a program, the program should error-check and make sure that the input is in the correct range of values. Also, before dividing, any denominator should be checked to make sure that it is not zero.
Despite the best precautions, there are bound to be errors in programs.
Read full chapter
URL:
https://www.sciencedirect.com/science/article/pii/B9780128154793000064
Errors and Pitfalls
Brian H. Hahn, Daniel T. Valentine, in Essential MATLAB for Engineers and Scientists (Sixth Edition), 2017
11.1 Syntax errors
Syntax errors are typing errors in MATLAB statements (e.g., plog instead of plot). They are the most frequent type of error, and are fatal: MATLAB stops execution and displays an error message. As MATLAB evolves from one version to the next, error messages improve. Try the following examples to examine the latest error messages:
-
2*(1+3
disp([‘the answer is ‘ num2str(2)]
There are many possible syntax errors—you will probably have discovered a few yourself. With experience you will become more adept at spotting your mistakes.
The function lasterr returns the last error message generated.
11.1.1 Incompatible vector sizes
Consider the following statements:
-
x = 0:pi/20:3*pi;
y = sin(x);
x = 0:pi/40:3*pi;
plot(x,y)
You’ll get the error message
-
Error using ==> plot
Vectors must be the same lengths.
because you forgot to recalculate y after reducing the x increments. whos reveals the problem:
-
x 1×121 …
y 1×61 …
11.1.2 Name hiding
Recall that a workspace variable ‘hides’ a script or function of the same name. The only way to access such a script or function is to clear the offending variable from the workspace.
Furthermore, a MATLAB function hides a script of the same name, e.g., create a script called why.m that displays some junk message, and then type why at the command line.
If you are worried that a variable or script which you are thinking of creating, say blob, may be a MATLAB function, try help blob first.
Read full chapter
URL:
https://www.sciencedirect.com/science/article/pii/B9780081008775000128
PIC16 C Applications and Systems
Martin P. Bates, in Programming 8-bit PIC Microcontrollers in C, 2008
Application Debugging and Testing
The application program is tested and debugged in several stages. The main types of errors and the tools for detecting them are outlined next.
Syntax errors are mistakes in the source code, such as spelling and punctuation errors, incorrect labels, and so on, which cause an error message to be generated by the compiler. These appear in a separate error window, with the error type and line number indicated so that it can be corrected in the edit window.
When the program is successfully compiled, it can be tested for correct function in the target hardware so that any logical errors can be identified. However, it is preferable to test it in software simulation mode first, as it is quicker and easier to identify errors in the program sequence. Two simulation methods are available here, MPSIM and Proteus VSM.
MPSIM is the simulator provided with MPLAB. It allows the program source code to be run, stopped and stepped, and breakpoints set. The registers and source variables may be inspected at each step. When debugging C programs, breakpoints are the most useful, while stepping is more useful in assembly language. The program sequence and variable values are monitored and errors identified when the results obtained do not agree with those expected. Error information is provided principally in tabular form.
By comparison, the Proteus VSM debugging environment has significant advantages. The animated schematic gives a much more immediate indication of the overall program function. Interactive input and output devices operate in real or simulated time. The source code and breakpoints can be displayed.
In addition, if the VSM viewer is run from within MPLAB, the progress of the program can also be monitored simultaneously in MPSIM. Therefore, the more detailed debugging tools in MPSIM can be run alongside VSM and the most appropriate selected for any debugging task. The simulated hardware design is thus tested in conjunction with the MCU firmware (cosimulation), allowing circuit modifications at an early stage and hardware-software interaction to be studied on screen. When the program is eventually downloaded to the real hardware, it is now far more likely that it will work the first time.
The VSM Viewer is invoked from the debug tools menu in MPLAB, and the program is attached and tested. However, if circuit modifications are needed, VSM must be opened separately to run alongside MPLAB, so that the full set of ISIS schematic edit tools and component models are available. VSM still accesses the same COF file, so both software and hardware changes can be tested. More details on interactive debugging are given in Appendices A, B, and CAppendix AAppendix BAppendix C.
Read full chapter
URL:
https://www.sciencedirect.com/science/article/pii/B9780750689601000055
Program development and testing
Andrew P. King, Paul Aljabar, in Matlab® Programming for Biomedical Engineers and Scientists, 2023
5.4 Debugging a function
The basics of the MATLAB debugger were described in Section 1.14. Here, we consider some of the types of errors that the debugger can be used to help identify and fix.
When writing a program or function that is non-trivial, the chances of it working perfectly the first time are quite low, even for a skilled MATLAB user. Debugging tools are there to help identify why a program does not work correctly or as expected.
When debugging, we need to work systematically, and run our program with various sets of test data to find errors, and correct them when we find them. If we work incrementally, as we did in Example 5.1 above, then the repeated nature of the testing allows errors to be caught earlier, which reduces the chance of later errors occurring or minimizes their severity.
There are three main types of error that a function or program can contain:
- ■
-
Syntax errors.
- ■
-
Run-time errors.
- ■
-
Logic errors.
The term “syntax” relates to the grammar of the programming language. Each language has a specific set of rules for how commands can be written in that language, and these rules are collectively known as the language’s syntax.
When a line in a MATLAB function contains a syntax error, the built-in Code Analyzer (see Section 1.14.2) should highlight in red the corresponding line of code. Hovering the mouse over the line should result in a message being displayed to the user that describes what MATLAB has decided is the particular syntax error in the line. In other words, MATLAB can detect an error with the script or function before it is run.
Example 5.2 A syntax error
If the code that follows is entered into a script, say my_script.m, using the editor, then the line containing the
statement should be highlighted in red to indicate a problem with the syntax.
O5.C, O5.D
This is because the syntax rules of MATLAB require a closing statement for each statement.
If we fail to notice this error, and attempt to run the script from the command window, we will get an error when MATLAB reaches the relevant part of the code, and a more dramatic message will be displayed:
>> my_script
In this case, clicking on the part of the error report with the line number will take us directly to the corresponding place in the script file so that we can figure out how to correct the error. In this case, adding an
statement after the call should be enough.
Activity 5.2
Type the code from the previous example into a script. Confirm that the code analyzer highlights the error. Fix the error and confirm that the highlighting disappears.
O5.C, O5.D
Example 5.3 Another syntax error
The code that follows contains a syntax error. The MATLAB code analyzer should highlight it in red. The code begins by generating a single random number between 1 and 10, and then it seeks to decide if the random number equals three or not, adjusting its output in each case.
O5.C
Activity 5.3
Type the code from the previous example into a script. Confirm that the code analyzer highlights the error. Fix the error, and confirm that the highlighting disappears.
O5.C, O5.D
The reason for this syntax error is that the = sign used in the
statement is an assignment operator and should not be used to test for equality. The correct symbol to use here is the comparison operator, which is in MATLAB, i.e., two equals signs, not one (see Example 2.2). This is also the case in quite a few other languages, and it is very common to mix up these operators.
Example 5.4 A run-time error
Some errors cannot be determined by MATLAB while we are editing the code and can only be found when the code is run. This is because a specific sequence of commands needs to be run to bring about the conditions for the error. Consider the code that follows in a script called someScript.m. It aims to generate three sequences of numbers, and assign them to array variables
,
, and
, then it tries to find the sums of each of these sequences (line numbers have been shown here to help the description).
O5.C
In this case, there are no syntax errors, but running the script at the command window leads to a run-time error as follows:
>> someScript
55
110
Activity 5.4
Type the code from the previous example into a script. Run the script from the command window to reproduce the error.
O5.C
The problem with the code in Example 5.4 is related to the choice of variable names. The sums of the arrays
and have been given sensible names ( and ). The sum of the array variable has been stored in a variable called . This is a problem, because the local script has used the name of a built-in MATLAB function as a name for a local variable.
Using the name of a built-in function for a variable that we use locally is called shadowing. We can check if a name is already used by MATLAB or in the workspace using the
command. In this case, we can trivially check
The return value of 5 indicates that the name
exists and is attached to a function (as opposed, say, to a file). Type
at the command window for more details. We can check a more sensible name as follows:
The value of 0 returned indicates that the name
is not being used, and we can safely use it in our code.
Returning to the code in Example 5.4, when the execution reaches line 13, the programmer’s intention was to use the built-in MATLAB function called
, but this now refers to a local variable that contains a single number. The use of the brackets in line 13 is now interpreted as a request for an element or elements taken from an array called . The elements requested are at the indices specified by another variable, . That is, the indices requested start at 3 and go up to 30 in steps of 3. The problem however, is that the variable called is just a single scalar value, i.e., it as an array of length one. It is not possible to obtain an element from it at index 3 or higher. This is the reason for the code crashing at run-time.
Apart from giving an example of a run-time error, this example shows why it is very important not to give names to variables that are already used to refer to built-in functions. MATLAB will not complain when you do this, so be careful!
Example 5.5 A run-time error
Here is some more code that gives a run-time error:
In this case, when the code is run, the following output is given:
O5.C
>> someScript
Activity 5.5
Type the code from Example 5.5 into a script. Run the script from the command window to reproduce the error. Can you see why this error occurs?
O5.C
The script in Example 5.5 calls
at the start. This means that even if the workspace contained a global variable, called , before calling the script, then it would have been cleared and would no longer be available. Hence, the request to calculate will always fail, as there is no variable called . This would need to be defined before the point where the function is called to make the code work (but after the ).
Activity 5.6
Fix the code from Example 5.5 by introducing an appropriate local variable and assigning a value to it. Run the script to check it works.
O5.D
Logic errors can be some of the hardest to find, and identifying them often requires using the debugger to carry out careful line-by-line inspection of the code as it is running. This is because no error is reported by MATLAB, and the code analyzer does not highlight anything either. However, when the code is run, an incorrect output or behavior results, and MATLAB will generally not provide a clue as to why this happened.
Example 5.6 A logic error
In this example, the code that follows attempts to show that sinθ=12 when θ=30∘.
O5.C
When we actually run the code, we get the following output with no error reported:
>> someScript
These should be equal: -0.99 and 0.50
This shows two numbers that are clearly not equal, so what has gone wrong?
Activity 5.7
Type the code from Example 5.6 into a script, and run it to reproduce the same output.
O5.C, O5.D
Can you see why the output is incorrect? Place a breakpoint in the code, and run the script again. Check the values of the variables to see if there is a clue.
To track down the reason for the behavior in Example 5.6, we need to carry out some further investigation. In the command window, we can look at the help on the
function, which we might suspect of being broken:
>> help sin
sin Sine of argument in radians.
sin(X) is the sine of the elements of X.
This shows that the built-in MATLAB trigonometric function
expects its argument in radians, so that is what we should give it. The function when used above gave the correct result for the sine of 30 radians, not degrees. That is, there was a mismatch between our expectation of the function and what it was designed to do. This error is readily fixed in a number of ways, for example, by replacing with where we have made use of the built-in MATLAB constant .
Activity 5.8
Fix the code in Example 5.6, and confirm that sin30∘ does indeed equal 1/2!
O5.C, O5.D
Because no error message is given, logic errors can be difficult to detect. Sometimes we might not even notice that the program or function is behaving wrongly. Even when we suspect a logic error exists, by noticing something incorrect in the program’s behavior, it can still be difficult to pinpoint where the error is. There is no error message helpfully pointing us to a specific line in the code, as in the case of syntax errors. Worse still, the error will not necessarily be restricted to just one line; it can arise from the way different sections of code interact.
The error in the previous example was due to the intention to use degrees where radians should have been used instead. This is only noticed by observing the actual values of the output and seeing that the numeric value is not correct; in other words, by careful inspection of the output.
One way to identify logic errors in a function is to use the MATLAB interactive debugger to step through the function line-by-line, perhaps with a calculator or pencil and paper in hand (see Section 1.14).
Another way is to take each line of the code and copy-and-paste it into the command window, executing each line at a time, and assessing its result to see if it is right.
Putting lots of statements in the code that display output and the values of the most relevant variables using the
or commands can also help. Values of variables can be displayed before and after critical sections of the code, e.g., calls to other functions or important control sections, such as clauses and or loops. Once we have checked and are satisfied that the function or program is working correctly, the extra output statements should be removed.
Read full chapter
URL:
https://www.sciencedirect.com/science/article/pii/B9780323857734000149
PIC Program Development
Martin Bates, in PIC Microcontrollers (Third Edition), 2011
4.6.1 Syntax Errors
If there are any syntax errors in the source code, such as spelling, layout, punctuation or failure to define labels properly, error messages will be generated by the assembler. These will be displayed in a separate window, indicating the type of error and line number. The messages and line numbers must be noted, or the error file, BIN4.ERR, printed out then the necessary changes made to the source code. The error is sometimes on a previous line to the one indicated, and sometimes a single error can generate more than one message. Warnings and information messages can usually be ignored, and can be disabled. There are more details about error messages in Chapter 9.
You may receive the following messages:
Warning[224] C:MPLABBOOKPRGSBIN4.ASM 65 : Use of this instruction is not recommended.
Message[305] C:MPLABBOOKPRGSBIN4.ASM 81 : Using default destination of 1 (file).
The first warning is caused by the special instruction TRIS, which is not part of the main instruction set. It is a simple way of initializing the port, and there is an alternative method using register bank selection, which is preferred in real applications. This will be introduced later.
The message about the ‘default destination’ is caused by the simplified syntax used in these programs, where the file register is not explicitly specified as the destination in instructions where the result can be placed in either the file register or the working register. The assembler assumes that the file register is the destination by default, and we are taking advantage of this to simplify the source code.
When all errors have been eliminated and the program has been successfully assembled, the machine code can be inspected by selecting ‘View’, ‘Program Memory’. Note that the source code labels are not reproduced, as the program code has been ‘disassembled’ (recreated) from the machine code. That is, the hex file has been converted back to mnemonic form so that it can be checked against the original.
Read full chapter
URL:
https://www.sciencedirect.com/science/article/pii/B9780080969114100047
MATLAB® Debugging, Profiling, and Code Indentation
Munther Gdeisat, Francis Lilley, in Matlab by Example, 2013
Lesson 8.1 MATLAB® Debugging
Objectives
- •
-
To learn the differences between syntax errors and runtime errors.
- •
-
To learn how to debug MATLAB script files.
- •
-
To learn how to use the Breakpoint tool to debug MATLAB code.
- •
-
To learn how to run one line of a program using the Step tool.
Topics
- 8.1.1
-
Syntax and Runtime Errors
- 8.1.1.1
-
Syntax Errors
- 8.1.1.2
-
Runtime Errors
- 8.1.2
-
Debugging MATLAB® Code
- 8.1.2.1
-
Setting Up a Breakpoint
- 8.1.2.2
-
Stepping Through the Program
8.1.1 Syntax and Runtime Errors
There are two types of errors that appear in MATLAB expressions: syntax errors and runtime errors. Together, we generically refer to these errors as being bugs in the MATLAB code. The debugging process is the procedure of finding these bugs and fixing them.
8.1.1.1 Syntax Errors
Let us start with the first error type, which is the syntax error. These errors mainly occur as a result of the misspelling of variable or function names or from missing quotes or parentheses (or the accidental extraneous typing of an additional one of these). Examples of such errors are given below:
>>x=x*(1+2*x));%extraparenthesis>>x=1;x=x(x+1)%Themultiplicationsignismissing>>y=‘hello%missingquote>>z=1;disp(Z);%MATLABiscasesensitive,soZisnotthe%sameasz.
Note that you can type more than one MATLAB command in a single line, but these commands should be separated by a comma (,) or a semicolon (;).
When you type a MATLAB command in the Command Window, MATLAB checks for syntax errors before running the command. If the command passes the syntax error check, then MATLAB executes this command; otherwise, MATLAB displays a message reporting that there is a syntax error and that it should be fixed before attempting to run this command again. Also, MATLAB may give you some information that helps in identifying and fixing this error.
Suppose that you attempt to run a MATLAB script file that contains syntax errors. MATLAB does not run this file and responds by reporting that the file contains syntax errors. It rather helpfully provides you with the line number that contains the first syntax error that it has found in the file, and it also advises you about how to fix this error.
8.1.1.2 Runtime Errors
Runtime errors are found by MATLAB during the execution of a program, and they are generally more difficult to fix than simple syntax errors. The ability to fix runtime errors is something that improves with experience and is best learned by way of an example.
Let us try to write a MATLAB program that calculates the absolute values of a vector. The input vector in this example consists of the integer values from −10 to +10. Hence as a result of calculating the absolute values of this vector, all the positive input values from the range −10 to +10 should be unchanged (and zero will also be unchanged) and all negative input values will have their negative signs removed, leaving just their magnitude, for example, the value −3 will become 3. that is, the input vector is
−10−9−8−7−6−5−4−3−2−1012345678910
which should produce an output vector as follows:
10987654321012345678910
Launch the MATLAB Editor. Type the code below into the Editor window. Save the script file with the name absolute.m.
It is advisable to start any MATLAB script file with the commands clear; clc;. These two respective commands delete any unwanted variables in the MATLAB memory and also clear the Command Window. The command close all closes all figures in MATLAB.
clear; clc; close all
x = −10:10;
for k = 0:length(x)
if (x(k) > 0)
x(k) = −x(k);
end
end
disp(x)
Run the program. MATLAB complains that there are errors in the code. MATLAB reports the error as follows:
??? Attempted to access x(0); index must be a positive integer or logical.
Error in ==> absolute at 4
if (x(k) > 0)
MATLAB starts indexing any vector with the index 1. This is unlike several other programming languages, such as C, which start the indexing process with index zero. So, we have identified this runtime mistake, which must be fixed by changing the index in the third line (beginning for k =) from the current value of 0 to a value of 1, as shown in the following code segment:
clear; clc;
x = -10:10;
for k = 1:length(x)
if (x(k) > 0)
x(k) = -x(k);
end
end
disp(x)
Fix the bug and run the program over again. MATLAB gives the results as shown in the following figure, which are not as expected. The numbers that are produced should all be positive, but they are not. So we need to fix this bug. and we will use MATLAB’s debugging capabilities to track down the location and exact nature of the bug.
8.1.2 Debugging MATLAB Code
8.1.2.1 Setting Up a Breakpoint
MATLAB has a feature that allows the user to control the execution of an M-file program. This feature helps in tracking down the bugs and fixing them. For example, you can introduce a Breakpoint in a program, and the execution of the code temporarily stops at this Breakpoint. Then you can check the values of the MATLAB variables at this point and try to figure out the cause of the bug.
To debug your program, go to the Editor window. Using the mouse, left-click in the space between the column of line numbers and the code itself (where there is a column of dashes “–”) and place the Breakpoint in the position pointed at by the arrow in the following diagram. A red circle then appears as shown. This can be toggled on and off by clicking again in the same place. If you practice toggling this here, make sure you leave the Breakpoint set to ON, with the red dot showing as in the following figure.
Go to the Menu→Debug→Run absolute.m.
Note that as a result of doing this, the MATLAB Command Prompt changes to
k>>
which informs you that MATLAB is now running in debug mode.
MATLAB starts executing the program and stops at line 1.
8.1.2.2 Stepping Through the Program
To direct MATLAB to run the command in line 1, click on the Step icon (pointed at by the arrow in the following figure).
MATLAB runs the first line and then proceeds to line 2.
An alternative way to step through the program is by pressing the F10 key on the keyboard. Press F10 to make MATLAB run line 2 of the code.
Move the mouse and place the cursor directly over the variable x. A yellow box pops up and tells you the values of x.
Alternatively, you can get the values of this vector variable by double-clicking on x in the Workspace window.
Press F10 to run line 3. Using the mouse, highlight the expression (x(k) > 0). Place the mouse cursor over the highlighted area and right-click. Choose Copy from the Context Menu.
In the Command Window, right-click the mouse and choose Paste. Then press Enter on the keyboard. MATLAB evaluates the expression and informs us that it has a value of 0. In this manner you can determine the value of any expression or variable.
The value of the first element in the variable x is −10. Press F10. The code steps to line 7. It should have entered the if statement and gone to line 5 to change the sign of the first element, but it did not. Instead it went to line 7. By noting this, we can discover that there is a programming error in the condition for the if statement. The greater than character “>” should be changed to the less than character “<”.
Fix this bug by changing the character “>” to “<”. Then go to the Menu→Debug→Exit Debug Mode. This terminates the debugger in MATLAB.
The bug is now fixed. Remove the Breakpoint. This can be carried out by using the mouse. Left-click in the space between the code and the line number 1 (pointed at by the arrow in the figure) to toggle the Breakpoint to off. The red dot disappears.
Run the code by clicking the Run icon. MATLAB executes the program and produces the correct output.
Read full chapter
URL:
https://www.sciencedirect.com/science/article/pii/B9780124052123000086
Errors, Good Programming Practices, and Debugging
Alexandre M. Bayen, Timmy Siauw, in An Introduction to MATLAB® Programming and Numerical Methods for Engineers, 2015
9.1 Error Types
There are three basic types of errors that programmers need to be concerned about: syntax errors, runtime errors, and logical errors. Syntax is the set of rules that govern a language. In written and spoken language, rules can be bent or broken to accommodate the speaker or writer. However, in a programming language the rules are completely rigid. A syntax error occurs when the programmer writes an instruction using incorrect syntax. For example, 1 = x is not legal in the MATLAB programming language because numbers cannot be assigned as variables. If the programmer tries to execute one of these instructions or any other syntactically incorrect statement, MATLAB will return an error to the programmer in the form of a red message with the line where the error occurred and the probable cause. This is commonly called throwing an error.
EXAMPLE:
Syntax error examples.
Syntax errors are usually easily detectable, easily found, and easily fixed. Runtime errors are much more difficult to find. Runtime errors are only detectable when a program is run. For example, concatenation is legal in MATLAB syntax, but if you try to concatenate arrays of incorrect dimensions, then MATLAB will not be able to carry out your instruction, and an error will be produced.
EXAMPLE:
Runtime error examples.
Most runtime errors are also easy to find because MATLAB will stop and tell you where the problem is. After programming a function, seasoned programmers will usually run the function several times, allowing the function to throw any errors so that they can fix them.
One of the most difficult kinds of runtime errors to find is called a logic error. A logic error does not throw an error, but is an error because the output you get is not the solution you expect. For example, consider the following erroneous implementation of the factorial function.
EXAMPLE:
Erroneous factorial function.
This function will not produce an error for any input that is valid for a correctly implemented factorial function. However, if you try using myBadFactorial at the command window, you will find that the answer is always 0 because out is initialized to 0 instead of 1. Therefore, the line out = 0 is a logic error. It does not produce an error by MATLAB, but it leads to an incorrect computation of factorial.
Although this kind of error seems unlikely to occur or at least as easy to find as other kinds of errors, when programs become longer and more complicated, they are very easy to generate and notoriously difficult to find. When logic errors occur, you have no choice but to meticulously comb through each line of your code until you find the problem. For these cases, it is important to know exactly how MATLAB will respond to every command you give and not make any assumptions. You can also use MATLAB’s debugger, which will be described in the last section of this chapter.
Read full chapter
URL:
https://www.sciencedirect.com/science/article/pii/B9780124202283000099
Electrical Engineering Technologies Mathematics for Electrical Engineering
Miguel Ángel José Prieto, … Juan Díaz, in Encyclopedia of Electrical and Electronic Power Engineering, 2023
CCS compiler
The process begins with the code implementation and the user’s program that properly configures the different blocks in the microcontroller and implements the desired algorithm (free of syntax errors, of course). There are several possibilities and tools to do this, using different programming languages, such as assembler, C, etc. For this initial task, the use of compilers and suites that allow an easy configuration of the selected device are encouraged. The C compiler from CCS, for instance, allows this. It contains a friendly interface that allows selecting the microcontroller and configuring its different blocks (Timers, A/D converter, etc.), after which it generates a template with the different program files: Header and C files. These files include the adequate sentences for the aforementioned tasks and the different program sections: the main block and the different interrupt service routines. This suite also allows the incorporation of an external debugger and programming tools. Fig. 10 shows some of the windows of this software package, in which a PCI16F877A is selected, and the PWM module is configured. As can be seen, the process is very simple, and the software output is a complete template in which the user only needs to fill the different predefined sections (interrupt service routines and main function) and verify that the code is free of errors.
Fig. 10. The user selects the different blocks and configure them.
To sum up, the wizard allows the device to be configured without writing any code, in such a way that the user can use these blocks without having a deep knowledge of the different configuration registers involved. As mentioned above, it is possible to upload the final code to the device by using an adequate hardware tool; however, since the microcontroller is not to operate alone, it is highly advisable to carry out a simulation with the hardware before doing so, in order to fix problems that may occur due to unexpected delays, etc. There are a wide variety of software suites that can accomplish the required simulations. This article will focus on Proteus Software (Proteus, 2022).
Read full chapter
URL:
https://www.sciencedirect.com/science/article/pii/B9780128212042000118
Design Automation of FPGAs
Peter Wilson, in Design Recipes for FPGAs (Second Edition), 2016
5.2.1 Simulators
Simulators are a key aspect of the design of FPGAs. They are how we understand the behavior of our designs, check the results are correct, identify syntax errors and even check postsynthesis functionality to ensure that the designs will operate as designed when deployed in a real device. There are a number of simulators available (all the main design automation vendors provide software) and the FPGA vendors also will supply a simulator usually wrapped up with the design flow software for their own devices. This altruistic approach is very useful in learning to use FPGAs as, while they are clearly going to be targeted with libraries at the vendor’s devices, the basic simulators tend to be fully featured enough to be very useful for most circumstances. One of the most prevalent simulators is the ModelSim® from Mentor Graphics, which is generally wrapped in with the Altera and Xilinx design software kits and is very commonly used in universities for teaching purposes. It is a general-purpose simulator which can cater for VHDL, Verilog, SystemVerilog and a mixture of all these languages in a general simulation framework. A screen shot of ModelSim in use is shown in Figure 5.1 and it shows the compilation window and a waveform viewer. There are other ways to use the tool including a transcript window and variable lists rather than waveforms—useful in seeing transitions or events.
Figure 5.1. ModelSim simulator user interface.
Read full chapter
URL:
https://www.sciencedirect.com/science/article/pii/B9780080971292000052
Program Debugging
Martin Bates, in PIC Microcontrollers (Third Edition), 2011
Publisher Summary
This chapter describes program debugging which involves the removal of errors from PIC programs. The rules in programming language are very strict, because the source code must be converted into machine code without any ambiguity. Syntax errors are mistakes in the source code, such as misspelling of an instruction mnemonic or failure to declare a label before using it in the program. This errors are detected by the MPLAB assembler (MPASM), resulting in error messages being generated and displayed in a separate window. The source code is color coded in recent versions of MPLAB to highlight correct syntax and errors. If a syntax error is detected, the correct use of the instruction set and assembler directives must be checked against the programming rules. Once a program has been assembled without any syntax errors, it may still not function correctly as logical errors may be present which prevent correct operation. The software simulator (MPSIM) can be used to detect and correct these errors prior to downloading to the chip.
Read full chapter
URL:
https://www.sciencedirect.com/science/article/pii/B9780080969114100096
Привет, Вы узнаете про виды ошибок программного обеспечения, Разберем основные ее виды и особенности использования. Еще будет много подробных примеров и описаний. Для того чтобы лучше понимать что такое
виды ошибок программного обеспечения, принципы отладки , настоятельно рекомендую прочитать все из категории Качество и тестирование программного обеспечения. Quality Assurance..
1. Отладка программы
Отладка, как мы уже говорили, бывает двух видов:
Синтаксическая отладка. Синтаксические ошибки выявляет компилятор, поэтому исправлять их достаточно легко.
Семантическая (смысловая) отладка. Ее время наступает тогда, когда синтаксических ошибок не осталось, но результаты программа выдает неверные. Здесь компилятор сам ничего выявить не сможет, хотя в среде программирования обычно существуют вспомогательные средства отладки, о которых мы еще поговорим.
Отладка — это процесс локализации и исправления ошибок в программе.
Как бы тщательно мы ни писали, отладка почти всегда занимает больше времени, чем программирование.
2. Локализация ошибок
Локализация — это нахождение места ошибки в программе.
В процессе поиска ошибки мы обычно выполняем одни и те же действия:
- прогоняем программу и получаем результаты;
- сверяем результаты с эталонными и анализируем несоответствие;
- выявляем наличие ошибки, выдвигаем гипотезу о ее характере и месте в программе;
- проверяем текст программы, исправляем ошибку, если мы нашли ее правильно.
Способы обнаружения ошибки:
- Аналитический — имея достаточное представление о структуре программы, просматриваем ее текст вручную, без прогона.
- Экспериментальный — прогоняем программу, используя отладочную печать и средства трассировки, и анализируем результаты ее работы.
Оба способа по-своему удобны и обычно используются совместно.
3.
принципы отладки
Принципы локализации ошибок:
- Большинство ошибок обнаруживается вообще без запуска программы — просто внимательным просматриванием текста.
- Если отладка зашла в тупик и обнаружить ошибку не удается, лучше отложить программу. Когда глаз «замылен», эффективность работы упорно стремится к нулю.
- Чрезвычайно удобные вспомогательные средства — это отладочные механизмы среды разработки: трассировка, промежуточный контроль значений. Можно использовать даже дамп памяти, но такие радикальные действия нужны крайне редко.
- Экспериментирования типа «а что будет, если изменить плюс на минус» — нужно избегать всеми силами. Обычно это не дает результатов, а только больше запутывает процесс отладки, да еще и добавляет новые ошибки.
Принципы исправления ошибок еще больше похожи на законы Мерфи:
- Там, где найдена одна ошибка, возможно, есть и другие.
- Вероятность, что ошибка найдена правильно, никогда не равна ста процентам.
- Наша задача — найти саму ошибку, а не ее симптом.
Это утверждение хочется пояснить. Если программа упорно выдает результат 0,1 вместо эталонного нуля, простым округлением вопрос не решить. Если результат получается отрицательным вместо эталонного положительного, бесполезно брать его по модулю — мы получим вместо решения задачи ерунду с подгонкой.
Исправляя одну ошибку, очень легко внести в программу еще парочку. «Наведенные» ошибки — настоящий бич отладки.
Исправление ошибок зачастую вынуждает нас возвращаться на этап составления программы. Это неприятно, но порой неизбежно.
4. Методы отладки
Силовые методы
- — Использование дампа (распечатки) памяти.Это интересно с познавательной точки зрения: можно досконально разобраться в машинных процессах. Иногда такой подход даже необходим — например, когда речь идет о выделении и высвобождении памяти под динамические переменные с использованием недокументированных возможностей языка. Однако, в большинстве случаев мы получаем огромное количество низкоуровневой информации, разбираться с которой — не пожелаешь и врагу, а результативность поиска — исчезающе низка.
- — Использование отладочной печати в тексте программы — произвольно и в большом количестве.Получать информацию о выполнении каждого оператора тоже небезынтересно. Но здесь мы снова сталкиваемся со слишком большими объемами информации. Кроме того, мы здорово захламляем программу добавочными операторами, получая малочитабельный текст, да еще рискуем внести десяток новых ошибок.
- — Использование автоматических средств отладки — трассировки с отслеживанием промежуточных значений переменых.Пожалуй, это самый распространенный способ отладки. Не нужно только забывать, что это только один из способов, и применять всегда и везде только его — часто невыгодно.
Сложности возникают, когда приходится отслеживать слишком большие структуры данных или огромное их число. Еще проблематичнее трассировать проект, где выполнение каждой подпрограммы приводит к вызову пары десятков других. Но для небольших программ трассировки вполне достаточно.
С точки зрения «правильного» программирования силовые методы плохи тем, что не поощряют анализ задачи.
Суммируя свойства силовых методов, получаем практические советы:
— использовать трассировку и отслеживание значений переменных для небольших проектов, отдельных подпрограмм;
— использовать отладочную печать в небольших количества и «по делу»;
— оставить дамп памяти на самый крайний случай.
Метод индукции — анализ программы от частного к общему.
Просматриваем симптомы ошибки и определяем данные, которые имеют к ней хоть какое-то отношение. Затем, используя тесты, исключаем маловероятные гипотезы, пока не остается одна, которую мы пытаемся уточнить и доказать.
Метод дедукции — от общего к частному.
Выдвигаем гипотезу, которая может объяснить ошибку, пусть и не полностью. Затем при помощи тестов эта гипотеза проверяется и доказывается.
Обратное движение по алгоритму.
Отладка начинается там, где впервые встретился неправильный результат. Затем работа программы прослеживается (мысленно или при помощи тестов) в обратном порядке, пока не будет обнаружено место возможной ошибки.
Метод тестирования.
Давайте рассмотрим процесс локализации ошибки на конкретном примере. Пусть дана небольшая программа, которая выдает значение максимального из трех введенных пользователем чисел.
var a, b, c: real; begin writeln('Программа находит значение максимального из трех введенных чисел'); write('Введите первое число '); readln(a); write('Введите второе число '); readln(b); write('Введите третье число '); readln(c); if (a>b)and(a>c) then writeln('Наибольшим оказалось первое число ',a:8:2) else if (b>a)and(a>c) then writeln('Наибольшим оказалось второе число ',b:8:2) else writeln('Наибольшим оказалось третье число ',b:8:2); end.
Обе выделенные ошибки можно обнаружить невооруженным глазом: первая явно допущена по невнимательности, вторая — из-за того, что скопированную строку не исправили.
Тестовые наборы данных должны учитывать все варианты решения, поэтому выберем следующие наборы чисел:
Данные Ожидаемый результат
a=10; b=-4; c=1 max=a=10
a=-2; b=8; c=4 max=b=8
a=90; b=0; c=90.4 max=c=90.4
В результате выполнения программы мы, однако, получим следующие результаты:
Для a=10; b=-4; c=1:
Наибольшим оказалось первое число 10.00
Для a=-2; b=8; c=4: < pre class=»list»>Наибольшим оказалось третье число 8.00Для a=90; b=0; c=90.4:
Наибольшим оказалось третье число 0.00
Вывод во втором и третьем случаях явно неверен. Будем разбираться.
1. Трассировка и промежуточная наблюдение за переменными
Добавляем промежуточную печать или наблюдение за переменными:
- — вывод a, b, c после ввода (проверяем, правильно ли получили данные)
- — вывод значения каждого из условий (проверяем, правильно ли записали условия)
Листинг программы существенно увеличился и стал вот таким:
var
a, b, c: real;
begin
writeln(‘Программа находит значение максимального из трех введенных чисел’);
write(‘Введите первое число ‘); readln(a);
writeln(‘Вы ввели число ‘,a:8:2); {отл.печать}
write(‘Введите второе число ‘); readln(b);
writeln(‘Вы ввели число ‘,b:8:2); {отл.печать}
write(‘Введите третье число ‘); readln(c);
writeln(‘Вы ввели число ‘,c:8:2); {отл.печать}
writeln(‘a>b=’,a>b,’, a>c=’,a>c,’, (a>b)and(a>c)=’,(a>b)and(a>c)); {отл.печать}
if (a>b)and(a>c) then
writeln(‘Наибольшим оказалось первое число ‘,a:8:2)
else begin
writeln(‘b>a=’,b>a,’, b>c=’,b>c,’, (b>a)and(b>c)=’,(b>a)and(b>c)); {отл.печать}
if (b>a)and(a>c) then
writeln(‘Наибольшим оказалось второе число ‘,b:8:2)
else
writeln(‘Наибольшим оказалось третье число ‘,b:8:2);
end;
end.
В принципе, еще при наборе у нас неплохой шанс отловить ошибку в условии: подобные кусочки кода обычно не перебиваются, а копируются, и если дать себе труд слегка при этом задуматься, ошибку найти легко.
Но давайте считать, что глаз «замылен» совершенно, и найти ошибку не удалось.
Вывод для второго случая получается следующим:
Программа находит значение максимального из трех введенных чисел
Введите первое число -2
Вы ввели число -2.00
Введите второе число 8
Вы ввели число 8.00
Введите третье число 4
Вы ввели число 4.00
a>b=FALSE, a>c=FALSE, (a>b)and(a>c)=FALSE
b>a=TRUE, b>c=TRUE, (b>a)and(b>c)=TRUE
Наибольшим оказалось третье число 8.00
Со вводом все в порядке . Об этом говорит сайт https://intellect.icu . Впрочем, в этом сомнений и так было немного. А вот что касается второй группы операторов печати, то картина вышла интересная: в результате выводится верное число (8.00), но неправильное слово («третье», а не «второе»).
Вероятно, проблемы в выводе результатов. Тщательно проверяем текст и обнаруживаем, что действительно в последнем случае выводится не c, а b. Однако к решению текущей проблемы это не относится: исправив ошибку, мы получаем для чисел -2.0, 8.0, 4.0 следующий результат.
Наибольшим оказалось третье число 4.00
Теперь ошибка локализована до расчетного блока и, после некоторых усилий, мы ее находим и исправляем.
2. Метод индукции
Судя по результатам, ошибка возникает, когда максимальное число — второе или третье (если максимальное — первое, то определяется оно правильно, для доказательства можно програть еще два-три теста).
Просматриваем все, относящееся к переменным b и с. Со вводом никаких проблем не замечено, а что касается вывода — то мы быстро натыкаемся на замену b на с. Исправляем.
Как видно, невыявленные ошибки в программе остаются. Просматриваем расчетный блок: все, что относится к максимальному b (максимум с получается «в противном случае»), и обнаруживаем пресловутую проблему «a>c» вместо «b>c». Программа отлажена.
3. Метод дедукции
Неверные результаты в нашем случае могут получиться из-за ошибки в:
- — вводе данных;
- — расчетном блоке;
- — собственно выводе.
Для доказательства мы можем пользоваться отладочной печатью, трассировкой или просто набором тестов. В любом случае мы выявляем одну ошибку в расчете и одну в выводе.
4. Обратное движение по алгоритму
Зная, что ошибка возникает при выводе результатов, рассматриваем код, начиная с операторов вывода. Сразу же находим лишнюю b в операторе writeln.
Далее, смотрим по конкретной ветке условного оператора, откуда взялся результат. Для значений -2.0, 8.0, 4.0 расчет идет по ветке с условием if (b>a)and(a>c) then… где мы тут же обнаруживаем искомую ошибку.
5. Тестирование
В нашей задаче для самого полного набора данных нужно выбрать такие переменные, что
a > b > c
a > c > b
b > a > c
b > c > a
c > a > b
c > b > a
Анализируя получившиеся в каждом из этих случаев результаты, мы приходим к тому, что проблемы возникают при b>c>a и с — максимальном. Зная эти подробности, мы можем заострить внимание на конкретных участках программы.
Конечно, в реальной работе мы не расписываем так занудно каждый шаг, не прибегаем исключительно к одной методике, да и вообще частенько не задумываемся, каким образом искать ляпы. Теперь, когда мы разобрались со всеми подходами, каждый волен выбрать те из них, которые кажутся самыми удобными.
5. Средства отладки
Помимо методик, хорошо бы иметь представление о средствах, которые помогают нам выявлять ошибки. Это:
1) Аварийная печать — вывод сообщений о ненормальном завершении отдельных блоков и всей программы в целом.
2) Печать в узлах программы — вывод промежуточных значений параметров в местах, выбранных программистом. Обычно, это критичные участки алгоритма (например, значение, от которого зависит дальнейший ход выполнения) или составные части сложных формул (отдельно просчитать и вывести числитель и знаменатель большой дроби).
3) Непосредственное слежение:
- — арифметическое (за тем, чему равны, когда и как изменяются выбранные переменные),
- — логическое (когда и как выполняется выбранная последовательность операторов),
- — контроль выхода индексов за допустимые пределы,
- — отслеживание обращений к переменным,
- — отслеживание обращений к подпрограммам,
- — проверка значений индексов элементов массивов и т.д.
Нынешние среды разработки часто предлагают нам реагировать на возникающую проблему в диалоговом режиме. При этом можно:
- — просмотреть текущие значения переменных, состояние памяти, участок алгоритма, где произошел сбой;
- — прервать выполнение программы;
- — внести в программу изменения и повторно запустить ее (в компиляторных средах для этого потребуется перекомпилировать код, в интерпретаторных выполнение можно продолжить прямо с измененного оператора).
Рис Пример отладки приложения
6. Классификация ошибок
Ошибки в программах могут допускаться от самого начального этапа составления алгоритма решения задачи до окончательного оформления программы. Разновидностей ошибок достаточно много. Рассмотрим некоторые группы ошибок и соответствующие примеры:
Если вы удручены тем, что насажали в текст программы глупых ошибок — не расстраивайтесь. Ошибки вообще не бывают умными, хотя и могут относиться к самым разным частям кода:
- — ошибки обращения к данным,
- — ошибки описания данных,
- — ошибки вычислений,
- — ошибки при сравнении,
- — ошибки в передаче управления,
- — ошибки ввода-вывода,
- — ошибки интерфейса,
- и т д
Классификация ошибок по этапу обработки программы
рис Классификация ошибок этапа выполнения по возможным причинам
Синтаксические ошибки
Синтаксические ошибки зачастую выявляют уже на этапе трансляции. К сожалению, многие ошибки других видов транслятор выявить не в силах, т.к. ему не известен задуманный или требуемый результат работы программы. Отсутствие сообщений транслятора о наличии синтаксических ошибок является необходимым условием правильности программы, но не может свидетельствовать о том, что она даст правильный результат.
Примеры синтаксических ошибок :
- отсутствие знака пунктуации;
- несоответствие количества открывающих и закрывающих скобок;
- неправильно сформированный оператор;
- неправильная запись имени переменной;
- ошибка в написании служебных слов;
- отсутствие условия окончания цикла;
- отсутствие описания массивов и т.п.
Ошибки, которые не обнаруживает транслятор
В случае правильного написания операторов в программе может присутствовать большое количество ошибок, которые транслятор не может обнаружить. Рассмотрим примеры таких ошибок:
Логические ошибки: после проверки заданного условия неправильно указана ветвь алгоритма; неполный перечень возможных условий при решении задачи; один или более блоков алгоритма в программе пропущен.
Ошибки в циклах: неправильно указано начало цикла; неправильно указаны условия окончания цикла; неправильно указано количество повторений цикла; использование бесконечного цикла.
Ошибки ввода-вывода; ошибки при работе с данными: неправильно задан тип данных; организовано считывание меньшего или большего объема данных, чем нужно; неправильно отредактированы данные.
Ошибки в использовании переменных: используются переменных, для которых не указаны начальные значения; ошибочно указана одна переменная вместо другой. Ошибки при работе с массивами: пропущено предварительное обнуление массивов; неправильное описание массивов; индексы массивов следуют в ошибочном порядке.
ошибки безопасности, умышленные и не умышленные уязвимости в системе, открытость к отказам в обслуживании. несанкционированном доступе. екхолы
Ошибки в арифметических операциях: неправильное использование типа переменной (например, для сохранения результата деления используется целочисленная переменная); неправильно определен порядок действий; выполняется деление на нуль; при расчете выполняется попытка извлечения квадратного корня из отрицательного числа; не учитываются значащие разряды числа.
ошибки в архитектуре приложения пприводящие к увеличени технического долга
Методы (пути) снижение ошибок в программировании
- использование тестиования
- использование более простых решений
- использование систем с наименьшим числом составлящих
- использование ранее использованных и проверенных компонентов
- использование более квалифицрованных специалистов
7. Советы отладчику
1) Проверяйте тщательнее: ошибка скорее всего находится не в том месте, в котором кажется.
2) Часто оказывается легче выделить те места программы, ошибок в которых нет, а затем уже искать в остальных.
3) Тщательнее следить за объявлениями констант, типов и переменных, входными данными.
4) При последовательной разработке приходится особенно аккуратно писать драйверы и заглушки — они сами могут быть источником ошибок.
5) Анализировать код, начиная с самых простых вариантов. Чаще всего встречаются ошибки:
— значения входных аргументов принимаются не в том порядке,
— переменная не проинициализирована,
— при повторном прохождении модуля, перемен ная повторно не инициализируется,
— вместо предполагаемого полного копирования структуры данных, копируется только верхний уровень (например, вместо создания новой динамической переменной и присваивания ей нужного значения, адрес тупо копируется из уже существующей переменной),
— скобки в сложном выражении расставлены неправильно.
6) При упорной длительной отладке глаз «замыливается». Хороший прием — обратиться за помощью к другому лицу, чтобы не повторять ошибочных рассуждений. Правда, частенько остается проблемой убедить это другое лицо помочь вам.
7) Ошибка, скорее всего окажется вашей и будет находиться в тексте программы. Гораздо реже она оказывается:
- в компиляторе,
- операционной системе,
- аппаратной части,
- электропроводке в здании и т.д.
Но если вы совершенно уверены, что в программе ошибок нет, просмотрите стандартные модули, к которым она обращается, выясните, не менялась ли версия среды разработки, в конце концов, просто перегрузите компьютер — некоторые проблемы (особенно в DOS-средах, запускаемых из-под Windows) возникают из-за некорректной работы с памятью.
Убедитесь, что исходный текст программы соответствует скомпилированному объектному коду (текст может быть изменен, а запускаемый модуль, который вы тестируете — скомпилирован еще из старого варианта).
9) Навязчивый поиск одной ошибки почти всегда непродуктивен. Не получается — отложите задачу, возьмитесь за написание следующего модуля, на худой конец займитесь документированием.
10) Старайтесь не жалеть времени, чтобы уясненить причину ошибки. Это поможет вам:
исправить программу,
обнаружить другие ошибки того же типа,
не делать их в дальнейшем.
11) Если вы уже знаете симптомы ошибки, иногда полезно не исправлять ее сразу, а на фоне известного поведения программы поискать другие ляпы.
12) Самые труднообнаруживаемые ошибки — наведенные, то есть те, что были внесены в код при исправлении других.
8. Тестирование
Тестирование — это выполнение программы для набора проверочных входных значений и сравнение полученных результатов с ожидаемыми.
Цель тестирования — проверка и доказательство правильности работы программы. В противном случае — выявление того, что в ней есть ошибки. Тестирование само не показывает местонахождение ошибки и не указывает на ее причины.
Принципы тестирования.
1) Тест — просчитанный вручную пример выполнения программы от исходных данных до ожидаемых результатов расчета. Эти результаты считаются эталонными.
Полномаршрутным будет такое тестирование, при котором каждый линейный участок программы будет пройден хотя бы при выполнении одного теста.
2) При прогоне программы по тестовым начальным данным, полученные результаты нужно сверить с эталонными и проанализировать разницу, если она есть.
3) При разработке тестов нужно учитывать не только правильные, но и неверные исходные данные.
4) Мы должны проверить программу на нежелательные побочные эффекты при задании некоторых исходных данных (деление на ноль, попытка считывания из несуществующего файла и т.д.).
5) Тестирование нужно планировать: заранее выбрать, что мы контролируем и как это сделать лучше. Обычно тесты планируются на этапе алгоритмизации или выбора численного метода решения. Причем, составляя тесты, мы предполагаем, что ошибки в программе есть.
6) Чем больше ошибок в коде мы уже нашли, тем больше вероятность, что мы обнаружим еще не найденные.
Хорошим называют тест, который с большой вероятностью должен обнаруживать ошибки, а удачным — тот, который их обнаружил.
9. Проектирование тестов
Тесты просчитываются вручную, значит, они должны быть достаточно просты для этого.
Тесты должны проверять каждую ветку алгоритма. По возможности, конечно. Так что количество и сложность тестов зависит от сложности программы.
Тесты составляются до кодирования и отладки: во время разработки алгоритма или даже составления математической модели.
Обычно для экономии времени сначала пропускают более простые тесты, а затем более сложные.
Давайте рассмотрим задачу: нужно проверить, попадает ли введенное число в заданный пользователем диапазон.
program Example;
(******************************************************
* Задача: проверить, попадает ли введенное число в *
* заданный пользователем диапазон *
******************************************************)
var
min, max, A, tmp: real;
begin
writeln(‘Программа проверяет, попадают ли введенные пользователем’);
writeln(‘значения в заданный диапазон’);
writeln;
writeln(‘Введите нижнюю границу диапазона ‘); readln(min);
writeln(‘Введите верхнюю границу диапазона ‘); readln(max);
if min>max then begin
writeln(‘Вы перепутали диапазоны, и я их поменяю’);
tmp:=min;
min:=max;
max:=tmp;
end;
repeat
writeln(‘Введите число для проверки (0 — конец работы) ‘); readln(A);
if (A>=min)and(A<=max) then
writeln(‘Число ‘,A,’ попадает в диапазон [‘,min,’..’,max,’]’)
else
writeln(‘Число ‘,A,’ не попадает в диапазон [‘,min,’..’,max,’]’);
until A=0;
writeln;
end.
Если исходить из алгоритма программы, мы должны составить следующие тесты:
ввод границ диапазона
— min< max
— min>max
ввод числа
— A < min (A<>0)
— A > max (A<>0)
— min <= A <= max (A<>0)
— A=0
Как видите, программа очень мала, а тестов для проверки всех ветвей ее алгоритма, требуется довольно много.
10. Стратегии тестирования
1) Тестирование программы как «черного ящика».
Мы знаем только о том, что делает программа, но даже не задумываемся о ее внутренней структуре. Задаем набор входных данных, получаем результаты, сверяем с эталонными.
При этом обнаружить все ошибки мы можем только если составили тесты для всех возможных наборов данных. Естественно, это противоречит экономическим принципам, да и просто достаточно глупо.
«Черным ящиком» удобно тестировать небольшие подпрограммы.
2) Тестирование программы как «белого ящика».
Здесь перед составлением теста мы изучаем логику программы, ее внутреннюю структуру. Тестирование будет считаться удачным, если проверяет программу по всем направлениям. Однако, как мы уже говорили, это требует огромного количества тестов.
На практике мы, как всегда, совместно используем оба принципа.
3) Тестирование программ модульной структуры.
Мы снова возвращаемся к вопросу о структурном программировании. Если вы помните, программы строятся из модулей не в последнюю очередь для того, чтобы их легко было отлаживать и тестировать. Действительно, структурированную программу мы будем тестировать частями. При этом нам нужно:
строить набор тестов;
комбинировать модули для тестирования.
Такое комбинирование может строиться двумя способами:
Пошаговое тестирование — тестируем каждый модуль, присоединяя его к уже оттестированным. При этом можем соединять части программы сверху вниз (нисходящий способ) или снизу вверх (восходящий).
Монолитное тестирование — каждый модуль тестируется отдельно, а затем из них формируется готовая рабочая программа и тестируется уже целиком.
Чтобы протестировать отдельный модуль, нужен модуль-драйвер (всегда один) и модул и-заглушки (этих может быть несколько).
Модуль-драйвер содержит фиксированные исходные данные. Он вызывает тестируемый модуль и отображает (а возможно, и анализирует) результаты.
Модуль-заглушка нужен, если в тестируемом модуле есть вызовы других. Вместо этого вызова управление передается модулю-заглушке, и уже он имитирует необходимые действия.
К сожалению, мы опять сталкиваемся с тем, что драйверы и заглушки сами могут оказаться источником ошибок. Поэтому создаваться они должны с большой осторожностью.
См. также
- ошибки в приложениях , bugs , баг репорт , bug report ,
- Фича
- GIGO
- Патч
- тестирование
- цикломатическая сложность
- баг репорт
- качество программного обеспечения
К сожалению, в одной статье не просто дать все знания про виды ошибок программного обеспечения. Но я — старался.
Если ты проявишь интерес к раскрытию подробностей,я обязательно напишу продолжение! Надеюсь, что теперь ты понял что такое виды ошибок программного обеспечения, принципы отладки
и для чего все это нужно, а если не понял, или есть замечания,
то нестесняся пиши или спрашивай в комментариях, с удовольствием отвечу. Для того чтобы глубже понять настоятельно рекомендую изучить всю информацию из категории
Качество и тестирование программного обеспечения. Quality Assurance.
-
Отладка и тестирование программы
Отладка
программы является итеративным процессом
обнаружения и исправления ошибок и
обычно требует последовательного
выполнения четырех этапов:
-
выявления
ошибки; -
локализации
ошибки в тексте программы; -
установления
причины ошибки; -
исправления
ошибки.
Некоторые
ошибки проявляются после первого же
запуска программы на выполнение, и для
их обнаружения не надо прибегать ни к
каким специальным средствам. Некоторые
ошибки проявляются в случайные моменты
работы программы. С такими ошибками
справиться труднее всего – зафиксировать
условия возникновения ошибки, понять
причину ошибки и устранить ее. С целью
обнаружения подобных ошибок осуществляется
тестирование
программы–
ее выполнение для специально подобранных
представительных контрольных примеров
– тестов. Тест
– это такой
набор исходных данных, для которого
вручную или другим способом просчитаны
промежуточные и конечные результаты и
который может быть использован для
получения информации о надежности
проверяемой программы.
Тестирование
программы должно включать в себя прогон
трех видов контрольных примеров:
нормальных ситуаций, граничных ситуаций
и случаев неправильных данных.
Нормальные
случаи –
это примеры с правильными входными
данными. Если программа не работает в
подобных случаях, она требует серьезных
переделок. Граничные контрольные примеры
помогают установить, способна ли
программа нормально реагировать на
особые случаи во входных данных. Граничные
примеры
представляют собой данные, которые,
будучи математически корректными,
приводят программу к необходимости
работать особым образом. Неправильными
являются
такие данные,
которые расположены вне допустимого
диапазона. Примеры с неправильными
данными должны быть обработаны
соответствующим образом, поскольку в
повседневной эксплуатации программе
придется иметь дело и с неверными
входными данными.
После того как
ошибка обнаружена, необходимо найти в
исходном тексте программы то место, в
котором она возникала, – локализовать
ошибку. Можно
использовать ряд различных методов
отладки, позволяющих обнаружить
расположение ошибки; выбор существенно
зависит от особенностей ситуации.
Большинство программистов начинают с
неформального метода, известного под
названием проверка
за столом. Используя
контрольный пример, который привел к
ошибке в программе, программист
аналитически трассирует листинг
программы в надежде локализовать ошибку.
Проверка за столом – это хороший метод,
поскольку он заставляет программиста
детально понять работу программы. Если
применение метода проверки за столом
оказалось бесплодным, нужно использовать
специальные методы и способы отладки,
позволяющие наблюдать за передачей
управления в программе и за изменением
значений наиболее важных переменных.
Полученная отладочная информация
позволит локализовать подозрительные
ситуации, провести анализ и выявить
причину ошибки, устранить ее, а затем
продолжить поиск других ошибок.
-
Причины и типы ошибок
В общем случае
ошибки могут возникать на любом этапе
разработки программы, причина ошибок
может быть связана с недопониманием
сути задачи, недостатками проектирования
алгоритма, неправильным использованием
языковых средств. При выполнении
программы ошибки разного типа проявляют
себя различным образом, и их принято
подразделять на следующие группы:
-
синтаксические
ошибки; -
семантические
ошибки; -
логические
ошибки.
Синтаксические
ошибки –
это ошибки, проявляющиеся на этапе
компиляции программы и возникающие в
связи с нарушением синтаксических
правил написания предложений используемого
языка программирования (к таким ошибкам
относятся
пропущенные точки с запятой, ссылки на
неописанные переменные, присваивание
переменной значений неверного типа и
т. д.). Если компилятор встречает в
тексте программы оператор или описание,
которые
он не может интерпретировать, то он
позиционирует курсор на место обнаруженной
ошибки и
в строку статуса выводит сообщение,
содержащее номер ошибки и ее краткое
описание.
Семантические
ошибки – это
ошибки, проявляющиеся на этапе
выполнения программы при ее попытке
вычислить недопустимые значения
параметров или выполнить недопустимые
действия. Причина возникновения ошибок
данного типа связана с нарушением
семантических правил написания программ
(примером являются ситуации
попытки
открыть несуществующий файл или выполнить
деление на нуль). Если программа
обнаруживает ошибку такого типа, то она
завершает свое выполнение
и
выводит
соответствующее сообщение в окне Build,
содержащее номер строки с ошибкой и ее
возможный характер. Список сообщений
можно просмотреть с помощью команды
меню View/Debug
Windows/Event
Log.
При выполнении программы из среды Delphi
автоматически выбирается соответствующий
исходный файл и в нем находится
местоположение ошибки. Если же программа
выполнялась вне среды и в ней появилась
ошибка данного типа, то необходимо
запустить
среду и найти вызвавший ошибку оператор.
Логические
(смысловые) ошибки – самые
сложные и трудноуловимые, связанные с
неправильным применением тех или иных
алгоритмических конструкций. Эти ошибки
при выполнении программы могут проявиться
явно (выдано сообщение об ошибке, нет
результата или выдан неверный результат,
программа «зацикливается»), но чаще
они проявляют себя только при определенных
сочетаниях параметров или вообще не
вызывают нарушения работы программы,
которая в этом случае выдает правдоподобные,
но неверные результаты.
Ошибки первого
типа легко выявляются самим компилятором.
Обычно устранение синтаксических ошибок
не вызывает особых трудностей. Более
сложно выявить ошибки второго и особенно
третьего типа. Для обнаружения и
устранения ошибок второго и третьего
типа обычно применяют специальные
способы и средства отладки программ.
Выявлению ошибок второго типа часто
помогает использование контролирующих
режимов компиляции с проверкой допустимых
значений тех или иных параметров (границ
индексов элементов массивов, значений
переменных типа диапазона, ситуаций
переполнения, ошибок ввода-вывода).
Устанавливаются эти режимы с помощью
ключей
компилятора,
задаваемых либо в программе, либо в меню
Project/Options/Compiler
среды
Delphi, либо
в
меню
Options/Compiler Турбо-среды.
Соседние файлы в папке крутые билеты по инфе
- #
- #
- #
- #
Виды ошибок в программах
Я учусь на своих ошибках. Ругаю себя за это, но продолжаю ошибаться. С другой стороны — это всё-таки лучше, чем не учиться совсем, и наступать на одни и те же грабли бесконечно.
При создании программ, даже простых, ошибки неизбежны. Поэтому для поиска ошибок во всех средствах разработки имеются особые инструменты для отладки. Но сегодня не об отладке и не о поиске ошибок. Сегодня о видах ошибок, которые встречаются в программах.
Итак, основных вида всего три:
- Синтаксические ошибки
- Логические ошибки
- Ошибки выполнения программы
Синтаксические ошибки в программах
Эти ошибки довольно распространены, особенно среди начинающих. Но эти ошибки — самые безобидные. Потому что компиляторы легко находят ошибки синтаксиса и указывают место в исходном коде, где обнаружена такая ошибка. Программисту остаётся только исправить её.
Синтаксические ошибки — это ошибки синтаксиса (а то бы вы не догадались))). То есть ошибки правил языка. Например, для Паскаля это будет синтаксической ошибкой:
WriteLn('Hello, World !!!') ReadLn;
Потому что после первой строки нет точки с запятой.
Подобные ошибки очень часто совершают новички. И это вгоняет их в ступор — они пугаются и не могут понять, что же не так с их кодом. Хотя если бы они внимательно его посмотрели и прочитали сообщение об ошибке, то легко могли бы исправить её:
Потому что в сообщении чётко сказано:
Syntax error, ";" expected but "identifier READLN" found
что можно перевести как
синтаксическая ошибка, ";" ожидалось, но "READLN" найден
То есть компилятор говорит нам: я ожидал увидеть точку с запятой, а нашёл идентификатор READLN
.
Логические ошибки в программах
Это самые противные и самые труднонаходимые ошибки. Программа может быть написана совершенно правильно с точки зрения синтаксиса языка, и при этом она будет неправильно работать. Потому что программист допустил где-то логическую ошибку.
И компилятор вам ничего об этой ошибке не расскажет, потому что правила языка не нарушены.
Поиски таких ошибок могут занять много времени и отнять у вас немало здоровья. Поэтому при разработке программ лучше не торопиться и стараться не допускать логических ошибок.
Пример логической ошибки:
for i := 1 to 10 do if i = 15 then WriteLn('i = 15');
Здесь мы сравниваем значение i
с числом 15, и выводим сообщение, если i = 15
.
Но фишка в том, что в данном цикле i
не будет равно 15 НИКОГДА, потому что в цикле переменной i
присваиваются значения от 1 до 10.
Эта ошибка довольно безобидная. Здесь мы имеем просто бессмысленный код, который не причинит никакого вреда.
Однако представьте, что программа должна выдавать какой-то сигнал тревоги, если i = 15
. Тогда получится, что никакого сигнала пользователь никогда не услышит, даже если случилось что-то страшное. А всё потому, что программист немного ошибся. Вот так вот и падают ракеты и самолёты…
Распространённые логические ошибки в С++ вы можете посмотреть здесь.
Ошибки времени выполнения программы
Даже если исходный код не содержит ни логических, не синтаксических ошибок, это ещё не означает, что ваша программа безупречна. Потому что ошибки могут возникнуть в ходе выполнения программы. Например, случайно будет удалён файл, который должна читать программа, и она не сможет его найти. Если не принять мер, то программа может завершиться аварийно. А пользователям такое поведение программ очень не нравится.
Одна из самых рапространённых ошибок времени выполнения — это неожиданное деление на ноль. Пример:
Write('y = '); ReadLn(y); x := 100 / y; WriteLn('100 / ', y, ' = ', x);
Что здесь такого? Всё правильно и с точки зрения логики, и с точки зрения синтаксиса. И в большинстве случаев программа отработает без каких-либо неожиданностей.
Но представьте, что пользователь введёт ноль. Что тогда будет? Правильно — попытка деления на ноль. А на ноль делить нельзя. Поэтому во время выполнения этой программы произойдёт ошибка, которая очень расстроит пользователя. Потому что в случае, например, с консольным приложением программа просто закроется, и пользователь не поймёт, что это было. Но зато поймёт, что программа — говно, и программы от этого разработчика лучше больше никогда не использовать.
В данном случае, если вы не уверены на 100%, что y будет отличаться от нуля, надо всегда делать проверку на ноль. И хороший код должен быть хотя бы таким:
Write('y = '); ReadLn(y); if y = 0 then WriteLn('ERROR: y = 0') else begin x := 100 / y; WriteLn('100 / ', y, ' = ', x); end;
Ну что же. На этом с видами ошибок пока всё. Изучайте программирование и поменьше ошибайтесь.
Основы программирования Каждый профессионал когда-то был чайником. Наверняка вам знакомо состояние, когда “не знаешь как начать думать, чтобы до такого додуматься”. Наверняка вы сталкивались с ситуацией, когда вы просто не знаете, с чего начать. Эта книга ориентирована как раз на таких людей, кто хотел бы стать программистом, но совершенно не знает, как начать этот путь. Подробнее… |
Ошибки в программировании – дело обычное, хоть и неприятное. В данной статье будет рассказано о том, какими бывают ошибки (баги), а также что собой представляют исключения.
Определение
Ошибка в программировании (или так называемый баг) – это ситуация у разработчиков, при которой определенный код вследствие обработки выдает неверный результат. Причин данному явлению множество: неисправность компилятора, сбои интерфейса, неточности и нарушения в программном коде.
Баги обнаруживаются чаще всего в момент отладки или бета-тестирования. Реже – после итогового релиза готовой программы. Вот несколько вариантов багов:
- Появляется сообщение об ошибке, но приложение продолжает функционировать.
- ПО вылетает или зависает. Никаких предупреждений или предпосылок этому не было. Процедура осуществляется неожиданно для пользователя. Возможен вариант, при котором контент перезапускается самостоятельно и непредсказуемо.
- Одно из событий, описанных ранее, сопровождается отправкой отчетов разработчикам.
Ошибки в программах могут привести соответствующее приложение в негодность, а также к непредсказуемым алгоритмам функционирования. Желательно обнаруживать баги на этапе ранней разработки или тестирования. Лишь в этом случае программист сможет оперативно и относительно недорого внести необходимые изменения в код для отладки ПО.
История происхождения термина
Баг – слово, которое используется разработчиками в качестве сленга. Оно произошло от слова «bug» – «жук». Точно неизвестно, откуда в программировании и IT возник соответствующий термин. Существуют две теории:
- 9 сентября 1945 года ученые из Гарварда тестировали очередную вычислительную машину. Она называлась Mark II Aiken Relay Calculator. Устройство начало работать с ошибками. Когда его разобрали, то ученые заметили мотылька, застрявшего между реле. Тогда некая Грейс Хоппер назвала произошедший сбой упомянутым термином.
- Слово «баг» появилось задолго до появления Mark II. Термин использовался Томасом Эдисоном и указывал на мелкие недочеты и трудности. Во время Второй Мировой войны «bugs» называли проблемы с радарной электроникой.
Второй вариант кажется более реалистичным. Это факт, который подтвержден документально. Со временем научились различать различные типы багов в IT. Далее они будут рассмотрены более подробно.
Как классифицируют
Ошибки работы программ разделяются по разным факторам. Классификация у рядовых пользователей и разработчиков различается. То, что для первых – «просто программа вылетела» или «глючит», для вторых – огромная головная боль. Но существует и общепринятая классификация ошибок. Пример – по критичности:
- Серьезные неполадки. Это нарушения работоспособности приложения, которые могут приводить к непредвиденным крупным изменениям.
- Незначительные ошибки в программах. Чаще всего не оказывают серьезного воздействия на функциональность ПО.
- Showstopper. Критические проблемы в приложении или аппаратном обеспечении. Приводят к выходу программы из строя почти всегда. Для примера можно взять любое клиент-серверное приложение, в котором не получается авторизоваться через логин и пароль.
Последний вариант требует особого внимания со стороны программистов. Их стараются обнаружить и устранить в первую очередь. Критические ошибки могут отложить релиз исходной программы на неопределенный срок.
Также существуют различные виды сбоев в плане частоты проявления: постоянные и «разовые». Вторые встречаются редко, чаще – при определенных настройках и действиях со стороны пользователя. Первые появляются независимо от используемой платформы и выполненных клиентом манипуляций.
Иногда может получиться так, что ошибка возникает только на устройстве конкретного пользователя. В данном случае устранение неполадки требует индивидуального подхода. Иногда – полной замены компьютера. Связано это с тем, что никто не будет редактировать исходный код, когда он «глючит» только у одного пользователя.
Виды
Существуют различные типы ошибок в программах в зависимости от типовых условий использования приложений. Пример – сбои, которые возникают при возрастании нагрузки на оперативную память или центральный процессор устройства. Есть баги граничных условий, сбоя идентификаторов, несовместимости с архитектурой процессора (наиболее распространенная проблема на мобильных устройствах).
Разработчики выделяют следующие типы ошибок по уровню сложности:
- «Борбаг» – «стабильная» неполадка. Она легко обнаруживается на этапе разработки и компилирования. Иногда – во время тестирования наработкой исходной программы.
- «Гейзенбаг» – баги с поддержкой изменения свойств, включая зависимость от среды, в которой было запущено приложение. Сюда относят периодические неполадки в программах. Они могут исчезать на некоторое время, но через какой-то промежуток вновь дают о себе знать.
- «Мандельбаг» – непредвиденные ошибки. Обладают энтропийным поведением. Предсказать, к чему они приведут, практически невозможно.
- «Шрединбаг» – критические неполадки. Приводят к тому, что злоумышленники могут взломать программу. Данный тип ошибок обнаружить достаточно трудно, потому что они никак себя не проявляют.
Также есть классификация «по критичности». Тут всего два варианта – warning («варнинги») и критические весомые сбои. Первые сопровождаются характерными сообщениями и отчетами для разработчиков. Они не представляют серьезной опасности для работоспособности приложения. При компилировании такие сбои легко исправляются. В отдельных случаях компилятор справляется с этой задачей самостоятельно. А вот критические весомые сбои говорят сами за себя. Они приводят к серьезным нарушениям ПО. Исправляются обычно путем проработки логики и значительных изменений программного кода.
Типы багов
Ошибки в программах бывают:
- логическими;
- синтаксическими;
- взаимодействия;
- компиляционные;
- ресурсные;
- арифметические;
- среды выполнения.
Это – основная классификация сбоев в приложениях и операционных системах. Логические, синтаксические и «среды выполнения» встречаются в разработке чаще остальных. На них будет сделан основной акцент.
Ошибки синтаксиса
Синтаксические баги распространены среди новичков. Они относятся к категории «самых безобидных». С данной категорией ошибок способны справиться компиляторы тех или иных языков. Соответствующие инструменты показывают, где допущена неточность. Остается лишь понять, как исправить ее.
Синтаксические ошибки – ошибки синтаксиса, правил языка. Вот пример в Паскале:
Код написан неверно. Согласно действующим синтаксическим нормам, в Pascal в первой строчке нужно в конце поставить точку с запятой.
Логические
Тут стоит выделить обычные и арифметические типы. Вторые возникают, когда программе при работе необходимо вычислить много переменных, но на каком-то этапе расчетов возникают неполадки или нечто непредвиденное. Пример – получение в результатах «бесконечности».
Логические сбои обычного типа – самые сложные и неприятные. Их тяжелее всего обнаружить и исправить. С точки зрения языка программа может быть написана идеально, но работать неправильно. Подобное явление – следствие логической ошибки. Компиляторы их не обнаруживают.
Выше – пример логической ошибки в программе. Тут:
- Происходит сравнение значения i с 15.
- На экран выводится сообщение, если I = 15.
- В заданном цикле i не будет равно 15. Связано это с диапазоном значений – от 1 до 10.
Может показаться, что ошибка безобидная. В приведенном примере так и есть, но в более крупных программах такое явление приводит к серьезным последствиям.
Время выполнения
Run-time сбои – это ошибка времени выполнения программы. Встречается даже когда исходный код лишен логических и синтаксических ошибок. Связаны такие неполадки с ходом выполнения программного продукта. Пример – в процессе функционирования ПО был удален файл, считываемый программой. Если игнорировать подобные неполадки, можно столкнуться с аварийным завершением работы контента.
Самый распространенный пример в данной категории – это неожиданное деление на ноль. Предложенный фрагмент кода с точки зрения синтаксиса и логики написан грамотно. Но, если клиент наберет 0, произойдет сбой системы.
Компиляционный тип
Встречается при разработке на языках высокого уровня. Во время преобразований в машинный тип «что-то идет не так». Причиной служат синтаксические ошибки или сбои непосредственно в компиляторе.
Наличие подобных неполадок делает бета-тестирование невозможным. Компиляционные ошибки устраняются при разработке-отладке.
Ресурсные
Ресурсный тип ошибок – это сбои вроде «переполнение буфера» или «нехватка памяти». Тесно связаны с «железом» устройства. Могут быть вызваны действиями пользователя. Пример – запуск «свежих» игр на стареньких компьютерах.
Исправить ситуацию помогают основательные работы над исходным кодом. А именно – полное переписывание программы или «проблемного» фрагмента.
Взаимодействие
Подразумевается взаимодействие с аппаратным или программным окружением. Пример – ошибка при использовании веб-протоколов. Это приведет к тому, что облачный сервис не будет нормально функционировать. При постоянном возникновении соответствующей неполадки остается один путь – полностью переписывать «проблемный» участок кода, ответственный за соответствующий баг.
Исключения и как избежать багов
Исключение – событие, при возникновении которых начинается «неправильное» поведение программы. Механизм, необходимый для стабилизации обработки неполадок независимо от типа ПО, платформ и иных условий. Помогают разрабатывать единые концепции ответа на баги со стороны операционной системы или контента.
Исключения бывают:
- Программными. Они генерируются приложением или ОС.
- Аппаратными. Создаются процессором. Пример – обращение к невыделенной памяти.
Исключения нужны для охвата критических багов. Избежать неполадок помогут отладчики на этапе разработки. А еще – своевременное поэтапное тестирование программы.
P. S. Большой выбор курсов по тестированию есть и в Otus. Присутствуют варианты как для продвинутых, так и для начинающих пользователей.
Синтаксические ошибки заключаются в неверном построении словосочетаний, в нарушении структуры простых, осложненных и сложных предложений.
Ошибки в структуре словосочетаний:
1. Нарушение согласования с главным словом в роде, числе и падеже слова зависимого, выраженного прилагательным, причастием, порядковым числительным, местоимением: «Нынешнее летом я был в степном Заволжье».
2. Нарушение управления. Ошибки в беспредложном управлении (неправильный выбор предлога): «Если в жаркий день дотронешься к березе, то почувствуешь прохладный ствол».
3. Неправильный выбор падежа при правильно выбранном предлоге: «Он был похож на смертельно усталым человеком».
4. Пропуск предлога: «Пообедав торопливо, сел за штурвал, поехал (?) поле».
5. Употребление лишнего предлога «Жажда к славе».
6. Пропуск зависимого компонента словосочетания: «Снова садится в жаркую кабину, снова крутить лоснящийся от ладоней штурвал, (?) ехать».
Ошибки в строении и значении предложения:
1. Нарушение связи между подлежащим и сказуемым: «Но не вечно ни юность, ни лето», «Солнце уже села, когда мы вернулись».
2. Отсутствие смысловой законченности предложения, нарушение его границ: «Однажды в годы войны. Попал в тополь снаряд».
3. Синтаксическая двузначность: «Их (девочек) мечта сбылась, они (рыбаки) вернулись».
4. Нарушение видовременной соотнесенности глаголов в составе предложения: «Гринев видит, как Пугачев садился в карету».
Ошибки в простом двусоставном предложении:
Подлежащее:
– Местоименное дублирование подлежащего: «Дети, сидящие на старой опрокинутой вверх килем лодке, они ждут своего отца».
– Нарушение согласования подлежащего и местоимения, заменяющего подлежащее в другом предложении: «Видимо, на море шторм, поэтому он полон опасностей».
Сказуемое:
– Ошибки в конструировании сказуемого: «Все были счастливые».
– Нарушение согласования сказуемого в роде и числе с подлежащим, выраженным собирательными существительным, количественно-именным словосочетанием, вопросительным и неопределенным местоимением: «Я с мамой остались дома», «В комнату проникли сноп лучей солнца».
– Местоименное дублирование дополнения: «Многие книги их можно читать несколько раз».
Определение:
– Неправильное использование несогласованного определения: «Справа висят светильник и мой портрет из садика».
– Нагромождение согласованных и не согласованных определений, относящихся к одному члену предложения: «Огромный, прекрасный мир жизни нашей страны и наших сверстников открывается в миллионах книг».
– Неверный выбор морфологической формы обстоятельства: «Я учу уроки на столе» (за столом).
Ошибки в односоставном предложении:
1. Использование двусоставных конструкций на месте односоставных.
2. Использование деепричастного оборота в безличном предложении: «Увидев собаку, мне стало жаль ее».
Предложения с однородными членами:
1. Использование разных частей речи в роли однородных членов предложения: «Комната мне нравится, потому что в ней светло, большая, чистая».
2. Включение в ряд однородных членов слов, обозначающих неоднородные понятия: «Когда весна и ясный день, солнце освещает всю мою комнату».
3. Неправильное использование сочинительных союзов для соединения однородных членов: «Мальчик был лобастый, но серьезный».
4. Неверное присоединение к одному главному члену логически неоднородных второстепенных членов: «В шкафу стоят книги, на полках лежат газеты и стеклянная посуда».
5. Ошибки в согласовании однородных подлежащих со сказуемым: «Тревога и тоска застыла в ее глазах».
6. Нарушения в области однородных сказуемых:
а) использование разных типов сказуемых в качестве однородных: «Море после шторма спокойное, ласковое и играет лучами солнца»;
б) нарушение единообразного оформления составных именных сказуемых: использование разных падежных форм именной части однородных составных именных сказуемых: «Их отец был опытным рыбаком и отважный мореход»; присоединение к однородным глагольным сказуемым дополнения, которое управляется лишь одним из сказуемых: «Все очень ждут и переживают за солдат»; употребление кратких и полных форм прилагательных и причастий в именной части: «Моя комната недавно отремонтирована: побелена и покрашенная».
7. Объединение членов и частей разных предложений на правах однородных: «Под березой растут грибы, ягоды, подснежники расцветают весной». «Дети ждали отца и когда покажется его лодка».
Предложения с вводными словами и вводными конструкциями:
1. Неправильный выбор вводного слова: «Девочки напряженно вглядывались в даль моря: наверное, на горизонте появится лодка».
2. Использование такого вводного слова, которое приводит к двусмысленности: «По словам рыбаков, ночью был шторм, а теперь штиль».
3. Употребление вводного предложения как самостоятельного: «Книга – источник знаний. Как утверждают многие».
Предложения с обособленными членами:
1. Нарушение порядка слов в предложениях с причастным оборотом.
– Отрыв причастного оборота от определяемого слова: «Но с деревом опять произошло несчастье: его ветви обрубили, расположенные низко».
– Включение определяемого слова в состав причастного оборота: «У девочек устремленный взгляд в море».
2. Нарушение правил построения причастного оборота.
– Построение причастного оборота по образцу придаточного предложения: «На картине изображена девочка, которая только вставшая».
– Употребление причастного оборота вместо деепричастного: «И каждый раз, возвращавшиеся обратно, мы садились под тополем и отдыхали».
3. Ошибки в предложениях с обособленными обстоятельствами, выраженными деепричастным оборотом: Отдыхая в кресле, передо мной висит картина «Март».
Способы передачи прямой речи. Прямая и косвенная речь:
1. Объединение прямой речи и слов автора: Перед войной отец сказал мне: «Ухаживай за деревом и ушел на фронт».
2. Употребление прямой речи без слов автора: Девочки увидели баркас: «Папа!».
3. Смешение прямой косвенной речи: Дедушка сказал, что в детстве у них был такой закон: в дни рождения дарили мы только то, что сделано было своими руками».
4. Ошибки при введении цитат: К. Паустовский говорил, что «Человек, любящий и умеющий читать, счастливый человек».
Сложные предложения:
1. Нарушение логико-грамматической связи между частями сложносочиненного предложения: «Мой отец долго не забывал эту историю, но он умер».
2. Использование местоимения во второй части сложносочиненного предложения, приводящее к двусмысленности: «Пусть надежды сбудутся, и они вернутся».
3. Ошибки в использовании сложносочиненных союзов:
а) соединительных – для связи частей сложносочиненного предложения при отсутствии между ними противительных отношений: «Вчера был шторм, и сегодня все кругом было спокойно».
б) противительных – для соединения частей сложносочиненного предложения при отсутствии между ними противительных отношений: «У нас во дворе растет береза, но на ней тоже набухают почки»;
в) двойных и повторяющихся: «Не то птица села на воду, или обломки разбитой лодки плывут по морю»;
г) неоправданный повтор союзов: «И вдруг девочки увидели маленькую черную точку, и у них появилась надежда»;
д) неудачный выбор союзов: «Митраше было десять лет с хвостиком, но сестра была старше».
Сложноподчиненные предложения:
1. Несоответствие вида придаточного предложения значению главного: «Но они все же дождутся своего отца, так как рыбаков обязательно должны ждать на берегу».
2. Использование сочинения и подчинения для связи частей в сложноподчиненном предложении: «Если человек не занимается спортом, и он быстро стареет».
3. Утяжеления конструкций за счет «нанизывания» придаточных предложений: «Парус появился в море как счастливая весть о том, что с рыбаками все в порядке и что девочки смогут скоро обнять своих родителей, которые задержались в море, потому что был сильный шторм».
4. Пропуск необходимого указательного слова: «Мама всегда меня ругает, что я разбрасываю свои вещи».
5. Неоправданное употребление указательного слова: «У меня есть такое предположение, что рыбаков задержал шторм».
6. Неправильное использование союзов и союзных слов при правильном их выборе:
а) употребление союзов и союзных слов в середине придаточного предложения: «В комнате на тумбочке стоит телевизор, после школы по которому я смотрю развлекательные передачи»;
б) нарушение согласования союзного слова в придаточном предложении с замещаемым или определительным словом в главном предложении: «На двух полочках – художественная литература, которыми я пользуюсь при подготовке к урокам».
7. Использование однотипных придаточных предложений при последовательном подчинении: «Прогуливаясь по берегу, я увидела двух девочек, которые сидели на перевернутой лодке, которая лежала у берега верх килем».
8. Использование придаточного предложения как самостоятельного: «Девочки беспокоятся за своих родных. Поэтому так печально глядят они в даль».
Бессоюзное сложное предложение:
1. Нарушение единства конструкций однородных частей в составе бессоюзного сложного предложения: «На картине изображено: раннее утро, только встает солнце».
2. Разложение частей бессоюзного сложного предложения на самостоятельные предложения: «Одеты девочки просто. На них летние ситцевые платья. На голове у старшей платок».
3. Одновременное использование бессоюзной и союзной связи: «Одежда на девочках простая: которая постарше с платком на голове, в синей юбке и серой кофте, младшая без платка, в фиолетовом платье и темно-синей кофточке».
Сложное предложение с различными видами связи:
1. Нарушение порядка следования частей предложения: «Волны еще пенятся, но у берега успокаиваются; чем ближе к горизонту, тем море темнее; и поэтому у девочек есть надежда, что отец вернется».
2. Использование местоимений, приводящих к двусмысленности: «Мы видим, что кровать у девочки не заправлена, и она подтверждает, что девочка только что встала».
Трудности, которые испытывают ученики, выполняя задание ЕГЭ А5 (найти грамматическую синтаксическую ошибку), понятны: умение в разговоре правильно построить фразу для части школьников навыком становится долго и трудно. Однако, готовясь к ЕГЭ, начинаешь обращать внимание на то, как строятся фразы. Поэтому на некоторых случаях задания А5, думается, есть смысл остановиться не только ради хорошего балла на ЕГЭ, но и ради повышения уровня культуры речи.
Посмотрим, что в А5 чаще вызывает затруднения.
1. Приложение и его падеж
– Если приложение в кавычках (обычно это название книги, фильма и т.п.), то оно не согласуется с определяемым словом (прочитал в газете «Аргументы и факты») и стоит в И.п. Если же определяемого слова нет, приложение ставится в косвенный (прочитал в «Аргументах и фактах»). Вариант типа прочитал в газете «Аргументах и фактах» – ошибочный.
– Если приложение без кавычек (название города, села, реки и т.п.), то склоняемые существительные согласуются с определяемым словом (в городе Москве, у села Иванькина), однако составные названия остаются в И.п. (в городе Минеральные Воды).
2. Двойные союзы (чаще других – союз НЕ ТОЛЬКО…, НО И).
Здесь два существенных момента:
1) вторую часть союза нельзя заменять другими словами. Пример: Он любил не только химию, но и физику. Это правильный вариант. Все другие (Он любил не только химию, а также и физику или Он любил не только химию, а и физику) – ошибочны.
2) первая часть союза должна стоять непосредственно перед первым однородным членом. Пример: Они собирали не только яблоки, но и груши. Это правильный вариант. – Они не только собирали яблоки, но и груши. – неправильный, так как слово собирали разрывает первую часть союза и однородный ряд.
3. Причастный оборот и его согласование с определяемым словом.
*** Поможет с 7 класса «вбитый» в голову алгоритм: задавай вопрос от определяемого слова к причастию – окончание вопроса подскажет и окончание причастия. Пример: Нашли несколько слов, (какИХ слов?) вызывающИХ сомнение.
* ** Поможет и здравый смысл. Сравни: 1)Часть учебников, (какИХ учебников?) предназначеннЫХ для старшеклассников, уже привезли в библиотеку. (Смысл: все учебники – для старшеклассников, и часть их поступила.) 2) Часть учебников (какУЮ часть?), предназначеннУЮ для старшеклассников, уже привезли в библиотеку. (Смысл: для старшеклассников – только часть учебников, остальные, еще не привезенные – для младших.)
4. Управление при однородных сказуемых.
Это частая ошибка – при двух однородных глаголах-сказуемых, требующих разного управления, стоит одно дополнение. Пример: Писатель прекрасно понимал и рассказывал о природе человека. (Ошибка: понимал о природе – недопустимое управление. Правильный вариант – Писатель прекрасно понимал (что?) природу человека и рассказывал (о чем?) о ней.
***Общее слово при двух глаголах возможно только тогда, когда они требуют после себя одного и того же падежа. Пример: Он видел и понимал (что?) природу человека.
5. Указательные слова в главной части сложноподчиненного предложения.
Подобная ошибка так прижилась в устной речи, что обычно не замечается. Но указательное слово ТО в главной части СПП бывает в некотором контексте неуместно.
Примеры: –неправильный вариант – Я считаю то, что вы не правы.
– Он думал то, что придет вовремя.
– правильный вариант – Я считаю, что вы неправы.
– Он думал, что придет вовремя
*** Сравним с предложениями, где указательные слова при тех же глаголах обязательны: – Правильным я считаю то, что приносит пользу. Он всегда думал то, что все окружающие.
Такая ошибка наиболее вероятна при глаголах:
– мышления, речи (ВСПОМИНАТЬ, СОЗНАВАТЬ, СООБЩАТЬ, ГОВОРИТЬ…)
– восприятия (УСЛЫШАТЬ, ПОЧУВСТВОВАТЬ, ОЩУТИТЬ…)
– чувства и волеизъявления (БОЯТЬСЯ, СТРАШИТЬСЯ, ВНУШАТЬ…)
6. Падеж существительного при некоторых производных предлогах..
1) предлоги СОГЛАСНО, ВОПРЕКИ, БЛАГОДАРЯ требуют дательного падежа
(ЧЕМУ?): | — согласно (ЧЕМУ?) расписанию |
— вопреки (ЧЕМУ?) решению | |
— благодаря (ЧЕМУ?) старанию |
Распространенная ошибка – родительный падеж вместо дательного (Согласно (чего?) расписания и т.п. – ОШИБКА!)
2) предлог ПО в значении ПОСЛЕ требует предложного падежа, а не дательного, то есть слова после него имеют окончания И или Е, а не У или Ю. Их немного и лучше выучить:
— по возвращениИ из поездки | (т.е. после возвращения) |
— по прибытиИ в город | (т.е. после прибытия) |
— по окончаниИ школы | (т.е. после окончания) |
— по приездЕ домой | (т.е. после приезда) |
***формы первого столбика – принадлежность книжного стиля, второго столбика – разговорного. «Шедевры» типа по окончанию, по прибытию, по приезду и т.п. – ОШИБКИ!
3) предлог ПО в значении переживания (СКУЧАТЬ, СОСКУЧИТЬСЯ, ТОСКОВАТЬ, ГОРЕВАТЬ, ПЛАКАТЬ и т.п.) сочетается с двумя падежами – с дательным и предложным:
с Д.п. – обычно существительные (скучаю по дому, тоскует по родине)
с П.п. – местоимения ТОЛЬКО 1 л. и 2 л. мн.ч. (МЫ, ВЫ)
Примеры:
- скучают ПО НАС
- тоскуем ПО ВАС
- горюет ПО НАС
- плачет ПО ВАС
*** С остальными глаголами – обычная форма Д.п.
(Из кустов стреляли по нам).
*** С остальными местоимениям – тоже Д.п. (Скучает по мне, по тебе, по нему, по ним)
7. Сказуемое при подлежащем-словосочетании.
Трудности возникают при выборе числа и рода глагола – сказуемого, если в составе подлежащего есть слова РЯД, НЕСКОЛЬКО, БОЛЬШИНСТВО/МЕНЬШИНСТВО.
– РЯД: Ряд статей был опубликован в журнале «Наука и жизнь». – Правильно!
Ряд статей были опубликованы в журнале «Наука и жизнь» – ОШИБКА! (Сказуемое должно согласоваться со словом РЯД, то есть стоять в единственном числе.)
– НЕСКОЛЬКО, БОЛЬШИНСТВО/МЕНЬШИНСТВО: сказуемое может стоять как в ед.ч., так и во мн.ч. Проще всего запомнить так:
– ЕД.Ч. употребляется, если:
1) речь идет о неодушевленных предметах.
Примеры: Несколько машин двигалось по дороге.
Большинство мест было занято.
2) при слове БОЛЬШИНСТВО есть определение.
Пример: Абсолютное большинство высказалось против нового закона.
– МН.Ч. употребляется, если:
1) речь идет об одушевленных предметах.
Примеры: Несколько солдат грелись у костра.
Большинство студентов сдали зачет.
2) подлежащее и сказуемое «разорваны» обособленным оборотом или придаточным предложением, содержащим указание на множественное число
Пример: Большинство подарков, которЫЕ получат дети, привезены в школу.
*** Если подлежащим является ОДНО лишь слово БОЛЬШИНСТВО, сказуемое стоит в ЕД.Ч. (Большинство было против принятия нового закона.)
8. Ошибки в управлении.
Что здесь необходимо?
– Во-первых, запомнить, что определенные глаголы требуют определенного падежа (например, глаголы со значением достижения, лишения, избегания – родительного: избегать (чего?) опасности; достичь (чего?) цели; лишиться (чего?) поддержки);
– Во-вторых, избавиться в своей речи от таких ошибок, как:
Эти факты говорят за то, что (правильно –…о том, что)
Свидетельство о том, что… (правильно – …тому, что… или того, что..)
В статье отмечается о достижениях (правильно – … отмечаются достижения)
Автор утверждает о том, что (правильно – …утверждает, что…);
– В-третьих, не путать управление в сходных внешне словосочетаниях:
идентичный чему-либо(Д.п.) – сходный с чем-либо (Т.п.)
обидеться на что-либо (В.п.) – обиженный чем-либо (Т.п.)
обрадоваться чему-либо (Д.п.) – обрадован чем-либо (Т.п.)
опираться на что-либо (В.п.) – базироваться на чем-либо (Т.п.)
отзыв о чем-либо (П.п.) – рецензия на что-либо (В.п.)
превосходство над чем-либо (Т.п.) – преимущество перед чем-либо (Т.п.)
предостеречь от чего-либо (Р.п.) – предупредить о чем-либо (П.п.)
различать что и что (В.п. + В.п.) – отличать что от чего (В.п. + Р.п.)
уверенность в чем-либо (П.п.) – вера во что-либо (В.п.)
удивляться чему-либо (В.п.) – удивлен чем-либо (Т.п.)
уплатить за что-либо (В.п.) – оплатить что-либо (В.п.)
9. Согласование сказуемого с подлежащим в сочетаниях ТЕ, КТО, ТЕ, ЧТО, ВСЕ, КТО, ВСЕ, ЧТО в сложноподчиненных предложениях)
1) в главном предложении, где подлежащее ТЕ или ВСЕ, требуется множественное число сказуемого. Примеры: Все, кто подал документы в вуз, должны явиться на собеседование. (Основа: Все….должны явиться) Те, что закончили работу, могут сдать тетради. (Основа:Те ..могут сдать)
2) в придаточном предложении, где подлежащее КТО, требуется единственное число сказуемого, где подлежащее ЧТО – множественное число. Примеры: Все, кто подал документы в вуз, должны явиться на собеседование. (Основа: кто подал) Те, что закончили работу, могут сдать тетради. (Основа: что закончили)
Вот те наиболее частые случаи, где обычно допускаются синтаксические ошибки и где, приложив не так уж много усилий, можно улучшить как баллы на ЕГЭ, так и собственную речь.
Содержание
- Синтаксические ошибки
- Синтаксические нормы и ошибки употребления
- Типы синтаксических ошибок
- Типичные ошибки в русском языке: грамматические, речевые и орфографические
- Самые распространенные ошибки в ЕГЭ по русскому языку:
- Грамматические ошибки
- Виды грамматических ошибок:
- Речевые ошибки
- Виды речевых ошибок:
- Типичные речевые ошибки (К10)
- К наиболее частотным речевым ошибкам относятся:
- Логические ошибки
- Фактические ошибки
- Орфографические, пунктуационные, графические ошибки
- Нормы синтаксиса в русской речи
- Нарушение синтаксических норм
- Нормы управления
- Употребление предлогов
- Употребление предложений с однородными членами
- Употребление деепричастных оборотов
- Употребление сложноподчинённых предложений
- Разновидности ошибок
- Способы исправления
- Примеры допущенных погрешностей
Синтаксические ошибки
Синтаксические ошибки заключаются в неверном построении словосочетаний, в нарушении структуры простых, осложненных и сложных предложений.
Ошибки в структуре словосочетаний :
Нарушение согласования с главным словом в роде, числе и падеже слова зависимого, выраженного прилагательным, причастием, порядковым числительным, местоимением: » Нынешнее летом я был в степном Заволжье «.
Неправильный выбор падежа при правильно выбранном предлоге: » Он был похож на смертельно усталым человеком «.
Пропуск предлога: » Пообедав торопливо, сел за штурвал, поехал (?) поле «.
Употребление лишнего предлога » Жажда к славе «.
Пропуск зависимого компонента словосочетания: » Снова садиться в жаркую кабину, снова крутить лоснящийся от ладоней штурвал, (?) ехать «.
Нарушение связи между подлежащим и сказуемым: » Но не вечно ни юность, ни лето «, » Солнце уже села, когда мы вернулись «.
Синтаксическая двузначность: » Их (девочек) мечта сбылась, они (рыбаки) вернулись «.
Нарушение видовременной соотнесенности глаголов в составе предложения: » Гринев видит, как Пугачев садился в карету «.
Подлежащее :
— Местоименное дублирование подлежащего: » Дети, сидящие на старой опрокинутой вверх килем лодке, они ждут своего отца «.
— Нарушение согласования подлежащего и местоимения, заменяющего подлежащее в другом предложении: » Видимо, на море шторм, поэтому он полон опасностей «.
Сказуемое :
— Ошибки в конструировании сказуемого: » Все были счастливые «.
— Нарушение согласования сказуемого в роде и числе с подлежащим, выраженным собирательными существительным, количественно-именным словосочетанием, вопросительным и неопределенным местоимением: » Я с мамой остались дома «, » В комнату проникли сноп лучей солнца «.
— Местоименное дублирование дополнения: » Многие книги их можно читать несколько раз «.
Определение :
— Неправильное использование несогласованного определения: » Справа висят светильник и мой портрет из садика «.
— Нагромождение согласованных и не согласованных определений, относящихся к одному члену предложения: » Огромный, прекрасный мир жизни нашей страны и наших сверстников открывается в миллионах книг «.
— Неверный выбор морфологической формы обстоятельства: » Я учу уроки на столе » (за столом).
Использование деепричастного оборота в безличном предложении: » Увидев собаку, мне стало жаль ее «.
Источник
Синтаксические нормы и ошибки употребления
Синтаксические нормы языка — это нормы построения словосочетания и предложения.
Такие нормы связаны, например,
не видеть ошибку — не видеть ошибки
(Нормативно переходные глаголы при отрицании требуют постановки существительного в Р.п.), т.е. нормативным будет вариант — не видеть ошибок,
Созданный Лермонтовым роман дает представление о герое нашего времени или Роман, созданный Лермонтовым, дает представление о герое нашего времени;
Приехав работать в маленький город, люди ему посоветовали посетить семью Туркиных.
По правилам деепричастие обозначает действие подлежащего, т.е. следует написать: Когда Старцев приехал работать в маленький город, люди посоветовали ему посетить семью Туркиных;
Чехов был знаменитым прозаиком и новеллистом.
Нормативно нельзя соединять в качестве однородных членов родовое и видовое понятия: слово прозаик является родовым (более широким по значению) по отношению к слову новеллист, т.е. нужно было написать: Чехов был знаменитым прозаиком.
Первое, на что хочу обратить внимание, — это на экономическом положении.
(По синтаксическим нормам сказуемое, выраженное существительным, употребляется в Им.п.)
Правильным будет предложение: Первое, на что хочу обратить внимание, — это экономическое положение
Типы синтаксических ошибок
Наиболее характерные нарушения здесь — это:
На стендах представлены афиши о выступлениях писателя на немецком, французском, чешском, польском языках.
(Нужно: На стендах представлены афиши на немецком,французском, чешском, польском языках о выступлениях писателя.)
В первом варианте неверный порядок слов создавал двусмысленность,
а) употребление управляемого слова не в том падеже, которого требует управляющее слово:
О том, каких результатов мы добились, показано в таблице № 1.
(Краткое причастие показано требует, чтобы управляемое слово стояло в В.п.) Правильный вариант: То, каких результатов мы добились, показано в таблице № 1)
б) нарушение управления при синонимичных словах
— уверенность в победу.
Синонимичные слова уверенность — вера требуют постановки слова в разных падежах: уверенность (в чем?) в победе, вера (во что?) в победу;
в) нарушение управления при однородных членах предложения
— покрывает и потворствует дурным наклонностям.
Однородные члены предложения требуют от управляемого слова разных падежей: покрывает (что?) дурные наклонности и потворствует (чему? )им;
г) нанизывание падежей
— располагает составленным агентом списком.
(Употребление цепочки зависимых слов в одном и том же падеже создает двусмысленность: имеет список, составленный агентом).
а) неверное соединение
б) двусмысленность из-за возможности отнести один из однородных членов в другой ряд:
Слушатели желали писателю избавления от болезней и здоровья.;
из-за несочетаемости одного из однородных членов с другими словами: окружить вниманием и помощью (можно: окружить вниманием, нельзя — окружить помощью);
в) неверное употребление предлогов и союзов при однородных членах предложения:
детский комплекс на Черном море и Подмосковье — нужно: на Черном море и в Подмосковье;
прочитал не только книги, но и законспектировал их, — нужно: не только прочитал, но и ….
а) неверная форма причастия (не учтены вид, время, залог или падежная форма):
по пути, начертанном великим Глинкой (в данном случае неверна падежная форма причастия: по пути (какому? ) начертанному;
б) неверный порядок слов:
На столе лежала отредактированная рукопись редактором.
Нужно: Рукопись, отредактированная редактором,… или отредактированная редактором рукопись.
а) не учитывается вид деепричастия:
Подъезжая к реке, мы остановили лошадей и бросились в воду.
Нужно: Подъехав к реке, мы остановили лошадей и бросились в воду.
б) не учитывается, что действие деепричастия относится к действию подлежащего:
Подбежав к станции, поезд уже отошел. Приехав в город, было еще темно.
Нужно: Когда мы подбежали к станции, поезд уже отошел. Когда мы приехали в город, было еще темно.
а) загромождение предложения однотипными придаточными:
Он высказал предположение, что его неверно поняли читатели, сказав, что ему представляется совершенно иная трактовка событий.
Нужно: Он высказал предположения, что его неверно поняли читатели, потому что он совершенно иначе представляет трактовку событий.
б) разнотипность частей сложного предложения:
Необходимо помнить, что нужно: 1) оставлять места для заметок, 2) обязательно оформлять сноски, 3) размещение списка литературы по алфавиту.
Нужно: Необходимо помнить, что нужно: 1) оставлять места для заметок, 2) обязательно оформлять сноски, 3)размещать список литературы по алфавиту.
в) смещение конструкции:
Главное, на чем настаивал оратор, — это на учете фактора адресата.
Нужно: Главное, на чем настаивал оратор, — это учет фактора адресата.
г) неверное употребление союзов и союзных слов:
Но однако тем не менее мы должны сказать.
Нужно: Но тем не менее мы должны сказать.
д) неправильный порядок слов в сложном предложении:
Перед нами были лошади казаков, морды которых были в пене.
Нужно: Перед нами были казачьи лошади, морды которых были в пене.
Наша презентация
Предлагаем разгадать онлайн кроссворд и видекроссворд по речевым ошибкам — здесь
Источник
Типичные ошибки в русском языке: грамматические, речевые и орфографические
Самые распространенные ошибки в ЕГЭ по русскому языку:
Классификация ошибок по ФИПИ
Грамматические ошибки
Грамматическая ошибка – это ошибка в структуре языковой единицы: в структуре слова, словосочетания или предложения; это нарушение какой-либо грамматической нормы: словообразовательной, морфологической, синтаксической.
В отличие от грамматических, речевые ошибки – это ошибки не в построении, не в структуре языковой единицы, а в ее использовании, чаще всего в употреблении слова. По преимуществу это нарушения лексических норм, например:
Речевую ошибку можно заметить только в контексте, в этом ее отличие от ошибки грамматической, для обнаружения которой контекст не нужен.
Ниже приводятся общепринятые классификаторы грамматических и речевых ошибок.
Виды грамматических ошибок:
Речевые ошибки
Виды речевых ошибок:
Это ошибки, связанные с употреблением глагола, глагольных форм, наречий, частиц:
Эти ошибки связаны обычно с нарушением закономерностей и правил грамматики и возникают под влиянием просторечия и диалектов.
К типичным можно отнести и грамматико-синтаксические ошибки:
Типичные речевые ошибки (К10)
Это нарушения, связанные с неразвитостью речи: плеоназм, тавтология, речевые штампы; немотивированное использование просторечной лексики, диалектизмов, жаргонизмов; неудачное использование экспрессивных средств, канцелярит, неразличение (смешение) паронимов; ошибки в употреблении омонимов, антонимов, синонимов; не устраненная контекстом многозначность.
К наиболее частотным речевым ошибкам относятся:
Логические ошибки
Логические ошибки связаны с нарушением логической правильности речи. Они возникают в результате нарушения законов логики, допущенного как в пределах одного предложения, суждения, так и на уровне целого текста.
Композиционно-текстовые ошибки
Фактические ошибки
Орфографические, пунктуационные, графические ошибки
При проверке грамотности (К7-К8) учитываются ошибки
Необходимо учитывать также повторяемость и однотипность ошибок. Если ошибка повторяется в одном и том же слове или в корне однокоренных слов, то она считается за одну ошибку.
Графические ошибки – различные приемы сокращения слов, использование пробелов между словами, различных подчеркиваний и шрифтовых выделений. К ним относятся: различные описки и опечатки, вызванные невнимательностью пишущего или поспешностью написания.
Распространенные графические ошибки:
Источник
Нормы синтаксиса в русской речи
Синтаксические нормы требуют правильного построения основных синтаксических единиц — словосочетаний и предложений. Эти нормы включают правила согласования слов, соотнесения частей предложения с помощью грамматических форм слов.
В синтаксические нормы входят правила по согласованию частей речи и синтаксическому управлению, а также соотношения частей предложения между собой. Именно соблюдения этих правил является важным условием построения грамотного осмысленного предложения.
Нарушение синтаксических норм
Синтаксические нормы русского языка – это набор правил, которые регулируют составление предложений и словосочетаний, которое является одним из самых важных условий правильной устной и письменной речи.
Нарушение синтаксических норм есть в следующих примерах:
Чтобы получить представление о важности изучения синтаксических норм, можно привести лишь несколько самых распространенных нарушений синтаксических норм:
При построении словосочетаний используются связи управление, согласование и примыкание.
Нормы управления
Управление — это вид подчинительной связи, при которой зависимое слово ставится в определённом падеже.
Например, в предложении Разрешите поздравить и выразить вам свою признательность сделана ошибка в управлении при употреблении однородных членов. Первое сказуемое не согласуется с дополнением вам. Правильно так: Разрешите поздравить (кого?) вас и выразить (кому?) вам свою признательность.
Несогласованность часто наблюдается в предложениях с причастными оборотами: с некоторыми словосочетаниями, приведённых в упражнении, надо было составить предложения. Правильно так: с некоторыми словосочетаниями (какими?), приведёнными в упражнении, надо было составить предложения.
Читайте также стих Пушкина «Памятник» – один из самых знаменитых.
Употребление предлогов
Предлоги благодаря, согласно, вопреки требуют дательного падежа: Поезд отправился в рейс согласно расписанию. Согласно договору исполнителем должны быть выполнены следующие виды работ. Он действовал вопреки предписанию.
Запомните формы существительных с предлогом по: по истечении, по окончании, по заключении; по приезде сдайте отчёт о командировке, скучаю по вас (допустимо: по вам).
Употребление предложений с однородными членами
Ошибочно употребление в качестве однородных членов полной и краткой форм прилагательного: Деревья высокие и стройны. Нужно говорить: Деревья высоки и стройны (высокие и стройные).
Ошибочно употребление в качестве однородных членов существительного и инфинитива: Прошу тишины и выслушать меня. Нужно говорить: Прошу тишины и внимания.
Употребление деепричастных оборотов
Деепричастные обороты не употребляются:
Ошибка: Заглянув в тёмную комнату, мне стало почему-то страшно. Правильно: Заглянув в тёмную комнату, я почему-то испугался.
Ошибка: Анализируя стихотворный текст, мной был неверно определён размер. Правильно: Анализируя стихотворный текст, я неверно определил размер.
Действия, выраженные глаголом-сказуемым и связанным с ним деепричастием, должны относиться к одному лицу или предмету.
Ошибка: Поднявшись по крутому склону горы, перед нами открылся великолепный вид на море. Правильно: Когда мы поднялись по крутому склону горы, перед нами открылся великолепный вид на море.
Употребление сложноподчинённых предложений
Ошибочно одновременно использовать в сложноподчинённом предложении синонимичные союзы:
Ошибка: В этом году наша команда подготовилась к соревнования лучше, чем нежели в прошлом. Правильно: В этом году наша команда подготовилась к соревнованиям лучше, чем (или нежели) в прошлом.
При последовательном подчинении следует избегать повторения одинаковых союзов, если это не оправдано стилистически:
Ошибка: Дай мне солонку, которая находится в буфете, который стоит на кухне. Правильно: Дай мне солонку, которая находится в буфете, что стоит на кухне.
Определительное придаточное с союзным словом который не должно отрываться от определяемого слова в главном предложении:
Ошибка: Из путешествий по разным странам, которые он совершал на автомобиле, он всегда привозил сувениры. Правильно: Из путешествий, которые он совершал на автомобиле по разным странам, он всегда привозил сувениры.
Допускаются ошибки в предложениях с косвенной речью. Заменяя прямую речь косвенной, нужно помнить, что это разные конструкции. Необходимо заменять формы первого лица подлежащего и глагола-сказуемого и правильно выбирать средства связи частей предложения: Лермонтов писал: «Люблю отчизну я…» — Лермонтов писал, что он любит отчизну. Она спросила: «Ты придёшь?» — Она спросила, приду ли я.
Таким образом, синтаксические нормы русского литературного языка регламентируют построение словосочетаний и предложений. Ошибки чаще всего связаны с неправильным выбором управляемой формы в словосочетании, нарушением согласования подлежащего и сказуемого, использованием причастных и деепричастных оборотов, а также построением некоторых типов сложных предложений.
Источник
Разновидности ошибок
Чтобы понимать, что представляют собой такие нарушения речи, важно видеть разницу. Существует несколько видов ошибок, которые отличаются в зависимости от неверных формулировок, неправильного использования времен глаголов, построения предложения в целом и много другого.
Нарушения структуры сочетания слов:
Построение блоков с потерей смысловой нагрузки:
Неверное формирование простых двусоставных структур:
Неправильное построение предложений с одним главным членом:
Ошибки при образовании вводных слов и композиций:
Построение неверных конструкций с синтаксически самостоятельными членами:
Ошибки при отображении прямой и косвенной речи:
Неправильное формирование композиций с несколькими главными членами:
Неверное составление конструкций сложноподчинённого типа:
Ошибочное составление сложных блоков без союзов и союзных слов:
Неправильное формирование сложных блоков с применением связующих способов разного типа:
Чтобы исключить из текста или речи ошибки такого рода, нужно знать и применять на практике установленные нормы и правила.
Способы исправления
Для того чтобы знать, как исправить синтаксическую ошибку, нужно провести тщательный анализ текста. Выявив смысловые провалы и логические несоответствия, можно приступать устранению несоответствий содержания грамматическим нормам русского языка.
Номера в списке исправления ошибок соответствуют порядку в перечне «Разновидности ошибок»
Список методов исправления ошибок:
Кроме того, нельзя допускать нарушение логической последовательности частей при образовании сложных элементов текста.
Примеры допущенных погрешностей
Наглядные модели предложений, содержащих синтаксические нарушения, помогают более глубоко понять правила русского языка и не позволяют допустить погрешность.
Синтаксические ошибки, примеры:
Виды синтаксических ошибок и способы их исправления можно изучить более подробно по многочисленным таблицам, широко представленным в специализированной литературе, а также пройти пробное задание.
Источник
Мелькумянц
Н.В
учитель русского языка
МАОУ гимназия «Мариинская»
г. Таганрог
Синтаксические ошибки в речи учащихся
(материалы к спецкурсу по «Культуре речи»)
Синтаксическая норма – это правила
построения словосочетаний и предложений. Типичные синтаксические ошибки в
речи учащихся:
1.
Нарушение согласования.
2.
Употребление несогласованных приложений.
3.
Нарушение управления.
4.
Нарушение связи между подлежащим и
сказуемым.
5.
Ошибки в построении предложений с
однородными членами.
6.
Ошибки в построении предложений с
деепричастным оборотом.
7.
Ошибки в построении предложений с
причастным оборотом.
8.
Ошибки в построении сложного предложения.
9. Смешение
прямой и косвенной речи.
1. Нарушение
согласования.
Имена
прилагательные и причастия согласуются в роде, числе и падеже с определяемым
именем существительным. Типичные ошибки:
1) Петя был младший сыном в
семье Ростовых ( имя прилагательное не согласуется в Тв. п. с именем
существительным – младшим сыном);
2) нужно обратить внимание на согласование
определения, выраженного причастным оборотом, с определяемым словом: Я
знаком с группой ребят, серьёзно увлекающимися джазом (причастный
оборот ошибочно согласован не с тем членом предложения; определяемое слово к
причастному обороту – группой (какой?) серьёзно увлекающейся
джазом);
3)
ошибки в грамматической форме определения при количественно-именном сочетании:
при существительных мужского и среднего рода, зависящих от числительных два,
три, четыре, определение ставится в форме именительного падежа
множественного числа: два красивых платья, три спелых яблока, четыре сладких
апельсина;
при
существительных женского рода, зависящих от числительных два, три, четыре,
определение ставится в форме именительного падежа множественного числа: две
модные блузы, четыре спелые дыни.
2. Употребление
несогласованных приложений
1)
Нужно
помнить, что названия книг, газет, журналов и т.п., заключённые в кавычки, не
изменяются, если относятся к нарицательному существительному: Об это писали
в газете « Известия». Если нарицательного существительного нет, имя собственное
может изменяться: Об этом писали в «Известиях».
2)
Приложения-прозвища
не изменяются: у Всеволода Большое Гнездо.
3)
Существительные
– названия городов – согласуются в падеже с определяемым словом: в городе
Таганроге, в городе Москве.
3
. Нарушение управления.
В
конструкциях с управлением часто встречаются следующие ошибки:
1) употребление предложного сочетания вместо
беспредложной конструкции — установить о причинах болезни (правильно: установить
причины болезни);
2) беспредложная конструкция вместо предложного
сочетания – характерная им особенность (правильно: характерная для
них особенность);
3) неправильный выбор предлога — рецензия о книге
(правильно: рецензия на книгу).
Необходимо
уметь правильно ставить вопрос к управляемому слову:
Заслуживать
+ сущ. Р.п.
Заслужить
+ сущ. В.п.
Оскорбиться
+ сущ. Т.п.
Обидеться
+ на + сущ. В.п.
Пренебрегать
+ сущ. (мест.) Т.п.
Игнорировать
+ сущ. (мест). В.п.
Ограничить
+ сущ. В.п. + от + сущ. Р.п. +в + сущ. П.п.
Отличаться
+от + сущ. Р.п. + в + сущ. П.п.
Различаться
+ сущ. Т.п.+ по + сущ. Д.п.
Различить
+ сущ. В.п.
Оплатить
+ сущ. В.п.
Заплатить
+ за + сущ. В.п.
Уплатить
+ за + сущ. В.п.+ сущ. В.п.
4)довольно часто в заданиях
встречаются предложения, в которых грамматические ошибки допущены в падежной
форме существительного или местоимения, стоящего после предлога. Наиболее
распространенными являются следующие случаи:
а) употребление предлога по. В
значении «после чего-либо» предлог по управляет П.п (по приезде в
Москву = после приезда в Москву; по истечении срока = после истечения срока и
т.п). По прибытии домой (= после прибытия домой) он чувствовал себя плохо.
б) употребление предлогов благодаря,
согласно, вопреки. Данные предлоги употребляются только с Д.п.
(благодаря учителю, согласно приказу, вопреки ненастью).
4. Нарушение
связи между подлежащим и сказуемым.
а)
сказуемое согласуется с подлежащим, а не с его приложением: Девушка-пилот
умело вела машину;
б)
сказуемое при вопросительном местоимении КТО ставится в форме единственного
числа, а в прошедшем времени – в мужском роде: Кто из девочек умеет
танцевать? Кто вчера опоздал?
в)
сказуемое при неопределённых и отрицательных местоимениях некто, кто-то,
никто и других ставится в единственном числе ( в прошедшем времени – в
форме мужского рода: Кто-то (скорее всего, трёхлетняя Любаша) нарисовал
в углу каждого чертежа симпатичный цветочек;
г)
с подлежащим, выраженным заимствованным несклоняемым существительным, сказуемое
согласуется в соответствии с грамматическим родом, установленным для данного
слова в русском языке: Шимпанзе взобрался на верхушку дерева;
д)согласование
сказуемого во множественном числе при наличии нескольких однородных подлежащих:
Свежий воздух и спорт полезно для здоровья детей и взрослых – воздух
и спорт полезны).
5. Ошибки
в построении предложений с однородными членами
Типичные
ошибки:
1)Побывали не только на Кавказе, а также в Крыму.(причина
ошибки – неправильно подобраны компоненты двойного союза; правильно: … не
только на Кавказе, но и в Крыму.
2)Эта книга научила меня честности, смелости и уважать своих
друзей.( причина ошибки – разные способы морфологического выражения
однородных сказуемых); Струи фонтана, бившие в самое небо, и которые
искрились на солнце, освежали воздух (в однородный ряд объединяются
причастный оборот и придаточное предложение).
3) В книге описывается
происхождение религии и как она развивалась.(причина ошибки –
соединение неоднородных синтаксических конструкций : в однородный ряд
объединяется член предложения и придаточное предложение).
4)
Страна любила и гордилась
поэтом. ( причина ошибки: глаголы-сказуемые управляют существительными в
разных падежах; правильно: Страна любила (кого? что?) поэта и гордилась (кем?
чем?) им.
5)
Герасим взял щенка и положил к себе за пазуху и пошёл быстрыми шагами
(причина ошибки: союз и, показывающий законченность перечисления,
ставится перед каждым из двух последних однородных сказуемых).
6. Ошибки в
построении предложений с деепричастным оборотом
Деепричастие
обозначает добавочное действие при основном действии, выраженным
глаголом-сказуемым, основное и добавочное действие выполняет один субъект: Приехав
в Москву, я отправился в Третьяковскую галерею (я приехал и отправился).
Выполняя
задание , нужно помнить, что основное и добавочное действие должно совершаться одним
и тем же лицом: Выполняя задание , студенты обращались
к справочной литературе. ( студенты выполняли задание и обращались к
справочной литературе)
Если
в предложении нет подлежащего, то сказуемое должно быть выражено:
1. формой повелительного
наклонения: Выполняя работу, обращайте внимание на..
2. формой 1 или
2 лица изъявительного наклонения: Выполняя работу, обращаю
внимание на..
Выполняя
работу, обращаешь внимание на..
Выполняя работу, обращаем внимание на …
Выполняя работу , обращаете внимание на..
3.
формой
инфинитива в значении повелительного наклонения
Выполняя
работу, следует обратить внимание на…
Деепричастный
оборот не употребляется:
1) если действие,
выраженное сказуемым, и действие, выраженное деепричастием, относится к разным
лицам (предметам): Слушая сказки А.С. Пушкина, вспоминаются русские предания
и былины.
2) если в
безличном предложении есть смысловое подлежащее в косвенном падеже и нет
инфинитива: Вернувшись на родину, мне стало радостно.
7.Ошибки в построении предложений с причастным оборотом:
1) Горная
цепь тянется с востока на запад, состоящая из множества хребтов.(причина
ошибки – неправильное местонахождение причастного оборота; правильно: Горная
цепь, состоящая из горных хребтов, тянется с востока на запад).
2) Живущие
родственники за границей гостили у нас (причина ошибки – определяемое слово
помещается в середине причастного оборота. Правильно: Живущие за границей
родственники гостили у нас; Родственники, живущие за границей, гостили у нас)
8.
Ошибки в построении сложного предложения.
1) Этот
человек стал для меня образцом благородства, у которого я многому научился
(причина ошибки: придаточное зависит от другого слова в главном предложении;
правильно: Этот человек, у которого я многому научился, стал для меня
образцом благородства).
2) В
армии Петя стремился быть в опасных местах, он просился (?), где шли бои.(причина
ошибки: пропуск указательного местоимения в главном предложении – В армии
Петя стремился быть в опасных местах, просился туда, где шли бои.)
3) Как
только перестал дождь, и м ы отправились домой.(причина ошибки:
одновременное употребление подчинительных и сочинительных союзов)
4) Охотник
положил ружьё, привязал собаку. И пошёл к зверю. (причина ошибки: нарушение
границ сложносочинённого предложения). Когда герой опомнился. Было уже
поздно.(причина ошибки: нарушение границ сложноподчинённого предложения)
9. Смешение
прямой и косвенной речи.
С синтаксической точки зрения,
косвенная речь выступает как придаточное предложение в сложноподчинённом, где
роль главного предложения играют авторские слова.
Придаточное
предложение, содержащее косвенную речь, следует за главным и присоединяется к
сказуемому с помощью союзов и относительных слов, характерных для придаточных
изъяснительных: как , что, чтобы, будто, якобы, как будто, где, куда,
когда, откуда, какой, который и пр.
Союз
что указывает на то, что говорящий уверен в достоверности
информации, и употребляется при замене повествовательного предложения чужой
речи.
Мне сказали, что пора
собираться в дорогу.
Союзы будто,
как будто указывают, что говорящий сомневается в точности передаваемой
информации.
Вчера рассказывали, будто
перед этим он выпил целый бочонок вина.
Относительные
слова что, какой, где, когда, куда , вопросительная частица ли
пр. употребляются при замене вопросительного предложения прямой речи.
Ко мне подошла женщина и
спросила, где находится ближайшая аптека.
В косвенной речи личные и
притяжательные местоимения и лица глагола употребляются относительно человека,
передающего чужую речь:
·
Тогда он сказал, что вернётся через час. – Тогда он сказал:
«Вернусь через час».
·
Она попросила, чтобы я зашёл за ней вечером. – Она попросила:
«Зайди за мной вечером».
Обращения, междометия,
звукоподражания и т.п., использующиеся в чужой речи, в косвенной речи
опускаются, а их значение передаётся словами, близкими по смыслу:
·
Я крикнул: «Эй! Ты, случаем, не заблудился?» — Я окликнул его и
спросил, не заблудился ли он.
Теория.
Правила построения косвенной речи:
1) форма
1-го лица глагола заменяется на 3-е лицо;
2) личные
местоимения 1-го, 2-го лица, притяжательные мой, твой заменяются
местоимениями 3-го лица или употребляется имя существительное ( Друзья
побывали в театре и в один голос заявили: «Очень уж понравился нам этот
спектакль!»;
3) если
чужая речь представляет собой побудительное предложение, то форма
повелительного наклонения заменяется формой сослагательного наклонения с
союзом чтобы ( Капитан приказал, чтобы подняли флаг); 4) если
чужая речь дана в форме вопросительного предложения, то вопросительное
местоимение или наречие становятся относительными, употребляются как союзные
слова; при отсутствии вопросительных местоимений и наречий в косвенную речь
вводится ли в качестве подчинительного союза (Я спросил, когда
отправляется поезд; Я спросил, отправляется ли поезд.);
5) при
замене прямой речи косвенной нейтрализуется стиль чужой речи: изменяется
порядок слов, опускаются частицы эмоционального характера, междометия,
обращения, вводные слова: Она сказала: «Хорошо, я
это сделаю». – Она сказала, что это сделает;
6) замена
прямой речи косвенной невозможна, если чужая речь представляет собой
эмоциональное восклицательное предложение; Обращения, междометия,
звукоподражания и т.п., использующиеся в чужой речи, в косвенной речи
опускаются, а их значение передаётся словами, близкими по смыслу: Я крикнул:
«Эй! Ты, случаем, не заблудился?» — Я окликнул его и спросил, не заблудился ли
он.
Типичные
ошибки:
1) Объединение
прямой речи и слов автора: Перед войной отец сказал мне: «Ухаживай за матерью и
ушёл на фронт»
2) Употребление
прямой речи без слов автора: Дети увидели баркас: «Папа!»
3) Автор
сказал, что я не согласен с мнением многих. – правильно: Автор сказал, что
он не согласен с мнением многих.
Дидактический материал
1. Нормы управления
Упражнение
1.
Перепишите, раскрывая скобки и выбирая нужную падежную форму. Укажите возможные
варианты.
Искать (помощь, помощи), искать (счастье, счастья),
искать (славы, славу); требовать (деньги, денег), требовать (билет, билета);
страшиться (расправу, расправы); бояться (мать, матери).
Упражнение
2. Перепишите,
раскрывая скобки, употребив управляемое слово в нужном падеже. При работе над
упражнением используйте «Словарь трудностей русского языка» Д.Э. Розенталя и
М.А. Теленковой. М., 1985.
Свойственный (ты), характерный (он), жажда
(месть), жаждать (мир), избегать (ошибка), уверенность (правда), неверие
(успех), вера (человек), начать (работа), приступить (расследование), награжден
(грамота), удостоен (награда), упрекать (грубость).
×
Упражнение
3. Составьте словосочетания
«глаг. + сущ.», в качестве главного компонента употребите следующие слова: верить,
обеспокоиться, добиться, удивляться, восхищаться, преклоняться, опираться,
основываться, базироваться, обвинять, предупреждать, предостерегать,
использовать.
×
Упражнение
4. Составьте словосочетания «сущ. + сущ.», в качестве
главного компонента употребите следующие слова: уверенность, преимущество,
жажда, беспокойство, тревога, обида, рецензия, отзыв, гордость.
Упражнение
5. Выберите из скобок нужный глагол и вставьте его в предложение,
соблюдая нормы управления. Определите падеж управляемого слова. При работе
используйте следующую подсказку.
Заслуживать + сущ. Р.п.
Заслужить + сущ. В.п.
Оскорбиться + сущ. Т.п.
Обидеться + на + сущ. В.п.
Пренебрегать + сущ. (мест.) Т.п.
Игнорировать + сущ. (мест). В.п.
Ограничить
+ сущ. В.п.
+
от + сущ. Р.п.
+в
+ сущ. П.п.
Отличаться +от + сущ. Р.п.
+ в + сущ. П.п.
Различаться + сущ. Т.п.
+ по + сущ. Д.п.
Отличить + сущ. В.п.
+ от + сущ. Р.п.
Различить + сущ. В.п.
Оплатить + сущ. В.п.
Заплатить + за + сущ. В.п.
Уплатить + за + сущ. В.п.
+ сущ. В.п.
1. Язык моряков крепок, свеж, полон
спокойного юмора. Он (заслужить, заслуживать) отдельного исследования
(К. Паустовский). 2. Они вполне (заслужить, заслуживать) свое положение и
счастье (В. Каверин). 3. …Незадолго до смерти Андерсен сказал одному
молодому писателю: «Я (оплатить, заплатить, уплатить) за свои сказки большую и,
я бы сказал, непомерную цену. Я отказался ради них от своего счастья…»
(К. Паустовский). 4. К счастью, самозванец или не расслышал, или
(пренебрегать, игнорировать) неуместным намеком (А. Пушкин). 5. Потом,
когда начнется настоящее разногрибье, маслятами как-то (пренебрегать,
игнорировать), и, между прочим, зря (В. Солоухин). 6. Пусть же не
(оскорбиться, обидеться) ее милая тень этим поздним цветком, который я
осмеливаюсь возложить на ее могилу (И. Тургенев). 7. Николай Иванович
теперь даже и не (оскорбиться, обидеться) на эти слова (И. Тургенев). 8.
Чем, например, (отличаться, различаться) спорый дождь от грибного?
(К. Паустовский). 9. Природа словно хотела резко (отличить, ограничить)
здесь прибрежный район от бассейна реки Имана (И. Арсеньев). 10. Не мог он
ямба от хорея, как мы ни бились,…(отличить, различить) (А. Пушкин).
Упражнение 6.
Составьте словосочетания с глаголами бороться (с чем? против
чего?), добавить (что? чего?), требовать (чего?
что?), властвовать (над кем? чем?).
Упражнение 7.
Исправьте ошибки, допущенные в следующих предложениях, и запишите предложения в
исправленном виде. Какие нормы управления в них нарушены?
1. Преподаватель написал отзыв на мою
работу. 2. В газете появилась рецензия о новом фильме. 3. Больше внимания
следует уделять на повторение. 4. Он ждал решение суда. 5. Лицеисты выступали с
верой в успехе. 6. Сестра тревожилась о брате. 7. Им руководила жажда в
деятельности. 8. Выступающие отметили о недостатках успеваемости. 9. Он не
обиделся этими словами. 10. Учитель отметил о недостатках контрольной работы.
11. Пенсионерам сейчас трудно оплачивать за квартиру. 12. Он был осужден к
десяти годам лишения свободы. 13. Мы надеемся о том, что полугодие вы закончите
успешно.
2.Синонимия форм главных членов
предложения
Согласование сказуемого с подлежащим
Упражнение 8.
Определите способы выражения подлежащего в следующих предложениях, укажите
стилистическое различие между ними.
1. Любить тебя – большое испытание. Любовь
к тебе – большое испытание.
2. Учиться – всегда пригодится (посл.).
Учение всегда пригодится.
3. Как-то незаметно у нас вошло в обычай
читать вслух короткие чеховские рассказы. Как-то незаметно у нас вошло в обычай
чтение вслух коротких чеховских рассказов.
4. Обучение речевой деятельности на чужом
языке – трудная задача. Обучать речевой деятельности на чужом языке – трудная
задача.
Упражнение 9.
Определите способы выражения простых глагольных сказуемых, укажите
стилистическое различие между ними.
1. И в волны вмиг прыгнул пловец
нетерпеливый (А. Пушкин). – Вот поравнялись мы с телегой …вдруг великан
в полушубке прыг с неё долой – и прямо к нам! (И. Тургенев).
2. Генерал резко остановил машину
возле своей палатки (В. Катаев). – Только как назвал я тебя, батюшка, так
она вдруг и останови коня (А. Толстой).
Упражнение 10.
Укажите стилистическое различие в способах выражения составного именного сказуемого.
1. Небо было ясно, чисто…
(А. Куприн). Небо было ясное, чистое.
2. Я на неё не в обиде
(К. Паустовский). Я на неё не обижен.
3. Егор Семеныч был высокий, широкий в
плечах… (А. Чехов). Егор Семеныч был высок, широк в плечах.
4. Труд есть борьба человека с природою
(Д. Писарев). Труд является борьбой человека с природою. Труд – борьба
человека с природою.
Упражнение
11. К каким из выделенных главных членов предложения
можно подобрать синтаксические синонимы? Определите способы выражения главных
членов. В чем их смысловые и стилистические различия?
1. Работать в художественной
мастерской было для него наслаждением. 2. Повторение изученного
перед экзаменом совершенно необходимо. 3. Возвращаться в театр
теперь было для него невозможным. 4. Покровительство слабым,
беззащитным стало потребностью её души. 5. Она (мартышка) тихохонько медведя толк
ногой (И. Крылов). 6. Она садилась на скамеечку
около шалаша и принималась думать (А. Чехов). 7. Степан
стоял рядом и не смел подойти к ней (Г. Николаев). 8. И
вдруг вся его собственная жизнь… представилась ему такой же печальной
и одинокой, как эта ночная дорога. 9. Все выходило каким-то серым,
далеким, равнодушным, не трогающим сердце (А. Куприн). 10.
Он был ловок, хищен, силен, жесток (М. Горький). 11. Теперь
я понимаю, что он был мечтатель (К. Паустовский). 12.
Я на неё не в обиде (К. Паустовский). 13. Поезд был
в непрерывном движении (К. Паустовский).
Упражнение
12. Какое значение и стилистическую окраску приобретает
сказуемое, если его именная часть стоит в именительном или творительном падеже,
выражена краткой или полной формой прилагательного? Запишите предложения,
подчеркните сказуемые.
1. Тиха украинская ночь. Прозрачно небо.
Звезды блещут. 2. Как тополь киевских высот, она стройна. 3. Из шатра,
толпой любимцев окруженный, выходит Петр. Его глаза сияют. Лик его ужасен.
Движенья быстры. Он прекрасен. 4. Петушок мой золотой будет верный сторож твой
(А. Пушкин). 5. Воздух чист и свеж, как поцелуй ребенка
(М. Лермонтов). 6. Я самый смирный стал теперь человек (Л. Толстой).
7. Теперь Васька врачом в уезде. 8. Это я только к тебе добрый
(М. Горький). 9. Стали теперь безопасны для проезда лесные тропы. 10. У
Ивашкиных он был своим человеком (А.Чехов). 11. В то время был ещё жених её
супруг. 12. Вся жизнь моя была залогом свиданья верного с тобой 9А.Пушкин).
Упражнение
13.
Проанализируйте формы сказуемых в следующих предложениях. Чем объясняется в них
выбор форм множественного или единственного числа? Какие факторы являются
предпочтительными при выборе той или иной формы?
1. Несколько рыбачьих баркасов заблудилось в море (А. Куприн).
2. Несколько матросов… вышли как-то в море на этом катере (А. Куприн). 3.
…Вспыхнуло множество огней и ослепило Лизу (К. Федин). 4. Приехало
множество народу (Л. Петрушевская). 5. Большинство писем было доставлено
днем (К. Лидин). 6. Большинство
пассажиров дремали (К. Паустовский).
Упражнение
14.
Выберите один из указанных в скобках синонимичных вариантов сказуемых.
Сопоставив ваш выбор с авторским вариантом, попытайтесь мотивировать последний.
1. Мать у меня (была красивой,
была красавица, была красива), прямо цыганка (К. Паустовский). 2.
Настоящая мудрость (является немногословной, немногословна, немногословная)
(Л. Толстой). 3. Но все-таки мне обидно, что моя мать, всегда
такая строгая и красивая, – теперь (такая некрасивая и смешная, так
некрасива и смешна) (М. Горький). 4. В слове (скрывается, сокрыта) самая
великая энергия, известная на земле, – энергия человеческого духа
(Ф. Абрамов). 5. Синцов тоже (решил ложиться, собрался ложиться, намерен
был ложиться, намеревался ложиться), как дверь вдруг отворилась
(К. Симонов). 6. Члены «Среды» (имели возможность влиять, могли
влиять) на самые разнообразные стороны жизни (Н. Телешов).
Авторские варианты: 1) была красавица; 2)
немногословна; 3) так некрасива и смешна; 4) сокрыта; 5) собрался
ложиться; 6) имели возможность влиять.
Упражнение
15.
Найдите грамматико-стилистические ошибки в употреблении
составного сказуемого. Запишите предложения в исправленном виде.
1. Работники отдела оказались глухие к критике. 2. Все
становится ясно, когда мы начинаем разбирать это дело. 3. Этот человек сделался
невозможный. 4. Себя же режиссер видел как разрушителя старых, косных,
отживших, по его мнению, форм и как искателя новых форм театра. 5. Эта книга
полезная и интересная, но не свободна от некоторого схематизма. 6. Этот человек
был больной гриппом. 7. Сергей считает себя как удачливого человека. 8. Девочка
стала безразличная ко всему окружающему.
Упражнение
16.
Найдите и исправьте грамматические ошибки в согласовании сказуемого с
подлежащим. Запишите предложения в исправленном виде.
1. Молодежь собирались в парке на митинг. 2. Родня его
не любили. 3. Группа запорожцев хотели написать письмо турецкому султану. 4.
Вдруг перед ним возникло три громадных фигуры. 5. На дворе у него воспитывались
несколько медвежат. 6. Собака Дик увидел палку. 7. В нем мне понравилось любовь
к Маше и искренность по отношению к Пугачеву. 8. На моем попечении была
старая бабушка и мой маленький братишка. 9. Доброта и ум отличал нашу первую
учительницу. 10. Он наблюдал из-за угла, не идут ли кто. 11. В дискуссии
участвовали много ученых. 12. Несколько мужчин и женщин стояло у ворот
больницы.
3. Синтаксические нормы в структуре
простого
осложнённого предложения
Упражнение
17.
Однородные члены предложения чаще всего выполняют следующие стилистические
функции:
1) служат
средством детального описания предмета, обстановки, действия и т.п.;
2) передают эмоциональное отношение к описываемому;
3) выступают в качестве средства
создания портрета персонажа.
Определите
стилистическую роль однородных членов в следующих предложениях:
1.
Привольно
зеленеют кругом хлеба и травы (И. Бунин).
2. У печи солдат в грубой рубахе, и галстуке, и черных штанах, и в
одном сапоге с желтым голенищем (Л. Толстой). 3. Есть в светлости
осенних вечеров умильная, таинственная прелесть… (Ф. Тютчев). 4. Помню
большой, весь золотой, подсохший и поредевший сад… (Н. Бунин). 5. От
глухой лесной опушки до невидимой реки встали танки, кухни, пушки, тягачи,
грузовики… (А. Твардовский). 6. Что, дремучий лес, призадумался, грустью
темною затуманился? (А. Кольцов). 7. Во всех комнатах – в лакейской, в зале,
в гостиной – прохладно и сумрачно (И. Бунин).
8. Луна сияла и томным светом озаряла Татьяны бледные красы, и распущенные
власы, и капли слез (А. Пушкин). 9. Захар смотрел то на солнце, то на
широко раскрывшийся после косьбы степной простор… (И. Бунин).
Упражнение 18. Выразительно
прочитайте стихотворение. Найдите в нем однородные члены предложения.
Определите, какова их стилистическая роль.
Туча черная
Понахмурилась…
Ополчается –
Громом, бурею,
Огнем, молнией.
Дугой – радугой
Ополчилася,
И расширилась,
И ударила,
И пролилася
Слезой крупною…
(А. Кольцов)
Упражнение 19. Определите
разновидности речевых и стилистических ошибок при однородных членах,
характеризуя их как: 1) объединение сочинительной связью слов, обозначающих
логически несопоставимые понятия; 2) неодинаковое морфологическое оформление
однородных членов предложения; 3) несоответствующее норме употребление союзов;
4) чрезмерное удлинение ряда однородных членов; 5) объединение сочинительной
связью разнотипных синтаксических единиц. Запишите предложения
в исправленном виде.
1. Изменивший присяге и общаясь с Пугачевым, Швабрин
показал свой характер и плохие черты. 2. Автор говорит не только о ее внешней
красоте, а и о внутренней. 3. Добрыня был честным, умным, благородным,
мужественный и порядочный.
4. Я бы хотел завести собаку для интереса и чтобы было весело. 5. Люди и
дети будут радостные ходить по улицам. 6. Листья
в лесу пахнут ягодами, зеленью, природой и грибами. 7. Девочка любит чистоту,
декоративную посуду и читать книги. 8. Они шли по улице быстро и разговаривая о
чем-то своем. 9. Дон Кихот был высок и худой. 10. После праздника мы шли домой
с подарками и отличным настроением. 11. Во всех своих рассказах Чехов высмеивал
тех, кто был хамелеоном и тщеславен. 12. В характере Гаврика особенно
проявились хитрость, осторожность, зоркость, смелость, большая сила воли,
настоящая рыбацкая гордость, выносливость, терпеливость, содержательность,
заботливость. 13. Он увидел молодую девушку – грузинку, пришедшую за водой
и которая поразила его своей красотой. 14. Когда гулял по городу и увидев
несчастных детей – сирот, он задумал написать картину.
Упражнение 20. Найдите и
исправьте ошибки, связанные с построением предложений с однородными членами.
Определите причины данных ошибок. Запишите предложения в исправленном виде.
1.
Комната мне нравится, потому что в ней светло, уютно. Большая и чистая. 2.
Мальчик был лобастый, но очень серьезный. 3. После этого изобрели стальное
перо, чернильную ручку, авторучку, шариковую ручку, капиллярную ручку. 4. В шкафу
стоят книги, на полках лежат газеты и стеклянная посуда. 5. Тревога и тоска
застыла в их глазах. 6. Девочки спрыгнули с лодки и бегут к морю. 7. Море после
шторма спокойное, веселое и играет лучами солнца. 8. Все были рады, счастливы и
веселые. 9. Дети были очень веселые и радующиеся. 10. Вода была голубая и
спокойная. 11. Их отец был опытным рыбаком и отважный мореход. 12. Все очень
ждут и переживают за рыбаков. 13. Наташа помогала матери по хозяйству. Следила
и укладывала спать маленького братишку. 14. Оля забавляла и смеялась вместе с
ребенком. 15. Несколько человек пытались решить и задумались над задачей.
16. Я люблю бокс, хоккей и плавать в бассейне. 17. Все мы радовались и
гордились успехом команды. 18. Залогом успеха является контроль и руководство
за университетской работой. 19. Для меня счастье – это хорошая семья, любимый
человек. Призвание и верные друзья.
Упражнение
21. За счет чего создается комический эффект в следующих
примерах?
1. Этот скандал, несмотря на свою видимую ничтожность,
обошелся ему очень дорого. Благодаря ему он потерял свою новую форменную
фуражку и веру в человечество (А. Чехов). 2. Любит жаловаться больным
на свое здоровье и порядки в поликлинике (Г. Горин). 3. Катя любила Петю и
английский язык (С. Лившин). 4. Он обещал на съезде, что родит роман и
сына (И. Ильф). 5. Бью чечетку и баклуши (В. Русанов). 6. Все
смешалось в голове Анны Львовны, а потом и в доме. 7. Он… сначала вышел из
народа, а потом из гоголевской шинели (И. Двинский). 8. Она принуждена была
встать с своего ложа в негодовании
и в папильотках. 9. Штабс-капитан …явился опять в нашем городе… с своею сестрой
и с новыми
целями (Ф. Достоевский). 10. Приобрел большое состояние и дурную славу
(К. Валишевский).
Упражнение 22. Перестройте
предложения так, чтобы обособленные определения стали необособленными. Что
изменилось при этом в содержании предложения и в его пунктуационном оформлении?
1. Потом пришла весна, яркая, солнечная
(М. Горький).
2. А через минуту, скупой и редкий, пошел дождь (М. Шолохов).
3. Судно, взявшее меня на борт, называлось «Нырок» (А. Грин). 4.
Берега стояли во мгле, неясные, таинственные, как будто прислушиваясь к шороху
все прибывающей реки (В. Короленко). 5. Мне навстречу, чистые и ясные,
словно тоже облитые утренней прохладой, принеслись звуки колокола
(И. Тургенев).
Упражнение 23. Прочитайте
стихотворение.
Найдите
в нем обособленные определения. Какие стилистические функции они выполняют?
Замените обособленные определения необособленными. Какие определения (обособленные
или необособленные) обладают большей выразительностью?
Много былей я знаю, веселых и грустных,
О хлебах, испеченных на листьях капустных,
О замешанных круто духмяных опарах,
О колосьях, наполненных солнечным жаром,
О зерне крутобоком в пыльце желтоватой,
Что лежит на ладони, сухой и щербатой;
О ладони, что стала от стужи лиловой,
И о стуже степной, по-январски суровой.
(Н. Полякова)
Упражнение 24. Охарактеризуйте
грамматические ошибки, связанные с употреблением причастных оборотов: 1) нарушение
согласования причастия с определяемым словом; 2) нарушение места расположения
причастного оборота по отношению к определяемому слову; 3) включение в состав
причастного оборота союзов и союзных слов. Исправьте ошибки.
1. Если человек хорошо знающий местность, он не
заблудится. 2. В поэме «Мцыри» рассказывается о судьбе грузинского мальчика,
отданного на воспитание монахам и тосковавшем по свободной жизни. 3. Дети
спешат к реке, приехавшие в лагерь. 4. Этой пятерке я очень обрадовался,
полученной мной впервые в жизни. 5. Плющ, который вьющийся по стене,
украшает комнату, радует глаз. 6. Кот, так как удивленный случившимся, перестал
с этого дня красть. 7. Вошедший был одет в крестьянский армяк, обросший
бородой. 8. Обожжённое лицо морозом горело. 9. От ледяного панциря,
прикрывающие Антарктиду, откалываются огромные айсберги. 10. Солнечный луч
освещал падающие листья с деревьев.
Упражнение
25.
Замените деепричастные обороты придаточными предложениями. Изменилось
ли содержание предложений? Какие из предложений более характерны для устной
речи?
1.Набрав
в лесу много грибов, мы отправились домой. 2. Неожиданно заболев, студент не
пришел на занятия. 3. Подъезжая к деревне, мы заметили начавшийся в одном
доме пожар. 4. Вы сможете отдохнуть, только полностью закончив свою работу.
5. Очень уважая своего друга, я все же не могу выполнить его просьбу. 6.
Не повторив старое, не усвоишь новое.
Упражнение 26. Исправьте ошибки в
следующих предложениях с деепричастными оборотами.
1.
Привыкнув к тяжким крестьянским работам, обязанности дворника казались Герасиму
шуткой. 2. Получив известие о Павле, радость охватила Ниловну. 3. Изучая «Слово
о полку Игореве», у нас возник вопрос, кто автор этого произведения. 4. Включив
радио, раздались звуки музыки. 5. Поднимаясь по лестнице, мне навстречу попался
взволнованный сосед.
Упражнение 27. Найдите и
исправьте ошибки в построении простых предложений с обособленными членами.
Запишите предложения в исправленном виде.
1. Но с деревом опять произошло несчастье: его ветви
обрубили, расположенные низко. 2. Прочитав вторично рукопись, мне думается, что
она нуждается в серьёзной доработке. 3. На картине изображена девочка, которая
только вставшая. 4. Вблизи лодки раскинутую на шестах мы видим сеть. 5.Арестованный
тревожился о семье, взятой под надзор полицией и которую он оставил без всяких
средств к существованию. 6. Он, выпив полковша, и другую половину вылил на
себя. 7. Отдыхая в кресле, передо мной висит картина Левитана «Март».
Упражнение 28. Прочитайте.
Проанализируйте экспрессивно-стилистическую роль обращений в данных примерах
(обращения-метафоры, обращения-метонимии, обращения-перифразы,
обращения-иронии, обращения-повторы, риторические обращения,
обращения-олицетворения).
1.
От
дружной ветки отлученный,
Скажи, листок уединенный,
Куда летишь?
(В. Жуковский)
2.
Промчалось
ты, златое время!
(Е. Баратынский)
3.
О
милый, тихий городок,
Мой старый, верный друг …
(И. Северянин)
4.
О,
говори хоть ты со мной,
Подруга семиструнная!
(А. Григорьев)
5.
О
Русь! В тоске изнемогая,
Тебе слагаю гимны я.
(Ф. Сологуб)
6.
Приветствую
тебя, пустынный уголок,
Приют спокойствия, трудов и вдохновенья.
(А. Пушкин)
7. Отколе, умная, бредёшь ты, голова?
(И. Крылов)
8. О поле, поле,
кто тебя усеял мёртвыми костями? (А. Пушкин)
1. А вы,
надменные потомки, известной подлостью прославленных отцов… Таитесь
вы под сению закона…
(М. Лермонтов).
2. Куда
лезешь, борода? Говорят тебе, никого не велено пускать (Н.Гоголь).
3. Шуми,
шуми, послушное ветрило, волнуйся подо мной, угрюмый океан (А
Пушкин).
4. А! Золото!
Добро пожаловать. Ты что же, молодчик, оброка не платишь? (М.
Салтыков-Щедрин)
Упражнение 29. Сравните варианты
текстов, одинаковых в содержательном плане. Найдите синонимичные синтаксические
конструкции в обоих вариантах. Какие из них позволяют сделать речь более
лаконичной, придать ей непринужденный характер, более тесно связать
предложения?
1. Семен! Я очень сожалею, что должен сообщить Вам
неприятное известие. Должен Вам признаться, что мне очень не хотелось писать,
но я не сомневаюсь, что услышать дурную весть от кого-либо другого Вам было бы
еще неприятнее. Сокращаю свое вводное слово, чтобы приступить к изложению.
2. Семен! Сожалею, но я должен сообщить Вам неприятное
известие. Признаться, мне очень не хотелось писать, но, несомненно, услышать
дурную весть от кого-либо другого Вам было бы еще неприятнее. Словом, приступаю
к изложению.
Упражнение 30. Подготовьте устные
высказывания на предложенные лингвистические темы, используя разные типы
простых осложнённых предложений.
1. Признаки
глагола и прилагательного у причастия.
2. Употребление Ь в различных грамматических формах.
3. Разносклоняемые существительные.
4.
Синтаксические нормы в структуре
сложного
предложения
Упражнение
31.
Найдите и исправьте ошибки, связанные с построением сложносочиненных
предложений. Запишите предложения в исправленном виде.
1. Вчера был шторм, и сегодня все кругом было
спокойно.
2. У нас во дворе растет береза, но на ней тоже набухают почки. 3. Я каждый год
беру у нашей березы сок, но и не забываю залечивать рану. 4. Не то птица села
на воду, или обломки разбитой лодки плывут по морю. 5. И вдруг девочки увидели
маленькую черную точку, и у них появилась надежда. 6. Митраше было десять лет с
хвостиком, но сестра была старше.
Упражнение
32.
Замените там, где это возможно, придаточные определительные предложения
обособленными определениями. Если замена невозможна, устно объясните почему.
1. Событие, которое произошло вчера, запомнится мне
надолго. 2. Во дворе, который освещал месяц, слышались голоса. 3. Около
дома был небольшой сад, где росли вишни, черешни и яблони. 4. Через некоторое
время мы вышли к озеру, которое своим видом больше напоминало болото. 5. Осина,
которую качает ветер, стоит рядом с молодой березой. 6. Лес, по которому мы
теперь шли, состоял только из старых деревьев. 7. Мы с трудом перешли мост,
который почти полностью сгнил посередине.
Упражнение
33.
В данных ниже предложениях замените обособленные определения придаточными
определительными. Для каких стилей речи характерны конструкции с обособленными
определениями? Что предпочтительнее при устном высказывании?
1. Обращение – это слово (или
сочетание слов), называющее того, к кому обращаются с речью. 2. Предложения,
состоящие из нескольких простых предложений, называются сложными. 3.
Фразеология – раздел науки о языке, изучающий устойчивые сочетания слов. 4.
Диалектные слова – это слова, употребляемые только жителями той или иной
местности. 5. Синтаксис – раздел науки о языке, изучающий словосочетания и
предложения.
Упражнение
34. Найдите
и исправьте ошибки, связанные с построением сложноподчиненных предложений.
Запишите предложения в исправленном виде.
1. Ты не забудешь о дне рождения никогда, который
порадовал бы тебя такими необычными подарками. 2. Мама всегда меня ругает, что
я разбрасываю свои вещи. 3. У меня есть такое предположение, что рыбаков
задержал шторм. 4. Зал нравится мне из-за того, что он уютный, большой и
чистый. 5. В комнате стоит на тумбочке телевизор, после школы по которому я
смотрю развлекательные передачи. 6. На двух полочках – художественная
литература, которыми я пользуюсь при подготовке к урокам. 7. Входишь в комнату,
то сразу бросается в глаза большое окно. 8. Самодельные подарки лучше, потому
что если подарить купленную в магазине вещь, то она может не понравиться. 9.
После шторма рыбаки не вернулись, что вызывает беспокойство у детей. 10. Если я
приду в эту комнату, то всегда чем-нибудь занимаюсь. 11. Прогуливаясь по
берегу, я увидела двух девочек, которые сидели на перевернутой лодке, которая
лежала у берега вверх килем. 12. Девочки знали, что ночью был шторм, какая беда
могла случиться.
Упражнение
35. Устраните
двусмысленность и исправьте ошибки, связанные с употреблением союзного слова который
и с нарушением порядка слов в сложном предложении. Запишите предложения
в исправленном виде.
1. В своем романе Горький правдиво и ярко рисует нам
образ Пелагеи Ниловны, в которой отражен великий процесс пробуждения народных
масс. 2. В сборнике печатаются важнейшие статьи революционных демократов, в
которых они разбирают проблемы воспитания. 3. Мастер предложил изготовить
специальный желоб из листового металла, который установлен на подставках. 4.
Эти несколько достопримечательностей, показанных туристам, которые были
особенно знамениты, надолго остались у них в памяти. 5. В сборник вошли
частушки, сложенные не только на Смоленщине, но и в других областях, которые
бытуют в настоящее время в районах Смоленской области.
Упражнение
36. Найдите
и исправьте ошибки, связанные с построением сложных предложений.
1. Когда Мурке надоедало возиться с котятами, и она
уходила куда-нибудь поспать. 2. Как только Троекуров велел позвать Шабашкина, и
через минуту заседатель стоял перед барином.
3. К светскому обществу князь Андрей относится с презрением, в котором принужден
бывать. 4. Теплый дождь смочил землю,
в котором так нуждались посевы. 5. Белка – зверь, которая живет на дереве. 6.
Пьеса «На дне» – это произведение, в которой содержится обвинение капитализму.
7. Офицер приказал, чтобы
к нему пригласили, кто спас ребенка. 8. Необходимо то, чтобы ты ко мне зашел.
9. По дороге мы рассказывали, что случилось с нами за лето. 10. Тарас сказал,
что завтра же едем на Запорожье, чего откладывать. 11. Когда Гринев поправился,
он сказал Маше, что я посылаю письма и жду родительского благословения.
12. Мцыри узнал о себе, что он не боится лишений и голода, какой он смелый,
какой обладает несокрушимой волей. 13. Когда совсем стемнело, и я направился
по тропинке, которая и привела меня в лагерь.
Упражнение
37. Найдите
и исправьте ошибки в предложениях
с прямой и косвенной речью. Запишите предложения в исправленном виде.
1. Перед войной отец сказал мне: «Ухаживай за деревом
и ушел на фронт». 2. Начальник станции сообщил, что я помогу вам в приобретении
билетов. 3. Дедушка сказал, что в детстве у них был такой закон: в дни рождения
дарили мы только то, что сделано было своими руками. 4. К. Паустовский говорил,
что: «Человек, любящий и умеющий читать – счастливый человек».
Упражнение
38. Устраните
ошибки в употреблении косвенной и несобственно-прямой речи. Запишите
предложения в исправленном виде.
1. Рыболов остался доволен уловом: несколько ершей,
щука – и всего за какой-нибудь час, а парень сомневался, что будет ли здесь
хороший улов. 2. Егерь представил меня своим друзьям и сказал мне, что, по
моему мнению, это все отличные ребята. 3. Нам объявили, что кружок будет
работать два раза в неделю, что, если занятия пойдут успешно, вас повезут на
экскурсию.
4. Я не уверен, что будто бы можно таким образом решить задачу. 5. Сергей
намеревался написать Зине, что не приедет ли она на каникулы в Москву. 6.
Павлов сомневался, что можно ли выполнить работу в срок. 7. Метеоролог объявил
перед полётами, что я, мол, затрудняюсь дать точный прогноз погоды. 8. Мы не
были уверены, что будет ли сегодня хорошая погода.
Упражнение
39. Объясните
причины грамматических ошибок школьников (ошибки в построении словосочетаний и
предложений), исправьте их и запишите правильный вариант.
1. Вся семья Ростовых после обеда слушали манифест. 2.
Он, как и его брат Остап, с малых лет отданы учиться в гимназию. 3. Его
некрасивое лицо, оживленной быстрой ездой, горело смелой удалью. 4. В повести
«Капитанской дочке» А.С. Пушкин рассказал о восстании Пугачева. 5. Среди
многочисленных героев повести мы встречаем трех главных: Тарас, Остап и Андрий.
6. Народ тогда не знал, за что они борются. 7. На пристани было много народу, и
жизнь, казалась, была шумной, радостной. 8. Синий цвет василька ярко выделялся
от других. 9. Петю послали с пакетом в отряд Денисову. 10. Дворяне они
ненавидели Пугачева. 11. Шофер, увидев меня, он сразу же замедлил ход машины.
12. В повести «Тарас Бульба» рассказывается о пламенной любви Тараса к родине и
ненависть к врагам народа. 13. Когда Тараса Бульбы войско вступило в бой, все
отважно сражались. 14. Мы видим в произведении Пугачева честным, мужественным,
он может платить за добро добром, талантливым полководцем. 15. Гринев был
честный и мужественный, но у него есть привлекательные черты. 16. В армии Петя
стремился быть в опасных местах, он просился, где опаснее. 17. Иван Васильевич
пошел в ту сторону, где доносились звуки. 18. Рыба мелькнула, и сразу поплавок
утонет в воду. 19. «Барыня сразу начала ругать приживалок, что зачем эта
собака, у нас есть собака и хватит». 20. Когда пришел приказчик, то, замечая
Дубровского, упал перед ним на колени. 21. Читая повесть «Капитанская дочка»,
перед читателями ярко встает образ предводителя народного восстания Емельяна
Пугачева. 22. Петя нравится мне тем, потому что он пламенно любил свою родину.
23. Когда Герасима привезли в Москву, и назначили дворником.