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

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

Рубрика Программирование, компьютеры и кибернетика
Вид статья
Язык русский
Дата добавления 21.01.2018
Размер файла 15,4 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

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

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

В данной работе на примере сортировки одномерного массива рассматриваются языки программирования С++ [4], Турбо Паскаль [2], функциональный язык Haskell [3].

Задача. Дан одномерный вещественный массив, содержащий n элементов. Отсортировать элементы массива по не убыванию.

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

#include <iostream.h>

#include <conio.h>

/*

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

На языке С++ сначала нужно подключить так называемые заголовочные файлы. В них содержатся переменные, объекты, классы, функции и т.д. В данном случае из файла iostream.h программе используются объекты cin и cout, которые, соответственно, предназначены для ввода и вывода данных. Из заголовочного файла conio.h> используется функция int getch(void), которая в этом случае считывает символ с клавиатуры. */

void main () {

/* main () - это главная функция, с которой начинается выполнение программы */

int n;

 // переменная n используется для хранения количества элементов массива

cout<< «Введите количество элементов массива: \n»;

cin>>n;

/* Для ввода значения переменной с клавиатуры используем объект cin из заголовочного файла iostream.h */

double *mas=new double [n];

 // Описание динамического массива вещественного типа

cout<< «Введите элементы исходного массива:\n»;

/* Для вывода данных на экран используем объект cout из заголовочного файла iostream.h */

int j;

for (j=0; j<n; j=j+1) {

cout<<«Введите массив mas [«<<j<<»]=»;

cin>>mas[j];

}

 // сортировка одномерного массива методом «пузырька» [1]

 // Здесь описываем вспомогательные переменные

int p=n;

int flag;

double m;

do {

flag=0;

 // значение флага flag вначале равно нулю

for (j=0; j<p-1; j++)

/*Внутренний цикл для сравнения соседних элементов массива */

if (mas[j]>mas [j+1]) {

m=mas[j]; mas[j]=mas [j+1]; mas [j+1]=m;

/* Если j-й элемент массива имеет большее значение, чем j+1-й элемент, то меняем местами эти элементы. При этом для удобства используем переменную m */

flag=1;

/* Если переставили местами соседние элементы массива, то значение флага flag равно единице */

}

p -;

} while (flag);

/* Если значение флага flag равно единице, т.е. хотя бы один раз меняли местами элементы, то внешний цикл повторяем ещё раз */

cout <<»\n отсортированный массив: \n»;

for (j=0; j<n; j++)

cout <<mas[j]<<»»;

/* Вывод в одну строку элементов отсортированного массива через два пробела. Физически элементы массива могут занимать несколько строк экрана. */

getch();

 // Для удобства используем задержку.

}

Теперь рассмотрим решение задачи на языке программирования Турбо Паскаль.

const n=15;

 // Описание константы n, которая определяет количество элемент массива

var x:array [1..n] of real;

 // Описание массива х

m: real;

j, p: integer;

f: boolean;

 // Описание вспомогательных переменных

BEGIN

writeln ('Ввод элементов массива');

for j:=1 to n do

begin

write ('Введите элемент массива x [', j, ']= ');

readln (x[j]);

end;

writeln;

p:=n;

repeat

{Начало внешнего цикла}

f:=true;

{Логическая переменная f используется в качестве флага}

for j:=1 to p-1 do

{Начало внутреннего цикла}

if x[j]>x [j+1] then

{Сравнение двух соседних элементов массива}

begin

m:=x[j]; x[j]:=x [j+1]; x [j+1]:=m;

f:=false;

end;

{Конец внутреннего цикла}

p:=p-1;

until f;

{Конец внешнего цикла}

writeln ('отсортированный массив');

for j:=1 to n do write (x[j]:2:2,' ');

{Вывод отсортированных элементов одномерного массива в строку через пробел}

readln;

end.

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

Программа по сути состоит из двух простых функций svap и m_sort. Третья функция priznak используется только, чтобы спрятать лишние параметры.

svap [m] f a= (f, a++[m])

svap (x:y:m) f a= if x>y then svap (x:m) False (a++[y]) else svap (y:m) f (a++[x])

priznak m = svap m True []

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

Svap последовательно сравнивает соседние элементы списка. При сравнении, если элемент стоящий левее больше чем правый, то правый и левый элементы меняются местами. При этом флаг устанавливается в значение «False». При выходе из функции наибольший элемент занимает последнее место. Если их несколько, то самый правый наибольший элемент занимает последнее место. Если при вызове функции svap перестановки элементов списка не было, то функция возвращает значения (True, список).

m_sort m= if (fst (priznak m)==False) then m_sort (snd (priznak m))

else snd (priznak m)

Функция m_sort вызывает функцию priznak до тех пор, пока та не вернет кортеж типа (True, список).

Вывод. В статье рассмотрены наиболее популярные в школах языки программирования. Наиболее короткая программа получилась на функциональном языке программирования Haskell.

Список литературы

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

1. Вирт Н. Алгоритмы и структуры данных. - М.: Мир, 1989. - 406 с.

2. Гради Буч. Объектно-ориентированное проектирование с примерами применения / Пер. c англ. - М.: Конкорд, 1992. - 519 c.

3. Хендерсон П. Функциональное программирование. Применение и реализация. М.: Мир, 2003. 371 с.

4. Хусаинов, И.Г. Решение задач на ЭВМ. Структурное программирование / Стерлитамак: Стерлитамакский филиал БашГУ, 2014. 110 с.

Размещено на Allbest.ru

...

Подобные документы

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

    курсовая работа [116,2 K], добавлен 21.02.2008

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

    реферат [614,8 K], добавлен 12.04.2014

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

    курсовая работа [161,7 K], добавлен 17.12.2015

  • Характеристика языков программирования: краткая история, хронология. Основные виды языков программирования: ассемблер; бейсик. Создание и использование формул в Excel. Применение операторов в формулах. Использование функций в Excel. Сайт дома отдыха.

    отчет по практике [139,1 K], добавлен 03.06.2011

  • Изучение алгоритмов внутренней сортировки массивов данных, сравнение сложности их реализации и производительности. Отличительные черты сортировки включением, выбором, разделением, сортировки Шелла, обменной сортировки. Сравнение методов: плюсы и минусы.

    курсовая работа [203,8 K], добавлен 03.12.2010

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

    реферат [189,8 K], добавлен 06.12.2014

  • Общая характеристика организации массива в виде двоичного дерева. Особенности линейного и двоичного поиска заданного элемента массива. Методика упорядочения массива методом сортировки деревом. Инструкции и текст программы для нечисленной обработки данных.

    курсовая работа [242,3 K], добавлен 12.11.2010

  • Исследование основных особенностей алгоритмов быстрой и поразрядной сортировки данных. Построение графиков зависимости времени сортировки от количества элементов в файле и от степени перемешенности элементов. Описания сортировки чисел и строковых данных.

    лабораторная работа [1,2 M], добавлен 23.07.2012

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

    презентация [85,8 K], добавлен 18.05.2014

  • Создание программы визуализации методов сортировки массива, особенности и направления ее практического применения. Выбор и обоснование среды программирования. Разработка руководства пользователя. Листинг программы и оценка эффективности ее использования.

    дипломная работа [1,0 M], добавлен 15.06.2014

  • Изучение организации диалоговой программы и закрепления основных элементов программирования на языке Паскаль и Си (Delphi, C++ Builder). Описание представления информации в программах на языках высокого уровня. Сравнительная характеристика Delphi и C++.

    курсовая работа [3,1 M], добавлен 27.02.2015

  • Понятия языка программирования, разновидности и характеристика языков. Исторический обзор их создания и применения. Классификация, примеры использования. Характеристики языков программирования с точки зрения элементов объектной модели, их популярность.

    реферат [463,6 K], добавлен 07.09.2009

  • Характеристики и свойства языков программирования. Исследование эволюции объектно-ориентированных языков программирования. Построение эволюционной карты механизмов ООП. Разработка концептуальной модели функционирования пользовательского интерфейса.

    курсовая работа [2,6 M], добавлен 17.11.2014

  • Рассмотрение и ознакомление с одним из наиболее используемых языков программирования - С++. Его применение в процессе работы со строковыми типами данных и символами. Исследование кодов написания программ в режиме разработки консольного приложения.

    курсовая работа [6,1 M], добавлен 20.01.2016

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

    курсовая работа [969,5 K], добавлен 21.04.2016

  • Рассмотрение общих сведений и уровней языков программирования. Ознакомление с историей развития, использования языков программирования. Обзор достоинств и недостатков таких языков как Ассемблер, Паскаль, Си, Си++, Фортран, Кобол, Бейсик, SQL, HTML, Java.

    курсовая работа [759,5 K], добавлен 04.11.2014

  • Основные концепции языков программирования, механизмы типизации данных. Описание языков программирования и методов трансляции. Конечные автоматы и преобразователи. Общие методы синтаксического анализа. Формальные методы описания языкового перевода.

    курс лекций [5,5 M], добавлен 04.12.2013

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

    курсовая работа [400,6 K], добавлен 10.11.2016

  • Виды информационно-вычислительных сетей: локальные, городские, глобальные; их классификация. Разработка программы на языке программирования С: формирование одномерного массива путем замены нулевых элементов на среднеарифметическое, а пробелов - на слова.

    практическая работа [37,5 K], добавлен 20.05.2012

  • Понятия структурного программирования и алгоритма решения задачи. Краткая история развития языков программирования от машинных до языков ассемблера и языков высокого уровня. Процедурное программирование на C#. Методы и программы для моделирования.

    учебное пособие [1,7 M], добавлен 26.10.2010

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.