Основы программирования. Введение: алгоритмы и программы

Содержание

Слайд 2

Исполнитель-человек: знает, как решать уравнения, в каком порядке выполняются арифметические операции

 

Исполнитель-человек:
знает, как решать уравнения, в каком порядке выполняются арифметические операции
уточняет, какие

величины заданы и что необходимо вычислить
получает (запоминает) заданные значения
использует таблицы или калькулятор для получения значения синуса (или арксинуса)
формирует и выполняет требуемую последовательность операций
Слайд 3

Простейшая модель компьютера 2 основных блока: память и процессор Память -

Простейшая модель компьютера

2 основных блока: память и процессор
Память - последовательность ячеек

(байт)
Каждый байт:
имеет свой номер (адрес)
может хранить любое целое число в диапазоне 0…255 во внутреннем (двоичном) формате
Возможен произвольный доступ к любому байту памяти
Время доступа не зависит от адреса байта
Слайд 4

Принцип программного управления Работой компьютера управляет программа, которая задает совокупность команд

Принцип программного управления

Работой компьютера управляет программа, которая задает совокупность команд и

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

Команды компьютера Каждая команда имеет фиксированную длину в байтах и фиксированный

Команды компьютера

Каждая команда имеет фиксированную длину в байтах и фиксированный формат
Пример

с символическими кодами команд (Ассемблер):
mov ax,[$0064cba0]
add ax,[$0064cba4]
mov [$0064cba8],ax
Слайд 6

Языки программирования Фиксированная структура программы определяет совокупность действий и порядок их

Языки программирования

Фиксированная структура программы определяет совокупность действий и порядок их выполнения
Операторы

позволяют описать необходимые действия (команды) на языке, понятном человеку
Переменные различных типов позволяют создавать, хранить в памяти и обрабатывать изменяемые данные, обращаясь к ним просто по имени
Константы разных типов хранят значения неизменяемых данных
Слайд 7

 

 

Слайд 8

Пример на Паскале program Equation; var a, b, x, y :

Пример на Паскале

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

Пример на С++

#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

Компоновка программы Компоновщик (редактор связей) – это программа, которая объединяет объектный

Компоновка программы

Компоновщик (редактор связей) – это программа, которая объединяет объектный модуль

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

Общая схема работы

Общая схема работы

Слайд 17

Синтаксис и семантика языка программирования Синтаксис – формальные правила, которым должна

Синтаксис и семантика языка программирования

Синтаксис – формальные правила, которым должна соответствовать

программа на некотором языке программирования
Семантика – смысл отдельных элементов программы, написанной по правилам синтаксиса
Слайд 18

Тестирование программы После успешной трансляции в программе могут остаться смысловые (семантические)

Тестирование программы

После успешной трансляции в программе могут остаться смысловые (семантические) ошибки.


Для их обнаружения программу необходимо тестировать: т.е. подготовить некоторые входные данные, подать их на вход при выполнении программы, и сравнить получившиеся выходные данные с ожидаемыми выходными данными.
Чтобы выявить все возможные ошибки, тестировать необходимо на большом количестве различных входных данных!
Цель тестирования: выявить как можно больше возможных ошибок!
Слайд 19

Тестирование программы Тестирование методом черного ящика: при создании тестов внутренняя структура

Тестирование программы

Тестирование методом черного ящика: при создании тестов внутренняя структура программы

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

Исчерпывающее тестирование программы Пример: программа сложения двух целых чисел, диапазон каждого

Исчерпывающее тестирование программы

Пример: программа сложения двух целых чисел,
диапазон каждого из

чисел
от –2147483648 до +2147483647, всего их 232.
Количество всех возможных тестов, т.е.
различных пар слагаемых
264 = 18446744073709551616.
При 109 проверках в секунду для исчерпывающего тестирования потребуется более 500 лет!
Закон Э. Дейкстры: «Тестированием можно доказать наличие ошибок в программе, но никогда – их отсутствие»