Слайд 2
Исполнитель-человек:
знает, как решать уравнения, в каком порядке выполняются
арифметические операции
уточняет, какие величины заданы и что необходимо вычислить
получает
(запоминает) заданные значения
использует таблицы или калькулятор для получения значения синуса (или арксинуса)
формирует и выполняет требуемую последовательность операций
Слайд 3
Простейшая модель компьютера
2 основных блока: память и процессор
Память
- последовательность ячеек (байт)
Каждый байт:
имеет свой номер (адрес)
может хранить
любое целое число в диапазоне 0…255 во внутреннем (двоичном) формате
Возможен произвольный доступ к любому байту памяти
Время доступа не зависит от адреса байта
Слайд 4
Принцип программного управления
Работой компьютера управляет программа, которая задает
совокупность команд и порядок их выполнения
Программа и данные, необходимые
для ее работы, хранятся в памяти
Процессор читает из памяти и выполняет команды в нужном порядке
Слайд 5
Команды компьютера
Каждая команда имеет фиксированную длину в байтах
и фиксированный формат
Пример с символическими кодами команд (Ассемблер):
mov ax,[$0064cba0]
add
ax,[$0064cba4]
mov [$0064cba8],ax
Слайд 6
Языки программирования
Фиксированная структура программы определяет совокупность действий и
порядок их выполнения
Операторы позволяют описать необходимые действия (команды) на
языке, понятном человеку
Переменные различных типов позволяют создавать, хранить в памяти и обрабатывать изменяемые данные, обращаясь к ним просто по имени
Константы разных типов хранят значения неизменяемых данных
Слайд 8
Пример на Паскале
program Equation;
var a, b, x, y
: real;
begin
readln(a, b, x);
y := sin(a*x) +
b / 2;
writeln(’y = ’, y);
end.
Слайд 9
Пример на С++
#include
using namespace std;
int main(int argc,
char *argv[])
{
double a, b, x, y;
cin >>
a >> b >> x;
y = sin(a*x) + b / 2;
cout << ”y = ” << y << endl;
return 0;
}
Слайд 10
Общее определение алгоритма
Алгоритм – набор инструкций (команд), определяющих
порядок действий исполнителя для решения некоторой задачи
Слайд 11
Свойства алгоритма
Дискретность – алгоритм определяется как последовательность отдельных
инструкций (команд)
Определенность – каждая команда должна быть однозначно понятна
исполнителю
Конечность – алгоритм должен завершать свою работу за конечное время
Слайд 12
Процесс разработки алгоритма
Математическая модель – совокупность переменных и
уравнения (соотношения) для них, описывающие некоторое явление
Слайд 13
Процесс разработки алгоритма
Информационная модель – описание данных и
их свойств
Для построенной информационной модели необходимо разработать алгоритм, написать
программу и проверить ее работоспособность
Программа – алгоритм, записанный на каком-либо языке программирования
Слайд 14
Трансляция программы
Транслятор (компилятор) – это программа, на вход
которой подается текст алгоритма на языке программирования – исходный
модуль, а на выходе (после трансляции) получается программа на машинном языке – объектный модуль.
Транслятор действует по строго формальным правилам: если транслируемая программа содержит хотя бы одну формальную (синтаксическую) ошибку, то трансляция не может завершиться!
Слайд 15
Компоновка программы
Компоновщик (редактор связей) – это программа, которая
объединяет объектный модуль и необходимые для выполнения дополнительные модули
(поддержка ввода/вывода, стандартные функции и т.д.) в единый исполняемый модуль
В некоторых системах программирования трансляция и компоновка выполняются как один шаг
Слайд 17
Синтаксис и семантика языка программирования
Синтаксис – формальные правила,
которым должна соответствовать программа на некотором языке программирования
Семантика –
смысл отдельных элементов программы, написанной по правилам синтаксиса
Слайд 18
Тестирование программы
После успешной трансляции в программе могут остаться
смысловые (семантические) ошибки.
Для их обнаружения программу необходимо тестировать:
т.е. подготовить некоторые входные данные, подать их на вход при выполнении программы, и сравнить получившиеся выходные данные с ожидаемыми выходными данными.
Чтобы выявить все возможные ошибки, тестировать необходимо на большом количестве различных входных данных!
Цель тестирования: выявить как можно больше возможных ошибок!
Слайд 19
Тестирование программы
Тестирование методом черного ящика: при создании тестов
внутренняя структура программы не принимается во внимание.
Тестирование методом белого
ящика: тесты создаются на основе внутренней структуры программы, так, чтобы все компоненты программы выполнялись в разных тестах.
Пошаговое тестирование: выполнение программы в интерактивном режиме с отслеживанием промежуточных значений переменных.
Слайд 20
Исчерпывающее тестирование программы
Пример: программа сложения двух целых чисел,
диапазон каждого из чисел
от –2147483648 до +2147483647,
всего их 232.
Количество всех возможных тестов, т.е.
различных пар слагаемых
264 = 18446744073709551616.
При 109 проверках в секунду для исчерпывающего тестирования потребуется более 500 лет!
Закон Э. Дейкстры: «Тестированием можно доказать наличие ошибок в программе, но никогда – их отсутствие»