sonyps4.ru

Программирование программа алгоритм. Алгоритмы и программы

Вы когда-нибудь задумывались о том, как здорово было бы самому писать программы? Но учить языки программирования не возникает желания? Тогда сегодня мы рассмотрим визуальную среду программирования, которая не требует никаких знаний в области разработки проектов и приложений.

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

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

Большой набор объектов

Алгоритм обладает большим набором объектов для создания программ: кнопки, лейблы, разнообразные окна, бегунки, меню и многое другое. Это дает возможность сделать проект более продуманным, а также создать удобный для пользователя интерфейс. Для каждого объекта можно задать действие, а также задать уникальные свойства.

Справочный материал

Справочный материал Алгоритма содержит в себе ответы на все вопросы. Вы можете найти информацию о каждом элементе, просмотреть примеры, а также вам будет предложено просмотреть видео-обучение.

Достоинства

1. Возможность создавать программы без знаний языка программирования;
2. Большой набор инструментов для создания интерфейса;
3. Удобный и понятный интерфейс;
4. Возможность работать с файлами, папками, реестром и т.д;
5. Русский язык.

Недостатки

1. Алгоритм не предназначен для серьезных проектов;
2. Компилировать проект в.exe можно только на сайте разработчика;
3. Довольно долго работает с графикой.

Алгоритм – это интересная среда разработки, которая подтолкнет вас к изучению языков программирования. Здесь вы сможете проявить фантазию, создать что-то уникальное, а также разобраться с принципом работы программ. Но Алгоритм нельзя назвать полноценной средой – все же это просто конструктор, где вы можете изучить основы. Если с ее помощью вы научитесь разрабатывать проекты, то в дальнейшем сможете перейти к изучению Delphi и C++ Builder.

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

Такое поведение можно называть по-разному, смотря в каком контексте оно рассматривается. Если рассмотреть с позиции эффективности деятельности, то эти действия можно назвать привычками или навыками. Если рассматривать с точки зрения отображения процесса, то описание последовательности действий, строгое исполнение которых приводит к решению поставленных задач за определенное количество шагов, называют алгоритмом действий.

Как создаются алгоритмы действий?

Мы постоянно сталкиваемся с этим в обычной жизни. Какие действия мы совершаем, чтобы пополнить счет своего мобильного телефона? Каждый из нас — разные. Так как способов пополнения счета несколько, следовательно мы все по-разному это делаем. Результат, правда всегда один получается — появление средств на телефоне.

Или еще пример: чтобы скопировать картинку или текст, нажимаем правой кнопкой мыши на картинку, затем выбираем «Копировать», помещаем в нужное место, нажимаем правой кнопкой » Вставить», и результат достигнут.

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

Опишите последовательность действий — это запоминается

Создать алгоритм действий можно, описав или изобразив его последовательность. Знают ли все, что надо сделать, чтобы посадить дерево? Возможно, основные шаги понятны всем, но вот когда деревце поливать, перед посадкой или после, помнит не каждый. Созданный алгоритм позволит все действия выполнить в правильной последовательности.

Чтобы описать последовательность действий посложнее, придется постараться и подробно их все записать. Пример можно взять с всевозможных правил и инструкций — там очень четко прописываются по шагам действия, которые нам надо сделать. Но бывают ситуации, в которых за определенным действие следует не один шаг, а несколько, в зависимости от предыдущего результата. В таком случае, предположительные действия тоже записывают, чтобы человек мог легко сориентироваться в разных ситуациях, и знал, что нужно предпринять.

Алгоритм действий в графике — это блок-схема

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

Представьте, что вам нужно чему-то научить другого человека. Вы отлично знаете все действия в определенной последовательности. Ваша задача — показать, как это нужно делать и передать свои знания так, чтобы другой человек их запомнил и знал так же, как и вы. Устная передача знаний допускает импровизации и некоторый произвол. Самым лучшим способом будет блок-схема, в которой объясняется последовательность и возможные варианты действий. В качестве примера — веселое руководство по изучению блог-схем:

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

Блок-схемы применяются в продажах

В продажах такое обучение с помощью разработки алгоритмов и изображения их в виде блок-схем имеет большое распространение. Чаще всего их используют в телефонных сценариях разговоров в call-центрах и для «холодных» звонков. Корпоративная культура набирает обороты, поэтому многие компании уже не позволяют сотрудникам нести «отсебятину», даже талантливую, а предлагают действовать им по заранее разработанному сценарию, представляя «лицо фирмы» на различных этапах. Эффект появляется буквально после нескольких дней действий «по бумажке». Со временем, многое из описанных алгоритмов запоминается сотрудником, и в дальнейшем он свободно может общаться, не опасаясь того, в какую сторону может уйти разговор.

Алгоритмы действий и блог-схемы разрабатываются не только в продажах. Большое распространение они имеют в обучении и практике врачей, программистов, «компьютерщиков», у многих технических специальностей.

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

Сервисы для разработки блок-схем

В интернете есть сервисы, которые могут помочь вам создавать такие блок-схемы. Один из них — Сacoo . С его помощью вам легко удастся превращать ваши алгоритмы в различные диаграммы, блок-схемы и графики. Вы увидите, что это очень приятное и радостное занятие — преобразовывать то, что вам известно, в науку для других людей.

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

Разработав алгоритмы действий и преобразовав их в блок-схемы с помощью Cacoo, вы сможете надолго создать хорошее настроение не только себе, но и другим людям, постигающим азы.

Создавайте игровые блок-схемы для своих детей

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

Моя блок-схема

Вот какая блок-схема у меня получилась в первый раз. Для того, чтобы увеличить изображение, нажмите на него. После перехода на Cacoo, под записью «просмотр фигуры», нажимайте на картинку. Она откроется в большом окне. Удачи!

Алгоритм? набор инструкций, описывающих порядок действий исполнителя для достижения результата решения задачи за конечное число действий. В старой трактовке вместо слова «порядок» использовалось слово «последовательность», но по мере развития параллельности в работе компьютеров слово «последовательность» стали заменять более общим словом «порядок». Это связано с тем, что работа каких-то инструкций алгоритма может быть зависима от других инструкций или результатов их работы.

Таким образом, некоторые инструкции должны выполняться строго после завершения работы инструкций, от которых они зависят. Независимые инструкции или инструкции, ставшие независимыми из-за завершения работы инструкций, от которых они зависят, могут выполняться в произвольном порядке, параллельно или одновременно, если это позволяют используемые процессор и операционная система.

Алгоритм означает точное описание некоторого процесса, инструкцию по его выполнению. Разработка алгоритма является сложным и трудоемким процессом. Алгоритмизация? это техника разработки (составления) алгоритма для решения задач на ЭВМ. Блок-схема обобщенного алгоритма работы программы представлена на рисунке 3.9.

Рисунок 3.9 - Блок-схема алгоритма работы программы

Для записи алгоритма решения задачи применяются следующие изобразительные способы их представления:

· словесно-формульное описание;

· блок-схема (схема графических символов);

· алгоритмические языки;

· операторные схемы;

· псевдокод;

Разработка программного продукта

Со времени появления платформы.NET (примерно в 2001 г.) среди библиотек базовых классов появился API по имени Windows Forms, представленный в основном сборкой System.Windows.Forms.dll. Инструментальный набор Windows Forms предоставляет типы, необходимые для построения графических пользовательских интерфейсов для настольных компьютеров, создания специализированных элементов управления, управления ресурсами (например, строками и значками) и выполнения других задач, возникающих при программировании для пользовательских компьютеров. Имеется и дополнительный API по имени GDI+ (представленный сборкой System.Drawing.dll), который предоставляет дополнительные типы, позволяющие программисту генерировать двухмерную графику, взаимодействовать с сетевыми принтерами и обрабатывать графические данные .

Windows Forms (и GDI+) применяются в платформе.NET 4.0 и, видимо, будут существовать еще некоторое время (возможно, длительное) в составе библиотеки базовых классов. Правда, после выхода.NET 3.0 компания Microsoft выпустила совершенно новый инструментальный API под названием Windows Presentation Foundation (WPF) .

Несомненно, наиболее важным пространством имен Windows Forms является System.Windows.Forms. Типы из этого пространства имен можно разбить на следующие крупные категории :

· Базовая инфраструктура. Это типы, представляющие базовые операции программ, которые используют Windows Forms (Form и Application), и различные типы, предназначенные для взаимодействия с устаревшими элементами ActiveX, a также для взаимодействия с новыми специальными элементами управления WPF;

· Элементы управления. Эти типы применяются для создания графических пользовательских интерфейсов (наподобие Button, MenuStrip, ProgressBar и DataGridView), все они являются производными от базового класса Control. Элементы управления допускают настройку на этапе проектирования и видимы (по умолчанию) во время выполнения;

· Компоненты. Это типы, которые не порождены от базового класса Control, но все-таки могут предоставлять программам Windows Forms визуальные возможности (например, ToolTip и ErrorProvider). Многие компоненты (к примеру, Timer и System.ComponentModel.BackgroundWorker) не видимы во время выполнения, но все-таки допускают настройку на этапе проектирования;

· Окна стандартных диалогов. В Windows Forms имеется несколько заготовленных диалоговых окон для распространенных операций (например, OpenFileDialog, PrintDialog и ColorDialog).

В мире Windows Forms тип Form представляет любое окно в приложении, включая главное окно самого верхнего уровня, дочерние окна приложений с многодокументным интерфейсом (multiple document interface ? MDI), а также модальные и немодальные диалоговые окна. Тип Form содержит множество возможностей, унаследованных от классов-предков, а также из реализуемых им многочисленных интерфейсов.

Для полноценного порождения типа Form нужны и многие другие базовые классы и интерфейсы, но даже профессиональному разработчику Windows Forms совсем не обязательно знать роли всех членов всех классов или реализованных интерфейсов.

Для создания нового проекта в Visual Studio выберем «New»-«Project», в появившемся окне выберем «Windows Form Application» и заполним предложенные поля.

Для передачи запроса SQL серверу и возврату результата в виде набора строк (запросы на выборку) был реализован метод «GetSQLData», представленный ниже.

В качестве параметра метод принимает строку-запрос, в качестве возвращаемого значения имеет тип «DataTable» ? таблицу данных.

public static DataTable GetSQLData(string query)

DataSet ds = new DataSet();

myConnection.Open();

catch (Exception e1)

SqlDataAdapter dataAdapter = new SqlDataAdapter(comm);

ds = new DataSet();

dataAdapter.Fill(ds);

MessageBox.Show("Error");

myConnection.Close();

catch (Exception e3)

return ds.Tables;

Для передачи запроса SQL серверу без возврата результата (запросы на вставку, изменение и удаление) был реализован метод «SetSQLData», представленный ниже. В качестве параметра метод принимает строку-запрос и не имеет возвращаемого типа значения.

public static void SetSQLData(string query)

SqlConnection myConnection = new SqlConnection(Config.ConnectionString);

myConnection.Open();

catch (Exception e1)

MessageBox.Show(e1.ToString());

SqlCommand comm = new SqlCommand(query);

comm.CommandType = System.Data.CommandType.Text;

comm.Connection = myConnection;

comm.ExecuteNonQuery();

myConnection.Close();

catch (Exception e3)

MessageBox.Show(e3.ToString());

Для того, чтобы пользователю не приходилось вводить строку подключения к базе данных также необходимо создать класс и файл конфигурации, которые хранили бы и позволяли изменять настройки приложения. Для этих целей были созданы соответственно класс «Config» и файл конфигурации «App.config»

public static string ConnectionString = GetParam("ConnectionStringSql");

public string Connection

return ConnectionString;

ConnectionString = value;

public static string GetPathTo(string ParamName)

return Application.StartupPath +

ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None).AppSettings.Settings.Value;

Переменная «Connection» этого класса является строкой для соединения с сервером. При запуске она инициализируется из файла настроек при помощи метода «GetParam», представленного ниже.

public static string GetParam(string ParamName)

return ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None).AppSettings.Settings.Value;

«App.config» - XML-файл, содержаний переменные и их явно или неявно указываемые значения. Текст сформированного xml-документа пользовательских настроек приведен ниже.

connectionString="Valid Connection String;" />

Обработчики различных событий элемента создаются на вкладке «Events». К примеру, событие «OnClick» - «нажатие на кнопку». После двойного клика на необходимое событие откроется код формы с объявленным обработчиком, в который необходимо добавить код для обработки возникающего события.

Добавим в обработчик события «OnClick» следующий код для вызова другой формы приложения:

private void button1_Click(object sender, EventArgs e)

NewTest obj = new NewTest();

obj.ShowDialog();

Подобным образом мы будем вызывать все формы приложения. Для считывания выборки в таблицу нашей формы добавим в ее код метод «Load_Tables».

listView1.Items.Clear();

DateTime d = new DateTime();

for (int i = 1; i < dt.Columns.Count; i++)

listView1.Items.Add(item);

Строка «query» в данном методе это запрос на выборку к базе данных. Теперь можно приступать к проектированию и реализации других форм приложения.

Добавить форму в текущий проект можно из контекстного окна «Solution Explorer», или через меню «Project»-«Add Windows Form». В появившемся окне вводим имя создаваемой формы и жмем «Add».

Задачи для этих элементов на данной форме будут следующими:

1. GroupBox - группировка схожих полей для ввода или выбора информации;

2. TextBox - поле для ручного ввода информации, которая после будет использоваться в запросах;

3. Label - подсказка пользователю о значении того или иного поля а также данных, которые необходимо ввести;

4. Button - подтверждение действия пользователем, считываемое системой.

В случае выбора того или иного элемента «RadioButton» («Ученик» или «Преподаватель»), будут разблокированы поля для ввода данных студента или преподавателя соответственно. По нажатию на кнопку «Начать работу» осуществляется авторизация.

Следующая форма приложения - форма добавления и изменения данных теста.

Данные из полей «Наименование», «Количество вопросов» и «Преподаватель» считываются и, при помощи запроса на вставку в методе «SetSQLData» класса «Connection» отправляются SQL-серверу.

В случае успеха или неудачи пользователю будет выведено соответствующее сообщение.

При загрузке формы наши выпадающий список «Преподаватель» (элемент «ComboBox») должен быть проинициализирован и заполнен некоторым набором значений, которые сможет выбирать пользователь. Для этого добавим в код формы метод «LoadComboboxes», код которого приведен ниже.

private void LoadComboboxes()

query = "Select Преподаватель from Преподаватели";

DataTable dt = Connection.GetSQLData(query);

comboBox1.DataSource = dt;

comboBox1.DisplayMember = "Преподаватель";

MessageBox.Show("Ошибка загрузки справочника <Преподаватели>");

Следующая форма приложения - отчет «Результаты тестирования». Добавляем форму, как было описано ранее, размещаем на форме элемент «ListView» и придаем форме следующий вид.

Данный отчет группирует все попытки зарегистрированных учеников успешно пройти тестирование при помощи системы. Для считывания полученной от SQL сервера таблицы добавим в код формы приведенный ниже метод.

private void Load_Tables(string query)

listView1.Items.Clear();

DataTable dt = Connection.GetSQLData(query);

foreach (DataRow row in dt.Rows)

DateTime d = new DateTime();

ListViewItem item = new ListViewItem(row.ToString());

for (int i = 1; i < dt.Columns.Count; i++)

if (i == dt.Columns.Count - 1)

d = Convert.ToDateTime(row[i]);

item.SubItems.Add(d.ToShortDateString());

item.SubItems.Add(row[i].ToString());

listView1.Items.Add(item);

Следующая форма - форма тестирования знаний. Элемент «DateTimePicker» размещен на форме для возможности точного слежения за временем начала и окончания сдачи теста. Данный элемент скрыт от пользователя и не отображается.

Для работы изменения вопросов и ответов теста добавим еще одну форму и придадим ей следующий вид.

Аналогичным путем были созданы и реализованы остальные формы автоматизированной системы тестирования знаний по дисциплине «Русский язык». Более подробно функционал программы представлен в разделе «Руководство пользователя» и в приложении «Листинг кода программы».

Понятие алгоритма является одним из основных в современной науке и практике. Еще на самых ранних ступенях развития математики (Древний Египет, Вавилон, Греция) в ней стали рассматриваться различные вычислительные процессы чисто механического характера. С их помощью искомые величины ряда задач вычислялись последовательно из исходных величин по определенным правилам и инструкциям. Со временем все такие процессы в математике получили название алгоритмов (алгорифмов).

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

Термин алгоритм происходит от имени средневекового узбекского математика Аль-Хорезми, который еще в IX в. (825 г.) дал правила выполнения четырех арифметических действий в десятичной системе счисления. Процесс выполнения арифметических действий был назван алгоризмом.

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

К 1950 г. алгорисмус стал алгорифмом. Смысл алгорифма чаще всего связывался с алгорифмами Евклида - процессами нахождения наибольшего общего делителя двух многочленов, наибольшей общей меры двух отрезков и т. п.

Способы записи алгоритмов

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

  • словесный;
  • формульный;
  • табличный;
  • операторный;
  • графический;
  • язык программирования.

При словесном способе записи содержание последовательных этапов алгоритма описывается в произвольной форме на естественном языке.

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

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

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

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

Алгоритмы могут быть записаны и в виде команд какого-либо языка программирования. Если это макрокоманды, то алгоритм читаем и пользователем-программистом, и вычислительной машиной, имеющей транслятор с соответствующего языка.

Приведем пример словесного представления алгоритма на примере нахождения произведения п натуральных чисел (с= п = = 1 х 2 х 3 х 4 х... х п).

Этот процесс может быть записан в виде следующей системы последовательных указаний (пунктов):

  • 1. Полагаем с равным единице и переходим к следующему пункту.
  • 2. Полагаем / равным единице и переходим к следующему пункту.
  • 3. Полагаем с равным с=сх/ и переходим к следующему указанию.
  • 4. Проверяем, равно ли /" числу п. Если / = п, то вычисления прекращаем. Если / п, то увеличиваем / на единицу и переходим к пункту 3.

Классификация и свойства алгоритмов

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

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

Алгоритмом является последовательность четких однозначных указаний, которые, будучи применены к определенным имеющимся данным, обеспечивают получение требуемого результата. Данными называют все величины, участвующие в решении задачи. Данные, известные перед выполнением алгоритма, являются начальными, исходными данными. Результат решения задачи - это конечные, выходные данные.

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

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

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

Каждая команда алгоритма должна определять однозначное действие исполнителя. Такое свойство алгоритмов называется определенностью (или точностью) алгоритма.

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

Еще одно важное требование, предъявляемое к алгоритмам, - результативность (или конечность) алгоритма. Оно означает, что исполнение алгоритма должно закончиться за конечное число шагов.

Поскольку разработка алгоритмов - процесс творческий, требующий умственных усилий и затрат времени, предпочтительно разрабатывать алгоритмы, обеспечивающие решения всего класса задач данного типа. Например, если составляется алгоритм решения кубического уравнения ах 3 + Ьх 2 + сх + с1 = 0, то он должен быть вариативен, т. е. обеспечивать возможность решения для любых допустимых исходных значений коэффициентов а, Ь, с, с1. Про такой алгоритм говорят, что он удовлетворяет требованию массовости. Свойство массовости не является необходимым свойством алгоритма. Оно, скорее, определяет качество алгоритма; в то же время свойства точности, понятности и конечности являются необходимыми (иначе это не алгоритм).

Запись алгоритмов в виде блок-схем

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

Схема алгоритма - графическое представление алгоритма, дополняемое элементами словесной записи. Каждый пункт алгоритма отображается на схеме некоторой геометрической фигурой или блоком. При этом правило выполнения схем алгоритмов регламентирует ГОСТ 19.002-80 «Единая система программной документации» (табл. 1.28).

Блоки на схемах соединяются линиями потоков информации. Основное направление потока информации идет сверху вниз и слева направо (стрелки могут не указываться), снизу вверх и справа налево - стрелка обязательна. Количество входящих линий для блока не ограничено. Выходящая линия - одна, за исключением логического блока.

Таблица 1.28. Основные элементы блок-схем

Наименование

по ГОСТ 19.003-80 (ЕСПД):а = 10,15,20 мм; b = ^, 5а

Блок вычислений

Вычислительные действия или последовательность действий

Логический

Выбор направления выполнения алгоритма в зависимости от некоторого условия

Блок ввода-

  • 1. Общие обозначения ввода (вывода) данных (вне зависимости от физического носителя).
  • 2. Вывод данных, носителем которых является документ

Начало или конец алгоритма, вход в программу или выход из нее

г = а/4

Процесс пользователя (подпрограмма)

Вычисление по стандартной программе или подпрограмме

модификации

Функция выполняет действия, изменяющие пункты (например, заголовок цикла) алгоритма

Соединитель

Указание связи прерванными линиями между потоками информации в пределах одного листа

Межстраничное соединение

Указание связи между информацией на разных листах

Базовые структуры алгоритмов

Это определенный набор блоков и стандартных способов их соединения для выполнения типичных последовательных действий. К основным структурам относятся следующие - линейные, разветвляющиеся, циклические (рис. 1.26).


Рис. 1.26. Примеры структур алгоритмов: а - линейный алгоритм; б - алгоритм с ветвлением; в - алгоритм с циклом

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

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

Примером может являться разветвляющийся алгоритм, изображенный в виде блок-схемы (рис. 1.26, б). Аргументами этого алгоритма являются две переменные А, В , а результатом - переменная X. Если условие А > В истинно, то выполняется операция X := А х В, в противном случае выполняется X := А + В. В результате печатается то значение переменной X, которое она получает при выполнении одной из серий команд.

Циклическим называется алгоритм, в котором некоторая последовательность операций (тело цикла) выполняется многократно. Однако «многократно» не означает «до бесконечности». Организация циклов, никогда не приводящая к остановке в выполнении алгоритма, является нарушением требования его результативности - получения результата за конечное число шагов.

В цикл в качестве базовых входят - блок проверки условия и тело цикла. Перед операцией цикла осуществляется начальное присвоение значений тем переменным, которые используются в теле цикла. Если тело цикла расположено после проверки условий Р (цикл с предусловием), то может случиться так, что при определенных условиях тело цикла не выполнится ни разу. Такой вариант организации цикла, управляемый предусловием, называется цикл «ПОКА»/«WHILE» (здесь условие - это условие на продолжение цикла).

Возможен другой случай, когда тело цикла выполняется, по крайней мере, один раз и будет повторяться до тех пор, пока не станет истинным условие. Такая организация цикла, когда его тело расположено перед проверкой условия, носит название цикла с постусловием, или цикла «ДО»/«FOR». Истинность условия в этом случае - условие окончания цикла. Отметим, что возможна ситуация с постусловием и при организации цикла «ПОКА». Итак, цикл «ДО» завершается, когда условие становится истинным, а цикл «ПОКА» - когда становился ложным. Современные языки программирования имеют достаточный набор операторов, реализующих как цикл «ПОКА», так и цикл «ДО».

Рассмотрим пример алгоритма вычисления факториала, изображенный на рис. 1.26 (с циклом «ПОКА»). Переменная N получает значение числа, факториал которого вычисляется. Переменной N, которая в результате выполнения алгоритма должна получить значение факториала, присваивается первоначальное значение 1. Переменной К также присваивается значение 1. Цикл будет выполняться, пока справедливо условие N> К. Тело цикла состоит из двух операций N = N1 х К и К= К + 1.

Циклические алгоритмы, в которых тело цикла выполняется заданное число раз, реализуются с помощью цикла со счетчиком. Цикл со счетчиком реализуется с помощью команды повторения.

Процесс решения сложной задачи довольно часто сводится к решению нескольких более простых подзадач. Соответственно при разработке сложного алгоритма он может разбиваться на отдельные алгоритмы, которые называются вспомогательными. Каждый такой вспомогательный алгоритм описывает решение какой-либо подзадачи.

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

Контрольные вопросы

  • 1. Дайте классификацию информации.
  • 2. Каковы преимущества цифровой информации по отношению к аналоговой?
  • 3. Перечислите методы кодирования символов.
  • 4. Перечислите методы кодирования численной информации.
  • 5. Переведите число 32 451 10 в шестнадцатеричную и восьмеричную системы счисления.
  • 6. Переведите число 32 451 16 в десятичную и восьмеричную системы счисления.
  • 7. В чем заключаются особенности двоичной арифметики?
  • 8. Подсчитайте произведение 1ГА 16 и 2ВС1 6 по модулю 8.
  • 9. Подсчитайте сумму 457 8 и 375 8 по модулю 3.
  • 10. Перечислите логические элементы ЭВМ.
  • 11. Что такое логические узлы ЭВМ?
  • 12. Составьте таблицы истинности для левого (-1(А д В)) и правого (-И V -,б) выражений 1-го закона де Моргана. Проверьте их на соответствие.
  • 13. Составьте таблицы истинности для левого (-1(А V В)) и правого (-.А V -,б) выражений 2-го закона де Моргана. Проверьте их на соответствие.
  • 14. Последний столбец таблицы истинности для двухместных операций, очевидно, может содержать 16 = 2 4 различных сочетаний «1» и «О». Следовательно, всего может быть определено 16 логических операций над двумя переменными, из которых нами рассмотрены только пять. Составьте таблицу истинности для одной из 9 оставшихся вне рассмотрения функций и попытайтесь построить логическое выражение для этой функции.
  • 15. Перечислите базовые структуры алгоритмов и программ.

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

Алгоритм1 -- одно из фундаментальных понятий информатики. Этим словом обозначают точное и безотказное предписание последовательности действий, переводящей автоматическое устройство из исходного состояния в результирующее. Т.е. мы можем считать алгоритмом любую инструкцию, если:

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

указания предусмотрены для всех возможных вариантов развития событий.

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

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

Какими свойствами должен обладать алгоритм? Перечислим их:

дискретность2 -- алгоритм делится на отдельные элементарные шаги;

определенность -- каждая команда однозначно определяет действие исполнителя;

конечность(результативность) -- алгоритм должен завершаться за конечное число шагов.

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

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

Существует много разных способов записи алгоритмов: графические (например, в виде блок-схем), с помощью естественного языка, какими-нибудь условными знаками идр. Но если мы хотим, чтобы алгоритм был исполнен компьютером, он должен быть обязательно записан на особом языке. Такая запись называется программой4, а язык -- языком программирования.

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

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

Сейчас в мире существует множество языков программирования, рассчитанных на различные области применения. Мы в нашем курсе будем использовать Лого6 -- язык, специально созданный для обучения основам программирования. Этот язык очень простой (кстати, в отличие от профессиональных языков программирования, он позволяет записывать команды на русском языке), но, в то же время, способствует формированию навыков, позволяющих затем, при желании, без особых проблем перейти к работе с такими популярными языками, как Си или Паскаль. Особо знаменит язык Лого своей "черепашьей графикой". О том, что это такое, мы и поговорим в следующей главе.

Примечания

Algorithmi (лат.) -- искаженное имя математика IX века аль-Хорезми, предложившего способ выполнения арифметических вычислений с многозначными числами.

Заметим, что подход к определению алгоритма как последовательности операций -- не единственно возможный. Кроме такого -- процедурного (императивного), возможен и функциональный подход, когда алгоритм рассматривается как система функций.

Discrete (англ.) -- состоящий из отдельных частей

Formalis (лат.) -- строго по установленным правилам

Programma (греч.) -- распоряжение

Translator (англ.) -- переводчик

Язык Лого (Logo, от греч. Logos -- слово, мысль) разработан в 1972 г. Сеймуром Пейпертом (Массачусетский Технологический институт, США). "Прародителем" его был наиболее известный из языков функционального программирования -- Лисп, однако, в процессе развития Лого приобрел ряд особенностей, позволяющих использовать при работе с ним как функциональный, так и процедурный подходы.



Загрузка...