Алгоритмы, программирование, компиляторы
Введено| English | Значение |
|---|---|
| algorithm/ˈælɡərɪθəm/ | алгоритм |
| high-level language/haɪ ˈlevl ˈlæŋɡwɪdʒ/ | язык высокого уровня |
| compiler/kəmˈpaɪlə/ | компилятор |
| syntax error/ˈsɪntæks ˈerə/ | ошибка синтаксиса |
| logic error/ˈlɒdʒɪk ˈerə/ | логическая ошибка |
Чистая сборка всё равно может продать по неправильной цене
- Программа магазина планирует применить скидку 10% к цене 100, но вычисляет сумму к оплате как цена * 10 / 100.
- Она вычисляет величину скидки, 10, вместо цены со скидкой, 90. Код может компилироваться и запускаться, используя неправильную формулу.
Что такое алгоритм?
- Алгоритм — это конечный, упорядоченный набор шагов, решающих задачу. Рецепт является алгоритмом: точные шаги в порядке, которые приводят к завершению.
- Программирование — это искусство превращения алгоритма в код, который выполняет компьютер. Для конечных алгоритмов, изучаемых здесь, каждый допустимый вход должен приводить к результату после конечного числа шагов. Программа также может выполнять постоянно работающий сервис; не каждая программа — это заканчивающийся расчёт.
Языки программирования
- Компьютеры выполняют машинный код (сырые 0 и 1) — сложно писать вручную. Мы пишем на языках высокого уровня, таких как Java: читаемом, похожем на английский.
- Код Java говорит что делать; переводчик преобразует его в машинные инструкции. Этот курс учит решению задач через Java.
Компиляторы
- Компилятор, такой как javac, преобразует исходные файлы Java в классы и проверяет грамматику, типы и имена. Java компилируется в байт-код, который затем выполняет Java Virtual Machine (JVM).
- "Напишите один раз, запускайте везде": классы могут работать на разных платформах с совместимой JVM и необходимыми библиотеками; новые версии классов требуют среды выполнения, поддерживающей их. Ошибки компиляции (ловятся перед запуском) отличаются от ошибок времени выполнения (ловятся во время работы).
Алгоритм лучше всего описывается как...
Сложность 1/5 · 100 монет + небольшой бонус за первое выполнение сегодня
Конечные, упорядоченные шаги, которые завершаются — это алгоритм.
Компилятор Java переводит ваш исходный код в...
Сложность 1/5 · 100 монет + небольшой бонус за первое выполнение сегодня
Java компилируется в байт-код, который выполняет JVM.
Программа, которая компилируется и запускается, но выдает неправильный ответ, имеет...
Сложность 1/5 · 100 монет + небольшой бонус за первое выполнение сегодня
Неправильный результат при чистом компиляционном процессе = логическая ошибка.
Синтаксическая ошибка препятствует компиляции программы Java.
Сложность 1/5 · 100 монет + небольшой бонус за первое выполнение сегодня
Нарушение грамматики → компилятор отказывается собирать код.
Если программа компилируется без ошибок, она гарантированно корректна.
Сложность 1/5 · 100 монет + небольшой бонус за первое выполнение сегодня
Компилятор проверяет грамматику, типы и имена, но не устанавливает предполагаемое бизнес-правило или корректный вывод.
Любое исключение во время выполнения обязательно завершает работу программы, даже если соответствующий код обработки перехватывает его.
Сложность 1/5 · 100 монет + небольшой бонус за первое выполнение сегодня
Исключение может быть перехвачено и обработано; необработанное исключение может прервать выполнение.
Какая операция вызывает ArithmeticException для целочисленной переменной со значением 0?
Сложность 1/5 · 100 монет + небольшой бонус за первое выполнение сегодня
Целочисленное деление на ноль вызывает ошибку; деление типа double на ноль дает результаты с плавающей точкой по стандарту IEEE.
Виды ошибок
- Ошибка синтаксиса нарушает грамматику Java — компилятор отказывается собирать. Ошибка времени выполнения происходит во время исполнения; незаловленное исключение может завершить программу. Целочисленное деление на ноль вызывает ArithmeticException, тогда как деление с плавающей точкой подчиняется другим правилам.
- Логическая ошибка — программа выполняется без сбоев, но выдает неправильный результат. Отладка заключается в поиске и устранении всех трех типов ошибок.
От исходного кода до работающей программы
Посмотрите, как исходный код Java превращается в работающую программу.
Программа, успешно компилирующаяся, не является автоматически корректной. Компилятор обнаруживает синтаксические и другие ошибки на этапе компиляции, включая ошибки типов и имен. Логическая ошибка — неправильная формула, неверное условие — компилируется чисто и выполняется, но дает неверный результат. Всегда проверяйте вывод вашего алгоритма, а не только факт успешной сборки.
Match each defect to its category.
Сложность 2/5 · 140 монет + небольшой бонус за первое выполнение сегодня
The categories depend on when and how the defect is detected; successful compilation does not establish the intended result.
Алгоритм для поиска большего из двух чисел a и b:
- Шаг 1: если
a > b, то ответом являетсяa. - Шаг 2: иначе ответом будет
b. - Конечный, упорядоченный и всегда завершающийся — корректный алгоритм, готовый к реализации на Java.
Перенесите рассуждения на новый случай
- Проверьте вывод скидки на известных примерах. Для данного примера 100 должно давать 90, а 0 должно давать 0; включите ввод, не кратный целому, в соответствии с заявленной политикой округления, а не полагайтесь на то, что целочисленное деление эквивалентно десятичной арифметике.
- Компилятор также обнаруживает ошибки типов и имен, а не только пунктуационные ошибки. С другой стороны, исключение может быть обработано во время выполнения; чистая компиляция не гарантирует ожидаемый результат или отсутствие runtime-ошибок.
Алгоритм — это конечный, упорядоченный набор шагов, решающих задачу; программирование превращает его в код. Java — это язык высокого уровня, который компилятор преобразует в байт-код для JVM. Следите за синтаксическими, ошибками времени выполнения и логическими ошибками — чистая компиляция не гарантирует правильного результата.