Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

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

Содержание:

Введение

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

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

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

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

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

Цель курсовой работы: изучить основы программирования по теме «Особенности и примеры использования массивов при разработке программ».

Объект исследования: языки высокого уровня.

Предмет исследования: массивы.

Задачи курсовой работы:

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

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

Акулов О. А., Безручко В. Т., Брайан Керниган, Деннис Ритчи, Ершов М.Н., Комова О. С., Коломийцева С. В., Логинов В.И., Левитин А., Макарова Н. В., Павловская Т.А., Симонович С. В. и другие.

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

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

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

Рассмотрены в виде примеров случаи «выхода за пределы диапазона».

В третьей части предлагаются условия и решения примеров по исследуемой теме.

В конце каждой части работы делаются краткие выводы.

Глава 1. Основные понятия

1.1 Понятие алгоритма и программы

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

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

Рисунок 1 – Этапы решения задачи на ЭВМ

На первом этапе решают следующие задачи:

– разрабатывают общий алгоритм;

– разрабатывают детальный алгоритм;

– оценивают алгоритм.

При разработке алгоритма для обеспечения его компактности, наглядности и правильности необходимо, чтобы он удовлетворял требованиям структурного программирования. В этом случае каждая команда имеет единственный вход и выход, что позволяет поэтапно воспринимать и отлаживать алгоритм[1].

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

Блок-схема – это графическое представление алгоритма[2]. Блок-схемы должны быть оформлены в соответствии с единой системой программной документации (ЕСПД). ЕСПД является набором государственных стандартов, который определяет, в том числе, и элементы блок-схем. В блок-схеме каждому типу действий (вводу исходных данных, вычислению значений выражений, проверке условий и т.п.) соответствует геометрическая фигура, представленная в виде блока[3] .

Таблица графических элементов для описания алгоритма представлена в Приложении А [1].

Целью второго этапа (программирования) является написание программы, которая может быть выполнена на ЭВМ.

На этом этапе выполняют подготовку текста программы на одном из языков программирования, согласно разработанному алгоритму.

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

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

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

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

Целью третьего этапа (тестирования и отладки) называют проверку правильности решения поставленной задачи с использованием компьютера.

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

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

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

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

И из практики известно, что встречаются случаи, когда язык, называемый «низкоуровневым» на одной платформе, компилировался как «высокоуровневый» на другой или когда язык, который принято считать «высокоуровневым», может быть реализован аппаратно ( Лисп-машина, Java Optimized Processor).

Особенности условных уровней можно выразить в рисунке 2.

Рисунок 2 – Поколения языков программирования[6].

При делении языков по степени ориентации на возможности ЭВМ можно выделить 3 группы: машинные, машинно-зависимые и машинно-независимые языки.

Машинные языки и машинно-ориентированные языки относят к языкам низкого уровня [7].

Машинные языки представляют из себя код в виде набора алгоритмов, которые предназначаются для управления непосредственно аппаратными элементами компьютера (рис.3).

Рисунок 3 – Структура машинного кода

Машинно-зависимые языки – это языки, средства которых существенно зависят от особенностей конкретной ЭВМ. К таким языкам относится Ассемблер (рис.4).

Рисунок 4 –Вид кода на ассемблере

Их характерные особенности заключаются в том, что:

  1. они компактны и у них большая скорость выполнения;
  2. они могут напрямую использовать конкретные аппаратные ресурсы;
  3. необходимо учитывать особенности функционирования данной ЭВМ;
  4. очень трудоемкий процесс составления программ;
  5. низкая скорость программирования;
  6. отсутствие возможности использования составленных программ, на компьютерах других типов[8].

AppleScript – машинно-зависимый язык (ориентирован на работу с ПЭВМ типа Макинтош фиры Apple ) близкий к естественному английскому язык программирования, предназначенный для автоматизации повторяющихся задач, преимущественно связанных с процессами компьютерной графики (в том числе - обработки результатов сканирования, ввода изображений, цветоделения, составления каталогов, передачи печатных документов в World Wide Web и др.).

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

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

Языки высокого уровня также можно разделить на 3 группы, представленные в таблице 1.

Таблица 1. Классификация ЯВУ[9].

Языки

Предназначение

Процедурные (алгоритмические) (Basic, Pascal, Cи и др.)

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

Логические (Prolog, Lisp и др.)

предназначены для задачи с тем, чтобы решение следовало из составленного описания

Объектно-ориентированные (Visual Basic, C++, Java)

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

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

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

Ада – язык, ориентированный на применение в системах реального времени и предназначенный для автоматизации задач управления процессами и/или устройствами, например, в бортовых (корабельных, авиационных и др.) ЭВМ. Разработан по инициативе министерства обороны США в 1980-х гг.

Бейсик - разработан в 1963 - 1964 гг. в Дартмутском колледже Томасом Куртом и Джоном Кемени. Первоначально предназначался для обучения программированию. Отличается простотой, легко усваивается начинающими программистами благодаря наличию упрощенных конструкций языка Фортран и встроенных математических функций, алгоритмов и операторов. Существует множество различных версий Бейсика, которые не полностью совместимы друг с другом. На IBM PC широко используются QBasic , Turbo Basic и Power Basic . В начале 1999 г. фирма Microsoft выпустила версию языка Visual Basic 6.0 (VB 6.0), предназначенного для создания многокомпонентных программных приложений для систем уровня предприятий.[10]

Кобол -  разработан в конце 1950-х гг. для решения коммерческих и экономических задач. Отличается развитыми средствами работы с файлами.

Лого -  разработан в Массачусетском технологическом институте в ориентировочно 1970 г. для целей обучения математическим понятиям. Используется также в школах и пользователями ПЭВМ при написании программ для создания чертежей на экране монитора и управления перьевым графопостроителем[11].

Паскаль  - процедурно-ориентированный язык, разработан в конце 1960-х гг. Никлаусом Виртом, первоначально для обучения программированию в университетах. В своей начальной версии Паскаль имел довольно ограниченные возможности, поскольку предназначался для учебных целей, однако последующие его доработки позволили сделать его хорошим универсальным языком, широко используемым в том числе для написания больших и сложных программ. Существует ряд версий языка (например, ETH Pascal, USD Pascal, Turbo Pascal ) и систем программирования на этом языке для разных типов ЭВМ. Для IBM PC наиболее популярной является система Turbo Pascal[12].

Пролог - язык декларативного типа , предназначен для разработки систем и программ искусственного интеллекта. Относится к категории языков пятого поколения. Был разработан в 1971 г. в университете г. Марсель (Франция), относится к числу широко используемых и постоянно развиваемых языков. Последняя его версия Prolog 6.0.

Си  - многоцелевой язык, разработанный Денисом Ритчи в начале 1970-х гг. на базе языка BCPL. Используется на миниЭВМ и ПЭВМ. Является базовым языком операционной системы Unix , однако применяется

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

Си++ - создан Бьярном Страустрапом на базе языка Си. Является его расширенной версией, реализующей принципы объектно-ориентированного программирования. Используется для создания сложных программ. Для IBM PC наиболее популярной является система Turbo C++фирмы Borland (США)[13].

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

Относится к категории процедурно-ориентированных языков.

Наиболее распространенными версиями этого языка являются Фортран IV, Фортран 77 и Фортран 90. Используется на всех классах ЭВМ. Последняя его версия также применяется на ЭВМ с параллельной архитектурой.

Достоинства языков программирования высокого уровня по отношению к языкам низкого уровня[14]:

  1. более выразительный и существенно повышающий наглядность и понятность текста алфавит языка;
  2. для использования допустимы наборы операций, которые не зависят от набора машинных операций;
  3. все конструкции команд (операторов) можно задавать в удобном для человека виде;
  4. есть возможность использования переменных и осуществления действия с ними;
  5. есть возможность поддерживать широкий набор типов данных.

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

Среди разработчиков современного программного обеспечения наиболее популярны следующие основные языки программирования[15]:

SQL, Java., XML, C++ ,HTM. ,Visual Basic, XSL, Delphi. Этот список языков программирования далеко не полный, однако это наиболее востребованные языки, знание которых могут потребовать у программиста при устройстве на работу. Все они являются языками программирования высокого уровня.

Выводы по главе.

При составлении любой программы, необходимо провести математический анализ и постановку задачи, разделить её на этапы решения, для наглядности и лучшего понимания желательно свой алгоритм отобразить схематично в виде блок-схемы. Схема программы оформляется в соответствии с правилами ЕСПД (ГОСТ 19.701-90).

Языки программирования можно классифицировать по разным основаниям и в связи с этим их можно делить по степени ориентации на возможности ЭВМ, по типу решаемых задач, по степени детализации алгоритма. Иногда один и тот же язык может быть как языком низкого, так и высокого уровня.

Глава 2. Описание работы с массивами

Массив это набор однородных данных (чисел, символов, слов), имеющий имя и последовательную нумерацию его элементов. Массив имеет следующие параметры: имя; размерность; тип элементов.

При работе с массивами в основном используются счётные циклы, особенно при вводе и выводе элементов массива [16].

2.1. Виды и типы массивов

2.1.1. Виды массивов

Массивы можно разделить на следующие виды: константные, статистические, динамические и гетерогенные (рис.5)[17].

Рисунок 5 – Виды массивов

Достоинства и недостатки:

  • Статические и константные массивы всегда имеют фиксированный размер
  • Динамические массивы делают работу с данными более гибкой, так как не требуют предварительного определения хранимых объёмов данных, а позволяют регулировать размер массива в соответствии с реальными потребностями.
  • Гетерогенные массивы удобны как универсальная структура для хранения наборов данных произвольных типов. Реализация гетерогенности требует усложнения механизма поддержки массивов в трансляторе языка.

2.1.2.Типы массивов

Количество индексов элементов массива определяет размерность массива. Массивы делятся на одномерные , двухмерные , трехмерные и т.д.

Одномерный массив - представляется в виде это вектора, имеющего имя ( рис.6):

Рисунок 6 –Вид одномерного массива

Двумерный массив – представляется в виде матрицы( рис.7):

Рисунок 7 – Представление двумерного массива в памяти

Многомерные массивы - это массивы, элементами которых являются массивы. Длина каждого массива может быть различна ( рис.8) .

Рисунок 8 – Представление многомерного массива

Описание массивов во многих языках осуществляется по разному[18].

Синтаксис объявления одномерного массива на языке Паскаль:

var имя_массива: array [a..b] of тип_данных;

где a, b – номера (индексы) первого и последнего элементов массива соответственно. Тип данных элементов массива может быть как простым, так и составным.

При обращении к элементу массива в квадратных скобках указывается его индекс.

Пример объявления:

const n=100;

var A: array [1..n] of Real; {Массив из 100 элементов типа Real}

или

const n=100;

type T = array [1..n] of Real; {Тип данных - массив}

var A: T; {Массив из 100 элементов типа Real}

Пример работы:

A[1]:=5; {В массив А в ячейку с индексом 1 записано число 5.}

Type type_array=Array [1..5] Of Integer;

{описывается тип одномерного массива с именем type array, состоящий из пяти компонент типа Integer}

Var a: type_array; {Переменная a описана как переменная типа type_array}

b: Array [1..5] Of Integer;

c: Array [1..5] Of Integer;

{Переменные b, с описаны как одномерные массивы из пяти компонент типа Integer }

Синтаксис объявления одномерного массива в различных языках можно отразить в таблице 2:

Таблица 2. Объявления одномерного массива ( составлено автором)

СИ:

Basic

Pascal

тип_данных имя_массива[размер];

int С[30]; 
double С[45]; 

int С[6] = {1,3,2,3,5,8},
char С[] = {’l’,’m’,’n’}

DIM С(45) - зарезервировать место под одномерный массив чисел С размером 45;

DIM К$(4) - зарезервировать место под одномерный массив К$ символьных строк размером 4;

DIM А%(5,2) - зарезервировать место под двумерный массив целых чисел А размером 10;

var имя_массива: array [a..b] of тип_данных;

var a:array[1..18] of char;

k = array[−50..45] of real;

lan = array[char] of boolean

Синтаксис объявления двумерного массива на языке Паскаль:

Синтаксис объявления двумерного массива:

var имя_массива: array [a..b, c..d] of тип_данных_массива;

где a, b – номера первой и последней строк массива соответственно;

с, d – номера первой и последней ячеек строки массива соответственно.

Тип данных также может быть как простым, так и составным[19].

d: Array [1..3, 1..3] Of Real;

{Переменная d описана как двухмерный массив из девяти компонент типа Real }

Пример объявления и использования[20]:

Const n=5; m=5;

{Объявление массива из 10 строк, в каждой из которых 5 ячеек}

Var A: array [1..m, 1..n] of real;

i, j : integer; {Переменные цикла}

Begin

{Инициализация значений массива}

For j:=1 to n do {Проход массива по столбцам}

For i:=1 to m do begin {Проход массива по строкам}

Write(‘Введите A[’, i, ’,’, j, ’]=’);

ReadLn(A[i, j]); {Заполнение массива}

end;

Writeln(‘Массив А’); {Вывод массива на экран}

For j:=1 to n do begin

For i:=1 to m do Write(A[i, j]);

WriteLn;

end;

End.

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

Рисунок 9 – Способы описания многомерного массива

Порядок работы с массивами можно представить по шагам.

Шаг 1. Объявление массива (задание максимального размера массива).

Шаг 2. Заполнение массива. Для этого чаще всего используется арифметический цикл

Шаг 3. Обработка элементов массива.

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

Шаг 4. Вывод результата обработки[22].

Рассмотрим примеры программ с массивами.

Пример № 2.1. Ввести двумерный массив. Определить среднее геометрическое положительных чётных элементов, считая, что они в нём есть.

Блок - схема к примеру № 2.1 (рис.10):

Рисунок 10 – Алгоритм решения примера 2.1.

Код программы находиться в Приложении Б.

Результат решения показан на рисунке 11.

Рисунок 11 – Результат решения примера 2.1.

Пример 2.2. Задан двумерный массив В (10, 10), заполненный случайными числами из диапазона -10 – 10. Найти и вывести на экран произведение элементов побочной диагонали (рис.12).

Рисунок 12 – Программа и результат решения примера 2.2.

2.2. Случаи выхода за границы диапазона в массивах

Контроль выхода за границы массива осуществляется интерпретатором.

Так как в качестве индексов элементов массива можно использовать переменные и выражения, то возможны ситуации выхода за границы массива[23].

Например:

var К : array[1..10] of integer;

begin

К[12]:=3; {выход за границы массива}

end.

Программа откомпилируется, но в ходе ее выполнения выход за границы массива приведёт к ошибкам в программе в связи с некорректным номером элемента массива К.( их всего 10, а заполняется 12-й элемент)

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

Выводы по главе.

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

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

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

Глава 3. Примеры использования массивов при решении задач

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

3.1. Одномерные массивы

Пример 3.1. Дана последовательность из 20 целых чисел. Определите количество четных чисел.

Программа:

Program p1;

var

a:array[1..20] of integer;

i,k:integer;

begin

k:=0;

for i:=1 to 20 do

begin

readln(a[i]);

if a[i] mod 2 =0 then k:=k+1;

end;

writeln('Кол-во четных чисел ',k);

end.

Демонстрация решения:

Пример 3.2. Дан массив M(10).К чётным элементам прибавить число A,а из элементов с чётными номерами вычесть число B.

Программа:

Program p2;

Uses CRT;

Const n=10; {n - это число элементов массива}

Type myarray=Array[1..n] Of Integer;

Var m: myarray;

A,b, i: Integer; {i - это переменная для работы с элементами массива}

Begin

Writeln('введите A' ); Read ( A);

Writeln('введите b' ); Read (b);

Writeln('введите n чисел');

For i:=1 To n Do

Begin {ввод массива с клавиатуры}

Read(m[i]);

If I mod 2 =0 then m[i]:= m[i]-b else m[i]:= m[i]+a ;

End ;

Writeln(' новый массив');

For i:=1 To n Do

Writeln( m[i]); {вывод результата на экран}

Readln; End.

Демонстрация решения:

Пример 3.3. Дан Массив А(10).Поменять его половины следующим образом: первый элемент с последним, второй с предпоследним и так далее.

Программа:

Program p3;

Uses CRT;

Const n=10; {n - это число элементов массива}

Type myarray=Array[1..n] Of Integer;

Var a: myarray;

I,k,l: Integer; {i - это переменная для работы с элементами массива}

Begin

Writeln('введите ', 10, ' чисел');

For i:=l To n Do {ввод массива с клавиатуры}

Read(a[i]);

K:= (n div 2)-1;

For i:=1 To k Do {меняем местами элементы массива}

Begin

L:= a[I];a[i]:= a[ n+1-I ];a[n+1-I]:=L;

End;

Writeln(' новый массив');

For i:=l To n Do {вывод массива}

Writeln (a[i]); Readln; End.

Демонстрация решения:

Пример 3.4. Сколько элементов массива превосходят по модулю заданное число А.

Программа:

Program p4;

Uses CRT;

Const

n=5;

var

x:array[1..n] of integer;

I,K,A: integer ;

Begin

Writeln('введите A ');

Readln (A);

K:=0;

Writeln('введите 5 чисел');

FOR I:=1 TO n DO

Begin

Readln (x[I]);

if abs(x[I])>A then K:=K+1; end;

Writeln('Таких чисел- ');

Write (K); end.

Демонстрация решения:

Пример 3.5. В заданном одномерном массиве поменять местами соседние элементы (стоящие на четных местах, с элементами, стоящими на нечетных местах).

Программа:

Program p5;

Uses CRT;

var a:array[1..100] of integer;

i,n,k: integer;

begin write('Ââåäèòå ðàçìåð ìàññèâà ');

readln(n);

for i:=1 to n do

begin write('a[',i,']=');

read(a[i]);

end;

i:=1;

while i<n do

begin

k:=a[i]; a[i]:=a[i+1]; a[i+1]:=k; i:=i+2

end;

write(' Новый массив');

writeln;

for i:=1 to n do

writeln('a[',i,']=',a[i]); end.

Демонстрация решения:

Пример 3.6. Найти элементы массива кратные 3 и 5. Сколько их?

Программа:

program 6;

var n,i,k: longint;

a: array [1..100] of integer;

begin

k:=0;

writeln ('Введите размер массива'); readln(n);

for i:=1 to n do begin

write ('a[',i,']=');

readln (a[i]);

end;

writeln;

for i:=1 to n do begin

if (a[i] mod 3=0) or (a[i] mod 5=0) then begin

writeln ('a[',i,']=',a[i]);

inc(k);

end;

end;

writeln ('Всего ',k,' элементов кратных 3 или 5');

readln;

end.

Демонстрация решения:

Пример 3.7. Найти сумму элементов, принадлежащих промежутку от А до В (А и В вводить с клавиатуры).

Программа:

Program7;

var c: array [1..100] of integer;

n,i,s,A,B: integer;

begin write ('введите количество элементов массива n=');

readln(n);

for i:=1 to n do

begin write ('введите c[',i,']='); readln (c[i]); end;

s:=0;

begin write ('введите число A='); readln (A); end;

begin write ('введите число B='); readln (B); end;

for i:=A to B do

s:=s+c[i]; write (s); end.

Демонстрация решения:

Пример 3.8 . Дано 50 целых чисел. Распечатать их в обратном порядке по 10 чисел в строке.

Текст программы находится в Приложении В.

Демонстрация решения:

3.2. Двумерные массивы

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

Программа:

program 9;

Uses CRT;

Const n=5;

var a:array[1..n,1..n] of integer;

i,j,index,undex,max:integer;

begin

ClrScr; Randomize;

for i:=1 to n do

for j:=1 to n do

begin

a[i,j]:=Random(21)-6;

gotoxy(j*5+5,i);

write(a[i,j]);

end;

max:=abs(a[1,1]);

for i:=1 to n do

for j:=1 to n do

if abs(a[i,j]) >max then

begin

max:=a[i,j]; index:=i; undex:=j; end;

writeln('');

writeln('Max=',max,' i=',index,' j=',undex);

for i:=1 to n do

for j:=1 to n do

if (index<>i) and (undex<>j) then

begin

gotoxy(j*5+5,i+10); write(a[i,j]); end;

end.

Демонстрация решения:

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

Программа:

program р11 ;

var a:array [1..100,1..100] of integer;

i,j,n:integer;

c:integer;

begin write('введите размер матрицы n=');

readln(n);

for i:=1 to n do

for j:=1 to n do

begin write('a[',i,',',j,']=');

readln(a[j,i]);

end;

writeln('вы ввели такую матрицу:');

for i:=1 to n do

begin for j:=1 to n do

write(a[i,j]:3);

writeln;

end;

for i:=1 to n do

for j:=1 to n do

begin c:=a[i,j];a[i,j]:=a[j,i];a[j,i]:=c; end;

writeln('получилась матрица:');

for i:=1 to n do

begin for j:=1 to n do

write(a[i,j]:3); writeln; end; end.

Демонстрация решения:

Пример 3.11. Сформировать квадратную матрицу вида:

n 0 0 0...0 0 0

0 n-1 0 0...0 0 0

0 0 n-2 0...0 0 0

. . . . . . . .

0 0 0 0...0 2 0

0 0 0 0...0 0 1

Программа:

Program11;

var a:array[1..30,1..30] of integer;

i,j,n:integer;

begin writeln('введите размер матрицы:');

write('количество строк=');readln(n);

for i:=1 to n do

for j:=1 to n do

if i=j then a[i,j]:=n-j+1

else a[i,j]:=0;

for i:=1 to n do

begin for j:=1 to n do write(a[i,j]:3);

writeln

end

end.

Демонстрация решения:

Пример 3.12. Задана квадратная матрица. Переставить строку с максимальным элементом на главной диагонали со строкой с заданным номером m.

Программа:

program 12;

var a:array[1..30,1..30] of integer;

i,j,n,k,m,max,at:integer;

begin writeln('Введите размерность матрицы:');

readln(n);

write('Введите номер строки m=');

readln(m);

for i:=1 to n do

for j:=1 to n do

begin write('a[',i,j,']='); readln(a[i,j]); end;

writeln('Ваша матрица:');

for i:=1 to n do

begin for j:=1 to n do

write(a[i,j]:4); writeln; end;

max:=1;

for i:=1 to n do

if a[max,max]<a[i,i] then max:=i;

for i:=1 to n do

begin at:=a[m,i]; a[m,i]:=a[max,i]; a[max,i]:=at; end;

writeln('Полученная матрица:');

for i:=1 to n do

begin for j:=1 to n do

write(a[i,j]:4);

writeln; end; end.

Пример 3.13. Задана квадратная матрица. Переставить строку с минимальным элементом на главной диагонали со строкой с заданным номером m.

Текст программы находится в Приложении Г.

Демонстрация решения:

Заключение

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

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

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

В работе подробно рассмотрены теоретические основы использования массивов с соблюдением принципов программирования.

Выделены достоинства и недостатки языков программирования, составлены и решены задачи по рассматриваемым темам, сформулированы выводы по главам.

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

Сформированы основные представления по рассматриваемой теме: «Особенности и примеры использования массивов при разработке программ».

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

Список используемой литературы

  1. ЕСПД: ГОСТ 19.701-90. «Схемы алгоритмов, программ, данных и систем. Условные обозначения и правила выполнения».
  2. Акулов О. А. Информатика: базовый курс : учебник для вузов– М.: Омега-Л, 2007. – 557 с.
  3. Безручко В. Т. Информатика : Курс лекций : учеб. Пособие для– М.: Форум : Инфра-М, 2006. – 431 с.
  4. Брайан Керниган, Деннис Ритчи Язык программирования Си, Вильямс, 2015-288с.
  5. Ершов М.Н. Информатика. Численные методы решения задач. Конспект лекций. : КГМТУ, 2013.- 73 с.
  6. Комова О. С., Коломийцева С. В. Основные алгоритмические конструкции: учебное пособие /О. С. Комова, С. В. Коломийцева. – Хабаровск: Изд-во ДВГУПС, 2014. – с.
  7. Логинов В.И., Шемагина Л.Н. Основы алгоритмизации: Учебно-методическое пособие.-Н.Новгород: ФГОУ ВПО «ВГАВТ», 2010-80 с.
  8. Левитин А. Алгоритмы: введение в разработку и анализ.-М.: Издательский дом «Вильямс», 2006.-576 с.
  9. Макарова Н. В. Информатика: учебник - М. и др.: Питер, 2011. - 576 с.
  10. Павловская Т.А. Паскаль. Программирование на языке высокого уровня. Учебник для вузов. /Т. А. Павловская. – СПб.: Питер, 2010. – 464 с.
  11. Подбельский В.В. Язык C#. Базовый курс. 2-е издание, Финансы и статистика, 2013-426 с.
  12. Симонович С. В. Информатика: Базовый курс : учебник для вузов – СПб. : Питер, 2008. – 639 с.
  13. Трофимова В. В. Информатика : учебник для вузов–М. : Юрайт : Высшее образование, 2010. – 911 с.
  14. Борисенко В.В. Основы программирования [Электронный ресурс]— М.: Интернет-Университет Информационных Технологий (ИНТУИТ), 2016.— 323 c.— Режим доступа: http://www.iprbookshop.ru/22427.— ЭБС «IPRbooks»;
  15. Алексеев В.Е. Графы и алгоритмы. Структуры данных. Модели вычислений [Электронный ресурс]: М.: Интернет-Университет Информационных Технологий (ИНТУИТ), 2016.— 153 c.— URL: http://www.iprbookshop.ru/16085.— ЭБС «IPRbooks», (Дата обращения: 05.09.2017)
  16. Шень А.Х. Практикум по методам построения алгоритмов [Электронный ресурс]/ Шень А.Х.— Электрон. текстовые данные.— М.: Интернет-Университет Информационных Технологий (ИНТУИТ), 2016.— 335 c.— URL:http://www.iprbookshop.ru/16727.— ЭБС «IPRbooks», (Дата обращения: 05.09.2017)
  17. Синюк В.Г. Алгоритмы и структуры данных [Электронный ресурс]: лабораторный практикум. Учебное пособие/ Синюк В.Г., Рязанов Ю.Д.— Электрон. текстовые данные.— Белгород: Белгородский государственный технологический университет им. В.Г. Шухова, ЭБС АСВ,2013.—204c.— URL: http://www.iprbookshop.ru/28363.— ЭБС «IPRbooks», (Дата обращения: 05.09.2017).

Приложение А

Графические элементы для описания алгоритмов

Приложение Б

Пример № 2.1. Код программы

Приложение В

Пример 3.8. Дано 50 целых чисел. Распечатать их в обратном порядке по 10 чисел в строке

Код программы:

const n=50; d=10;

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

i, k : integer;

begin

{ввод массива:}

Writeln('Dan massiv^');

For i:=1 To N Do begin x[i]:=random(70); Write(x[i]:3); end;

Writeln;

Writeln('Sortirovannii massiv^');

{вывод массива по d чисел в строке:}

k:=0; {номер числа в строке}

for i:=n downto 1 do

begin

k:=k+1;

write(x[i]:4);

if k=d then

begin

k:=0; writeln

end;

end;

if k<>0 then writeln

end.

Пример 9.Листинг программы:

Приложение Г

Пример 3.13. Листинг программы:

program p8;

var a:array[1..30,1..30] of integer; i,j,n,k,m,min,at:integer;

begin writeln('Введите размерность матрицы:'); readln(n);

write('Введите номер строки m='); readln(m);

for i:=1 to n do

for j:=1 to n do

begin a[i,j]:=Random(31)-5; end;

writeln('Ваша матрица:');

for i:=1 to n do

begin for j:=1 to n do

write(a[i,j]:4); writeln

end;

min:=1;

for i:=1 to n do

if a[min,min]>a[i,i] then min:=i;

for i:=1 to n do

begin at:=a[m,i]; a[m,i]:=a[min,i];

a[min,i]:=at

end;

writeln('Полученная матрица:');

for i:=1 to n do

begin for j:=1 to n do

write(a[i,j]:4);

writeln

end; end.

  1. Акулов О. А. Информатика: базовый курс : учебник для вузов– М.: Омега-Л, 2007. – с.47

  2. ЕСПД: ГОСТ 19.701-90. «Схемы алгоритмов, программ, данных и систем. Условные обозначения и правила выполнения».

  3. Безручко В. Т. Информатика : Курс лекций : учеб. Пособие для– М.: Форум : Инфра-М, 2006. – с.29

  4. Брайан Керниган, Деннис Ритчи Язык программирования Си, Вильямс, 2015-с.25

  5. Безручко В. Т. Информатика : Курс лекций : учеб. Пособие для– М.: Форум : Инфра-М, 2006. – с.65

  6. Борисенко В.В. Основы программирования [Электронный ресурс]— М.: Интернет-Университет Информационных Технологий (ИНТУИТ), 2016.— c128.— Режим доступа: http://www.iprbookshop.ru/22427

  7. Борисенко В.В. Основы программирования [Электронный ресурс]— М.: Интернет-Университет Информационных Технологий (ИНТУИТ), 2016.— c.129— Режим доступа: http://www.iprbookshop.ru/22427.

  8. Макарова Н. В. Информатика: учебник - М. и др.: Питер, 2011. - с.58

  9. Логинов В.И., Шемагина Л.Н. Основы алгоритмизации: Учебно-методическое пособие.-Н.Новгород: ФГОУ ВПО «ВГАВТ», 2010- с.65

  10. Симонович С. В. Информатика: Базовый курс : учебник для вузов – СПб. : Питер, 2008. – с.236

  11. Трофимова В. В. Информатика : учебник для вузов–М. : Юрайт : Высшее образование, 2010. – с.453

  12. Попов В.Б. Паскаль и Делфи. Учебный курс. Питер, 2005- с.246

  13. Подбельский В.В. Язык C#. Базовый курс. 2-е издание, Финансы и статистика, 2013- с.231

  14. Макарова Н. В. Информатика: учебник - М. и др.: Питер, 2011. - с.128

  15. Ершов М.Н. Информатика. Численные методы решения задач. Конспект лекций. : КГМТУ, 2013.- с.30

  16. Левитин А. Алгоритмы: введение в разработку и анализ.-М.: Издательский дом «Вильямс», 2006.- с.413

  17. Алексеев В.Е. Графы и алгоритмы. Структуры данных. Модели вычислений [Электронный ресурс]: М.: Интернет-Университет Информационных Технологий (ИНТУИТ), 2016.—URL: http://www.iprbookshop.ru/16085

  18. Подбельский В.В. Язык C#. Базовый курс. 2-е издание, Финансы и статистика, 2013- с.390

  19. Ершов М.Н. Информатика. Численные методы решения задач. Конспект лекций. : КГМТУ, 2013.- с.30

  20. Павловская Т.А. Паскаль. Программирование на языке высокого уровня. Учебник для вузов. /Т. А. Павловская. – СПб.: Питер, 2010. – с. 213

  21. Комова О. С., Коломийцева С. В. Основные алгоритмические конструкции: учебное пособие /О. С. Комова, С. В. Коломийцева. – Хабаровск: Изд-во ДВГУПС, 2014. –с. 26

  22. Шень А.Х. Практикум по методам построения алгоритмов [Электронный ресурс]/ Шень А.Х.— Электрон. текстовые данные.— М.: ИНТУИТ, 2016.— URL:http://www.iprbookshop.ru/16727

  23. Симонович С. В. Информатика: Базовый курс : учебник для вузов – СПб. : Питер, 2008. – с.489