Глава 8 — Технология подготовки и решения задач с помощью компьютера

Глава 8 — Технология подготовки и решения задач с помощью компьютера Компьютер

7. Что такое тест и тестирование?

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

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

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

Для реализации метода тестов должны быть изготовлены
или заранее известны эталонные результаты.

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

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

2. Что называют математической моделью?

Математическая модель — это система математических соотношений
— формул,
уравнений, неравенств и т.д., отражающих существенные
свойства объекта или явления.

Всякое явление природы бесконечно в своей сложности.
Проиллюстрируем это с помощью примера, взятого из книги В.Н. Тростникова
«Человек и информация» (Издательство «Наука», 1970).

… Обыватель формулирует математику задачу следующим образом: «Сколько
времени будет падать камень с высоты 200 метров?»
Математик начнет
создавать свой вариант задачи приблизительно так: «Будем считать, что
камень падает в пустоте и что ускорение силы тяжести 9,8 метра в секунду
за секунду. Тогда …»

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

Хорошо, — согласится математик. — Будем
считать, что камень имеет сферическую форму и диаметр… Какого примерно
он диаметра?

Около пяти сантиметров. Но он вовсе не сферический, а
продолговатый.

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

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

Он ответит: «Точное решение реальной задачи вообще
невозможно. Мало того, что форму камня, которая влияет
на сопротивление воздуха, невозможно описать никаким математическим
уравнением; его вращение в полете также неподвластно математике
из-за
своей сложности. Далее, воздух не является однородным, так как в
результате действия случайных факторов в нем возникают флуктуации колебания
плотности. Если пойти ещё глубже, нужно учесть, что по закону всемирного
тяготения каждое тело действует на каждое другое тело
. Отсюда следует,
что даже маятник настенных часов изменяет своим движением траекторию камня.

Короче говоря, если мы всерьез захотим точно исследовать
поведение какого-либо предмета, то нам предварительно придется узнать
местонахождение и скорость всех остальных предметов Вселенной. А это,
разумеется, невозможно …
.

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

Наиболее эффективно математическую модель можно реализовать на
компьютере в виде алгоритмической модели — так называемого
«вычислительного эксперимента» (см. [1], параграф 26).

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

Итак, создавая математическую модель для решения задачи, нужно:

  1. выделить предположения, на которых будет основываться математическая
    модель;
  2. определить, что считать исходными данными и результатами;
  3. записать математические соотношения, связывающие результаты с
    исходными данными.

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

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

3. Какие основные этапы содержит процесс разработки программ?

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

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

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

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

https://www.youtube.com/watch?v=5rEt7U68quo

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

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

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

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

public class ShowSyntaxErrors {
    public static main(String[] args) {
        System.out.println("Welcome to Java);
    }
}

Попытка компиляции приведённого кода:

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

  • Во второй строке отсутствует ключевое слово void перед main
  • Строка Welcome to Java должна быть закрыта закрывающей кавычкой в третьей строчке программы

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

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

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

Логические ошибки происходят, когда программа неправильно выполняет то, для чего она была создана. Ошибки этого рода возникают по многим различным причинам. Допустим, вы написали программу, которая конвертирует 35 градусов Цельсия в градусы Фаренгейта следующим образом:

public class ShowLogicErrors {

    public static void main(String[] args) {
        System.out.println("Celsius 35 is Fahrenheit degree ");
        System.out.println((9 / 5) * 35   32);
    }
}

Вы получите 67 градусов по Фаренгейту, что является неверным. Должно быть 95.0. В Java целочисленное деление показывает только часть – дробная часть отсекается, по этой причине в Java 9 / 5 это 1. Для получения правильного результата, нужно использовать 9.0 / 5, что даст результат 1.8.

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

Распространённые ошибки

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

Частые ошибки 1: Пропущенные фигурные скобки

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

Если вы используете IDE такую как NetBeans и Eclipse, то IDE автоматически вставит закрывающую фигурную скобку каждой введённой вами открывающей фигурной скобки.

Частые ошибки 2: Пропуск точки с запятой

Каждая инструкция заканчивается ограничителем инструкции (;). Часто новые программисты забывают поместить ограничитель инструкции для последней инструкции в блоке как это показано в следующем примере:

Частые ошибки 3: Пропуск кавычки

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

Если вы используете IDE, такую как NetBeans и Eclipse, то IDE автоматически вставит закрывающую кавычку каждый раз, когда вы ввели открывающую кавычку.

Частые ошибки 4: Неправильное написание имён


Java чувствительная к регистру. Неправильное написание имён – частая ошибка для новых программистов. Например, пишут слово main как Main, а вместо String пишут string. Пример:

public class Test {

    public static void Main(string[] args) {
        System.out.println((10.5   2 * 3) / (45 - 3.5));
    }
}

1. Какие этапы включает в себя решение задач с помощью компьютера?

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

  1. Постановка задачи:
    • сбоp инфоpмации о задаче;
    • фоpмулиpовка условия задачи;
    • опpеделение конечных целей pешения задачи;
    • определение формы выдачи результатов;
    • описание данных (их типов, диапазонов величин, структуры и т.п. ).

  2. Анализ и исследование задачи, модели:
  3. Разработка алгоритма:
  4. Пpогpаммиpование:
    • выбор языка программирования;
    • уточнение способов организации данных;
    • запись алгоpитма на выбpанном языке пpогpаммиpования.

  5. Тестиpование и отладка:
    • синтаксическая отладка;
    • отладка семантики и логической стpуктуpы;
    • тестовые pасчеты и анализ pезультатов тестиpования;
    • совершенствование пpогpаммы.

  6. Анализ результатов решения задачи
  7. и уточнение в случае необходимости
    математической модели с повторным выполнением этапов 2 — 5.

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

10. Каковы характерные ошибки программирования?

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

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

4. Как проконтролировать текст программы до выхода на компьютер?

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

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

5. Для чего нужны отладка и тестирование?

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

Тестирование (англ. test — испытание) — это испытание, проверка правильности работы
программы в целом, либо её составных частей.

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

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

Английский термин debugging («отладка»)
буквально означает «вылавливание жучков». Термин появился в 1945
г., когда один из первых компьютеров — «Марк-1» прекратил работу из-за
того, что в его электрические цепи попал мотылек и заблокировал своими
останками одно из тысяч реле машины.

6. В чем заключается отладка?

В современных программных системах (Turbo Basic, Turbo Pascal, Turbo C
и др.) отладка осуществляется часто с использованием специальных
программных средств, называемых отладчиками. Эти средства позволяют
исследовать внутреннее поведение программы.

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

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

При отладке программ важно помнить следующее:

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

8. Какими должны быть тестовые данные?

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

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

Пример. Система тестов для задачи нахождения корней квадратного
уравнения ax2 bx c = 0 :

Номер тестаПроверяемый случайКоэффициентыРезультаты
abc
1d >011-2x1 = 1, x2 =  — 2
2d=0121Корни равны:  x1 = — 1, x2 =  — 1
3d < 0212Действительных корней нет
4a=0,   b=0,   c=0000Все коэффициенты равны нулю.   х — любое число.
5a=0,   b=0,   c<>0002Неправильное уравнение
6a=0,   b<>0021Линейное уравнение.   Один корень:   x = — 0,5
7a <> 0,   b <> 0,   с = 0210x1 = 0,   x2  =  — 0,5

9. Из каких этапов состоит процесс тестирования?

Процесс тестирования можно разделить на три этапа.

1. Проверка в нормальных условиях.
Предполагает тестирование на основе данных, которые характерны для
реальных условий функционирования программы.

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

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

Известно, что все программы разрабатываются в расчете на обработку
какого-то ограниченного набора данных.

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

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

—   что произойдет, если числа будут слишком
малыми или слишком большими?

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

Программа должна сама отвергать любые данные, которые она не в состоянии
обрaбатывать правильно.

Дополнительные способы решения проблемы

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

  1. Включаем отладку по USB. В некоторых случаях такой подход позволяет решить проблему, но это не панацея, и шанс не особо велик. Для включения этой опции нужно зайти в «Настройки» своего аппарата и кликнуть по вкладке «О телефоне». Прокрутите полосу вниз, пока не найдете пункт «Номер сборки». Кликните по нему 7 раз, чтобы активировать режим разработчика. Теперь переходите обратно в «Настройки» и прокручиваете еще раз вниз, пока не дойдете по пункта «Меню разработчика». В нем находите пункт «Отладка по USB» и активируете.
  2. Отключение антивирусов. Иногда установка не осуществляется из-за антивируса, который установлен у вас в смартфоне. Порою сигнатуры, которые подаются антивирусом, ложные, и файл блокируется просто так. Но это единичные случаи. Если действительно уверены, что данный apk-файл — безопасный, отключайте антивирус и попробуйте инсталлировать приложение.

Внимание! Пункты меню в Android могут отличаться, и в некоторых версиях «Отладка по USB» может находиться в других каталогах или вкладках, вызываться другими действиями, но во всех версиях Андроида она присутствует!

Как бороться с вирусом?

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

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

  • AdwCleaner;
  • Dr.Web CureIt!;
  • Malwarebytes Free;
  • Malwarebytes Anti-Rootkit;
  • Emsisoft Commandline Scanner;
  • Zemana AntiMalware.

Обратите внимание, что необходимо использовать поочередно несколько таких утилит, к примеру AdwCleaner и Dr.Web CureIt!. Это необходимо сделать потому, что каждая программа мониторинга имеет свои базы и алгоритмы работы. Используя продукты нескольких компаний, вы гарантировано вычистите систему от негативных процессов. На время работы можно деактивировать штатный антивирус, чтобы не происходило нежелательных конфликтов.

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

Антивирусный сканер AdwCleaner

Открываем меню автозагрузки.

  1. В консоли прописать: msconfig.
  2. Переходим во вкладку Автозагрузка.
  3. Отключаем все подозрительные элементы.

Работаем с планировщиком.

  1. Открыть: «Пуск» -> «Панель Управления» -> «Администрирование» -> «Планировщик задач».
  2. Деактивировать подозрительные задания.

Проверьте задачи запуска в планировщике Windows

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

Разрешаем установку из неизвестных источников

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

Вам нужно разрешить установку таких приложений.

  1. Для этого заходим в «Настройки» аппарата и выбираем пункт «Параметры безопасности».
  2. Параметры безопасности

  3. Здесь находим вкладку «Неизвестные источники» и ставим галочку, чтобы активировать данный пункт!
  4. Неизвестные источники

  5. Все, инсталляция apk файлов, загруженных в смартфон через SD-карту или компьютер, разрешена.

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

Еще лучше загружать apk на сайт «Вирустотал». Он позволяет осуществлять проверки сразу по 50 популярным антивирусам.

И так, теперь проверяем, исчезла ли синтаксическая ошибка или нет. Нет? Тогда идем дальше!

Решение проблемы с ошибкой inputmismatchexception

Если при попытке ввести число с плавающей точкой, например, такой строкой программы:

double radius = input.nextDouble();


Вы получаете ошибку:

Exception in thread "main" java.util.InputMismatchException
	at java.util.Scanner.throwFor(Scanner.java:864)
	at java.util.Scanner.next(Scanner.java:1485)
	at java.util.Scanner.nextDouble(Scanner.java:2413)
	at ComputeAreaWithConsoleInput.main(ComputeAreaWithConsoleInput.java:10)

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

*Региональный стандарт, региональные настройки (проф. жарг. лока́ль от англ. locale, /lɔ.kal/ или /ləuˈkɑ:l/) — набор параметров, определяющий региональные настройки пользовательского интерфейса, такие как язык, страна, часовой пояс, набор символов и т. п.

Выходов из этой ситуации два:

  • использовать десятичный разделитель вашей локали (точку вместо запятой или запятую вместо точки)
  • чуть изменить программу – явно указать локаль


Для этого при создании объекта Scanner добавьте .useLocale(Locale.US). Например, объект создавался следующим образом:

Scanner input = new Scanner(System.in);

После дополнения получается такая строка создания объекта:

Scanner input = new Scanner(System.in).useLocale(Locale.US);

Также в начале программы требуется сделать дополнительный импорт:

import java.util.Locale;

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

import java.util.Scanner; // Scanner находится в пакете java.util
import java.util.Locale;

public class ComputeAreaWithConsoleInput {

    public static void main(String[] args) {
        // Создаём объект Scanner
        Scanner input = new Scanner(System.in).useLocale(Locale.US);
        // Запрос пользователю на ввод радиуса
        System.out.print("Введите радиус: ");
        double radius = input.nextDouble();
        // Вычисление площади
        double area = radius * radius * 3.14159;
        // Отображение результата
        System.out.println("Площадь круга радиусом "
                  radius   " равна "   area);
    }
}

Синтаксические ошибки. свидетельства правильности программ

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

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

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

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

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

Некоторые, наиболее характерные, примеры синтаксических ошибок:

  • 1) пропуск знака пунктуации;
  • 2) несогласованность скобок;
  • 3) неправильное формирование оператора;
  • 4) неверное образование имен переменных;
  • 5) неверное написание служебных слов;
  • 6) отсутствие условий окончания цикла;
  • 7) отсутствие описаний массива и т.п.

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

Формальная грамматика G задается четверкой объектов:

  • 1) V — терминальный алфавит;
  • 2) W — алфавит синтаксических единиц;
  • 3) Р — правила вывода (продукции);
  • 4) I — аксиома или начальная синтаксическая единица.

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

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

«7Q ОШИБКИ, ОБНАРУЖИВАЕМЫЕ < ТРАНСЛЯТОРОМ

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

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

Более точно под транслятором понимаются следующие действия компьютера:

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

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

  • 1) неверное указание ветви алгоритма после проверки;
  • 2) неполный учет возможных условий;
  • 3) пропуск в программе одного или более блоков алгоритмов.

Ошибки в циклах:

  • 1) неправильное указание начала цикла;
  • 2) неправильное указание условий окончания цикла;
  • 3) неправильное указание числа повторений цикла;
  • 4) бесконечный цикл.

Ошибки ввода-вывода, ошибки при работе с данными:

  • 1) неправильное задание типа данных;
  • 2) организация считывания меньшего или большего объема данных, чем требуется;
  • 3) неправильное редактирование данных.

Ошибки при использовании переменных:

  • 1) использование переменных без указания начальных значений;
  • 2) ошибочное указание одной переменной вместо другой.

Ошибки при работе с массивами:

  • 1) неверное указание типа переменной (например, целоисчисленного вместо вещественного);
  • 2) неверное определение порядка действий деления на нуль;
  • 3) извлечение квадратного корня из отрицательного числа, потеря значащих разрядов числа.

Все эти ошибки обнаруживаются с помощью тестирования.

Различают три способа тестирования:

  • 1) алгоритмическое тестирование — применяется для конкретных этапов алгоритмизации и программирования. Тесты направлены на проверку правильности логики работы алгоритма и выполнения арифметических действий;
  • 2) аналитическое — служит для проверки метода решения задачи и возможности его работы на различных выборах данных;
  • 3) содержательное — служит для проверки правильности постановки задачи. Здесь используются качественные или статистические оценки работы программы, анализируется физический смысл полученных результатов.

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

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

30 СОПРОВОЖДЕНИЕ ПРОГРАММЫ

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

Сопровождение программы — это работы, связанные с обслуживанием программ в процессе эксплуатации:

  • 1) исправление обнаруженных ошибок;
  • 2) модификация программ для удовлетворения изменяющихся эксплуатационных требований;
  • 3) доработка программ для решения конкретных задач;
  • 4) составление документации к решенной задаче, к математической модели, к алгоритму, к программе, к набору тестов, к использованию;
  • 5) проведение дополнительных тестовых просчетов;
  • 6) внесение исправлений в рабочую документацию;
  • 7) усовершенствование программы.

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

Тестирование и отладка зачастую поглощают больше времени, чем первоначальное написание программы. Эти этапы занимают, по оценкам спе циалистов, от 40 до 80 % общего времени разработки программы. Сам процесс сопровождения программы во многом зависит от используемого языка программирования, компьютера, специфики самой программы, опыта и интуиции разработчика программы.

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

Виды ошибок при решении задач с помощью компьютера:

  • 1) получаемые результаты не соответствуют сформулированной задаче — неправильная постановка задачи. Выбор неадекватной математической модели;
  • 2) программа выдает неточные решения или неэффективна — разработан или выбран неправильный или неэффективный алгоритм;
  • 3) логические ошибки — неверно запрограммирован алгоритм, пренебрежение малыми параметрами модели и пр.;
  • 4) синтаксические ошибки — нарушение правил синтаксиса при программировании;
  • 5) ошибки при выполнении операций — деление на нуль, вычисление логарифма отрицательного числа, извлечение квадратного корня из отрицательного числа;
  • 6) ошибки в данных — ввод или обработка данных, не предусмотренных программой, неверно определены тип, диапазон изменения данных. Программы, предназначенные для длительной

эксплуатации, должны иметь соответствующую документацию и инструкцию по ее использованию.

81

ЗАЩИТА ИНФОРМАЦИИ.

Способ 6: несовместимость приложения

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

Например, когда вы пытаетесь установить приложение, которое требует Android 8 Oreo и выше, на смартфон с Android 7 Nougat. Чтобы не попасть в подобную ситуацию, внимательно читайте описание приложения на Google Play Маркет, особенно в той его части, где приведены системные требования.

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

https://www.youtube.com/watch?v=Uf0JwJfT8LI

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

Оцените статью
OverComp.ru