
Урок №1
Полина, Светлана и Анна, приехали учиться в город, одна из них стала стилистом, вторая – архитектором, третья – поваром, все три девушки вышли замуж, одна за человека по фамилии Андреев, вторая – за человека по фамилии Петров, третья за доктора по фамилии Сергеев.
Известно, что у не одной из девушек, не совпадают первые буквы имен фамилий мужа и профессий, кроме этого известно, что жена Петрова, не стилист.
Вопрос:
Как зовут жену доктора?
Урок №2
Была практическая работа на уроке и мы ничего не писали.
Урок №3
Программирование как термин может трактоваться двумя способами: 1)Представляет собой узкое понятие описывающее программирование как процесс написания кода; 2)Создание полноценного программного проекта от момента написания алгоритма до момента выхода программы.
Четкое определение программированию !
Программирование – это процесс кодирование, то есть написание инструкций на языке программирования по ранее заданному плану -> который носит название алгоритм.
Язык программирования – это формальная знаковая система, предназначенная для записи программ опирающееся на определенный набор правил и определяющее вид и действия программы.
Существуют две наиболее распространенных классификации языков программирования:
По уровню
По типу транслятора
Классификация по уровню:
Языки низкого уровня
Языки среднего уровня
Языки высокого уровня
Языки сверхвысокого уровня
Языки низкого уровня (ЯНУ).
Близость к машинному коду
Мнемоническое обозначение
Сокращение английских слов
Assembly language, CIL (Common Intermediate Language)
Достоинство языков низкого уровня:
Быстрый и компактный код
Максимальное использование возможностей конкретной платформы
Создание более эффективных программ
Снижение ресурсоемкости
Непосредственный доступ к аппаратуре
Создание драйверов оборудования
Создание ядра операционной системы
Создание «прошивок» BIOS
Создание компиляторов и интерпретаторов
Реализация совместимости платформ
Недостатки языков низкого уровня:
Машинная ориентация
Сложность чтения и понимания программ
Сложность кодирования
Сложность отладки
Высокая трудоемкость
Высокая вероятность внесения ошибок
Высокая квалификация программиста
Проблемы с автоматической оптимизацией
Нет переносимости на другую архитектуру
Минимум доступных библиотек
Языки низкого уровня применяются в тех ситуациях, когда реализация программ требует быстродействия и контроля за объемом используемой памяти. К таким программам относятся, операционные системы (ОС), программы для микроконтроллеров, драйвера, программы которые отвечают за защиту и трансляторы.
Средний уровень (ЯСУ).
Объединяет в себе лучшие черты языков высокого уровня с возможностями ассемблера.
Java, C, C++, FORCH.
Особенности языков среднего уровня (относительно ЯНУ):
Переносимость
Доступность для разработчика
Большее количество библиотек
Особенности ЯСУ (относительно ЯВУ):
Работа с оперативной памятью
Средняя типизация
Количество ключевых слов
Контроль за логическими ошибками
Высокий уровень (ЯВУ).
Абстракция
Смысловые конструкции – данные операции
Снижение громоздкости машинного кода
Ada, Pascal, COBOL, FORTRAN, Basic.
Особенности языков высокого уровня:
Легкие решения сложных задач
Низкое и сложное взаимодействие с оборудованием
Простота понимания
Работа с комплексными структурами данных
Сверхвысокий уровень.
Повышенная абстракция
Не «как», а «что»
Python, Ruby, Haskell, Perl, скриптовые языки.
Транслятор – это средство перевода исходного кода в машинный код при этом транслятор отвечает за проверку синтаксиса и зависит от среды разработки.
Среда проектирования – это крупномасштабная программа, которая позволяет разработчику комфортно создавать программные проекты.
В среду проектирования входит:
Встроенный редактор
Удобный графический интерфейс
Большой спектр сервисов
Утилиты просмотра и управления информацией
Библиотеки
Мастера создания шаблонов приложений
Транслятор – составная часть среды разработки
Виды ошибок:
Логические – этап выполнения (Debugger)
Синтаксические – этап кодирования (трансляторы: компилятор, интерпретатор)
Логические ошибки происходят на этапе выполнения программы и выявляются либо в процессе тестирования, либо в процессе текущей работы программы. Логические ошибки не отслеживаются и не контролируются транслятором, хотя некоторые трансляторы иногда сообщают о возможности совершения логической ошибки. Выявив логическую ошибку, как правило, разработчик анализирует фрагмент кода, в котором она произошла, это осуществляется путем пошаговой проверки, например с помощью специальной программы под названием – Debugger.
Синтаксические ошибки - это ошибки совершаемые разработчиком на этапе кодирования. Сюда входят такие вещи как: неправильно записанные команды, неправильно построенные конструкции, неправильно использованные операторы, неправильно расставленные знаки и т.д.
Синтаксические ошибки выявляться транслятором, так как при их наличии он не в состоянии транслировать код. В зависимости от типа транслятора он сообщает разработчикам об ошибках тем или иным образом.
Все языки можно разделить на 2 группы по типу трансляторов.
Виды трансляторов:
Компилятор:
Проверка на ошибки (единоразово)
Создание исполняемого файла
Обособленность
Интерпретатор:
Проверка на ошибки (множественно)
Отсутствие исполняемого файла
Привязанность
Компилятор разновидность транслятора который характеризуется следующими особенностям:
Компилятор полностью проверяет код на наличие ошибок. И выдает разработчику весь список если таковые имеются.
Если ошибок нет – компилятор запускает программу на выполнение в рамках среды разработки и что важнее формирует исполняемый файл.
Полученный исполняемый файл отдает конечному пользователю, и этот пользователь никак не зависит ни от компилятора, ни от среды разработки.
Интерпретатор разновидность транслятора которая характеризуется следующими особенностями:
Интерпретатор анализируется исходный код, строка за строкой и если не находит ошибки в конкретной строке – выполняет ее сразу.
Если ошибка обнаружена, интерпретатор приостанавливает свою работу и сообщает об ошибки.
При этом он дает возможность, как остановить выполнение программы, так и проигнорировать ошибку.
Интерпретатор не формирует исполняемого файла и как следствие запускается каждый раз, когда код запускается на выполнение. Иными словами интерпретатор привязан к конечному пользователю.