Файл: Основные структуры алгоритмов: сравнительный анализ и примеры их использования (СПОСОБЫ ОПИСАНИЕ АЛГОРИТМОВ).pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 28.03.2023

Просмотров: 329

Скачиваний: 3

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Рисунок 4.2 – Алгоритм для цикла с параметром

На рисунке ниже представлена блок-схема цикла с предусловием. Другие названия цикла: цикл-пока, цикл с заданным условием продолжения работы.

Особенность данного вида цикла: операторы цикла будут повторяться до тех пор, пока условие истинно. Его проверка делается каждый раз перед выполнением операторов цикла. Цикл может ни разу не выполниться, если его условие ложно.

Рисунок 4.3 – Алгоритм цикла с предусловием

ПРИМЕРЫ ИСПОЛЬЗОВАНИЯ АЛГОРИТМОВ НА ЯЗЫКЕ C И JAVA

Чтобы составить программу линейной структуры требуется:

  1. Определить, что является исходными данными, какие будут у них типы.
  2. Выбрать имена переменных.
  3. Определить, что является искомыми результатами, какие будут у них типы. Выбрать имена переменных.
  4. Определить, какие формулы связывают исходные данные с результатами.
  5. Если нужны промежуточные данные, определить их типы и выбрать имена вспомогательных переменных.
  6. Описать все используемые переменные.
  7. Ввод всех исходных данных.
  8. Вычисления.
  9. Вывод результатов.
  10. Будьте внимательны: вспомогательная переменная должна получить значение до того, как она будет использована в вычислениях.
  11. Подобрать данные для тестирования программы (проверки правильности ее работы).

Задача:

Напишите программу, решающую следующее выражение:

Используйте аргументы командной строки для инициализации значений a b.

Код программы на языке C:

#include <stdio.h>

#include <stdlib.h>

int main(int ac, char **av)

{

int a = atoi(av[1]);

int b = atoi(av[2]);

int result;

result = (a + b*b)/(1-a);

printf("%d", result);

return 0;

}

Код программы на языке JAVA

import java.lang.Math.*;
import java.io.*;

public class Quiz {
public static void main(String[] args) {
int a = Integer.parseInt(args[0]);
int b = Integer.parseInt(args[1]);


int res = (int)(a + Math.pow(b , 2))/(1 - a);

System.out.println(res);
}
}

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

Задача:

Найти наибольшее из трех чисел a, b, c. Входные аргументы брать из командной строки.

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

#include <stdio.h>


#include <stdlib.h>

int main(int ac, char **av)

{

int a = atoi(av[1]);

int b = atoi(av[2]);

int c = atoi(av[3])

if (a > b && a > c)

printf("%d", a);

else if (b > a && b > c)

printf("%d", b);

else if (c > a && c > b)

printf("%d", c);

return 0;

}

Код программы на JAVA

import java.lang.Math.*;
import java.io.*;

public class Quiz {
public static void main(String[] args) {
int a = Integer.parseInt(args[0]);
int b = Integer.parseInt(args[1]);
int c = Integer.parseInt(args[2]);


if (a > b && a > c)
System.out.println(a);
else if (b > a && b > c)
System.out.println(b);
else if (c > a && c > b)
System.out.println(c);
}
}

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

Задача:

Вывести на экран таблицу ASCII.

ASCII – код для обмена информацией. В настоящее время чаще используется 8-битный вариант (под каждый символ выделяется 1 байт памяти). Проще говоря, получается таблица из 256 символов, соответствующих числам от 0 до 255.

Код на языке С

int main()

{

char c = 0;

while (c <= 255)

{

printf("%c", c);

c++;

}

return 0;

}

Код на языке Java

import java.io.*;

public class Quiz {
public static void main(String[] args) {
char c = 0;
while (c < 256)
{
System.out.print(c++);
}
}
}

Эта же задача, но решенная с помощью цикла с постусловием:

Код на языке С:

int main()

{

char c = 0;

do

{

printf("%c", c);

}

while (c++ < 256);

}

Код на языке JAVA

import java.io.*;

public class Quiz {
public static void main(String[] args) {
char c = 0;
do {
System.out.print(c);
}
while (c++ < 256);
}
}

Эта же задача, но решенная с помощью цикла с параметром:

Код на языке С:

#include <stdio.h>

int main()

{

char c = -1;

for(;c < 256; c++)

{

printf("%c", c);

}

}

Код на языке JAVA

import java.io.*;

public class Quiz {
public static void main(String[] args) {
char c = 0;
for(; c < 256; c++)
{
System.out.print(c);
}
}
}

СРАВНИТЕЛЬНЫЙ АНАЛИЗ АЛГОРИТМОВ

Узнав все структуры алгоритмов и их способы применения, мы можем сделать анализ, на основе которого следует выбирать структуру для решения конкретной задачи.

Линейной называют алгоритмическую конструкцию, реализованную в виде последовательности действий (шагов), в которой каждое действие (шаг) алгоритма выполняется ровно один раз, причем после каждого i-го действия (шага) выполняется (i+1)-е действие (шаг), если i-е действие — не конец алгоритма.

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


Циклической (или циклом) называют алгоритмическую конструкцию, в которой некая, идущая подряд группа действий (шагов) алгоритма можем выполняться несколько раз, в зависимости от входных данных или условия задачи. Группа повторяющихся действий на каждом шагу цикла называется телом цикла. Любая циклическая конструкция содержит в себе элементы ветвящейся алгоритмической конструкции

ЗАКЛЮЧЕНИЕ

Создание алгоритма для решения задач какого-либо типа, его представление исполнителю в удобной для него форме – это творческий акт. Алгоритм может быть представлен различными способами: на разговорном естественном язык; на языке блок-схем; на языке программирования. Выбор и разработка алгоритма и численного метода решения задачи имеют важнейшее значение для успешной работы над программой. Тщательно проработанный алгоритм решения задачи – необходимое условие эффективной работы по составлению алгоритму.

Любой алгоритм существует не сам по себе, а предназначен для определенного исполнителя (человека, робота, компьютера, языка программирования и т.д.). Свойством, характеризующим любого исполнителя, является то, что он умеет выполнять некоторые команды. Совокупность команд, которые данный исполнитель умеет выполнять, называется системой команд исполнителя. Алгоритм описывается в командах исполнителя, который будет его реализовывать. Объекты, над которыми исполнитель может совершать действия, образуют так называемую среду исполнителя. Исходные данные и результаты любого алгоритма всегда принадлежат среде того исполнителя, для которого предназначен алгоритм.

БИБЛИОГРАФИЯ

1. Б.В. Соболь [и др.] «Информатика и программирование»– Ростов н/Д: Феникс, 2006 – 354 с.

2. Информатика. Базовый курс./С.В. Симонович и др. - СПб.: Питер, 2001

3. Информатика: базовый курс: учебник для студентов вузов, бакалавров, магистров, обучающихся по направлению «Информатика»/О.А. Акулов, Н.В. Медведев. 6-е изд., испр. и доп.-М.: Издательство «Омега-Л», 2009.-574 с. – (Высшее техническое образование).

4. Каймин В.А. Информатика: Учебник для вузов. - М.: Высшее образование, 1998.

5. Каймин В.А., Касаев Б.С. Информатика.: Практикум на ЭВМ. Учебное пособие.

6. Культин Н.Б. Программирование в TurboPascal 7.0 и Delphi.- 2-е издание, перераб. и доп.- Спб.: БХВ-Петербург,2002.-416 с.;ил.

7. Турбо Паскаль 7.0. Самоучитель. – СПб.: Питер; К.: Издательская группа BHV, 2002.-576 с.