Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Lect5

.pdf
Скачиваний:
13
Добавлен:
27.03.2015
Размер:
487.39 Кб
Скачать

Алгоритмические компилируемые языки. Алгоритм

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

А.В.Гаврилов

11

Кафедра АППМ, НГТУ

Алгоритмические компилируемые языки.

Любой алгоритм ориентирован на некоторый

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

Алгоритм, записанный на некотором алгоритмическом, формальном языке, состоит из

заголовка алгоритма (описания параметров,

спецификаций класса задач) и тела алгоритма

(последовательности команд исполнителя,

преобразующих входные параметры в выходные).

Для записи, исполнения, обмена и хранения

алгоритмов существуют различные средства,

языки, псевдокоды – блок-схемы, структурограммы (схемы Нэсси-Шнайдермана), Р-схемы, школьный алгоритмический язык (ШАЯ), различные языки

программирования.

А.В.Гаврилов

12

Кафедра АППМ, НГТУ

Алгоритмические компилируемые языки. Основные свойства алгоритма

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

Понятность — алгоритм для исполнителя должен включать только те команды, которые ему (исполнителю) доступны, т.е. которые входят в его систему команд.

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

Массовость — алгоритм должен быть применим к разным наборам исходных данных.

А.В.Гаврилов

13

Кафедра АППМ, НГТУ

Алгоритмические компилируемые языки. Базовые алгоритмические структуры

Различают три базовые алгоритмические структуры: следование, ветвление, повторение.

Структура следование состоит из двух команд с указанной очередностью их выполнения и имеет вид:

<команда – предшественник>;<команда – преемник>.

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

if <условие> then <команда, выполняемая при выполнении условия> else <команда, выполняемая при невыполнении условия>;.

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

и пустой.

А.В.Гаврилов

14

 

Кафедра АППМ, НГТУ

Алгоритмические компилируемые языки. Примеры базовых алгоритмических структур

Условный оператор if :

if (выражение_условие)

Вход

 

Условие

 

оператор_1;

ДА

НЕТ

 

 

else

 

истинно?

 

 

 

 

оператор_2;

 

 

 

 

Действие 1

 

Действие 2

А.В.Гаврилов Выход 15 Кафедра АППМ, НГТУ

Алгоритмические компилируемые языки. Примеры базовых алгоритмических структур

Один из операторов цикла –

цикл типа while (пока):

while (условие) оператор; Пример: Вычислить АN:

n=7; a=-3; i=1; p=1;

while (i<=n)

{ нет

p*=a;

i++;

}

n=7 a=-3

i=1

p=1

да

i<=n

p*=a

i++

А.В.Гаврилов

16

Кафедра АППМ, НГТУ

Ключевые понятия любого алгоритмического языка

Синтаксис языка

Как выглядит исходный текст программы

Семантика языка

Чему соответствует в исполняемой программе то, что написано в исходном тексте

Переменная:

Идентификатор (имя переменной)

Тип

Область видимости (локальные, глобальные переменные)

Присваивание

Значений переменным

Оператор – синтаксически законченный фрагмент программы, имеющий определенную семантику

Связывание

Имен переменных и функций с их адресом в виртуальной памяти

Процедуры и функции (поименованные части программы, которые можно многократно вызывать в программе)

А.В.Гаврилов

17

Кафедра АППМ, НГТУ

Пример подготовки программы на

алгоритмическом компилируемом

Файл ppppp.c

 

языке С

 

Исходный

 

Обработка директив

Полный

 

текст на СИ

 

 

 

 

Препроцессор

 

текст

Компилятор

 

 

 

 

 

программы

 

 

 

 

Включаемые

 

 

(единица

 

 

 

трансляции)

Компиляция или

файлы

Файл xxxxx.h

 

 

 

 

 

трансляция

 

 

 

 

 

Объектный

Файл ppppp.obj

 

 

 

код

 

 

 

 

 

программы

 

 

 

 

 

 

Компоновщик

 

Исполняемая

Стандартные

 

программа

 

 

 

библиотеки

Связывание

 

Файл

ppppp.exe

 

 

А.В.Гаврилов

 

18

 

 

Кафедра АППМ, НГТУ

 

#include <stdio.h> // включение в текст

//файла с функциями

//ввода-вывода

/* Пример 1 */ void main(void)

{

int a, b, sum;// описание (определение) переменных printf("Введите два числа а и b \n");

scanf("%d%d", &a, &b); // ввод переменных sum=a+b;

printf("a= %d b= %d Сумма= %d \n", a,b,sum);

}// пример вывода: а=10 b=20 Сумма=30

А.В.Гаврилов

19

Кафедра АППМ, НГТУ

Пример

#include <stdio.h>

программы на С

void main()

 

 

{

Программа вводит строку с

char st[10], c;

int n, i;

клавиатуры,

gets(st);

инвертирует ее (переписывает

n = sizeof(st);

наоборот) и выводит.

n = 0;

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

while (st[n] != 0) n++;

n >> 1;

переменной (массиве символьных

for (i = 0; i<n/2; i++)

переменных) st и не может превышать

{

9 символов

c = st[i];

Обратите внимание на обмен

st[i] = st[n-i-1];

st[n-i-1] = c;

значениями двух элементов массива с

}

использованием дополнительной

puts(st);

переменной c

}

А.В.Гаврилов

20

Кафедра АППМ, НГТУ

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]