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

Основы программирования на языке Pascal (Виды языков программирования)

Содержание:

ВВЕДЕНИЕ

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

Языки программирования Java, Си, С++, BASIK и многие другие были придуманы для изучения программирования. Многие из них заслужили свое признание, они применяются для обучения в учебных заведениях. [8, с.36]

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

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

Обзор источников. Рассмотрим основные использованные источники.

Так Краснов С.В. в своей книге «Программирование на языке высокого уровня Turbo Pascal » рассматривает вопросы разработки программы[8,c.2], уделяя большое внимание основным понятиям, операторам ввода и вывода данных, составлению программ, реализующих ветвление, циклические процессы, работе с массивами, процедурами и записями. Понятия циклов и их основные условия применения, использования и ограничения, что позволяет безошибочно действовать при создании программы. 

В своей книге «Программирование на языке Паскаль» Перминов О.Н. изложил детальное и формальное изложение всех конструкций языка[11,c.3], а приведенные примеры изложены доступным языком с использованием различных приемов программирования. Подробно расписаны циклические алгоритмы, все их разновидности с приведение подробных примеров, что позволяет свободно ориентироваться в большом потоке информации, выбрать для своей работе именно то, что нужно для достижения поставленной цели.

Вышесказанное позволяет сделать вывод:

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

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

Цель работы: изучение циклических структур в языках высокого уровня.

Задачи исследования:

- ознакомиться с особенностями некоторых современных языков программирования высокого уровня;

- исследовать циклические структуры в языках высокого уровня;

- подготовить литературный обзор источников по теме работы;

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

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

Предмет исследования – циклические структуры.

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

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

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

Глава 1. Языки программирования высокого уровня

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

Колоссальным достижением для программистов стало то, что компьютер сам переводил языки в машинный код. Джон Моучли создал систему «ShortCode»в конце 40х годов, она являлась языком программирования высокого уровня. Первый компилятор был создан Г.Хоппер в 1951 году. Пик в истории языков программирования был в середине 50х годов. Машинный язык программирования стал терять свою популярность из-за того что появился более новый тип выступающий в роли посредника между программистами и машинами. Таким стал Фортран, разработанный группой программистов IBM в 1954 году. [1]

Создателями BASIC стали сотрудники Дартмутского колледжа Джон Кемени и Томас Курц в середине 60х.

Число языков программирования увеличивалось до трёх тысяч, по сравнению с 60ми годами, когда их было всего лишь единицы. Некоторые из них получили своё признание в истории. Но на практике используется не более двух десятков. В 60-е годы был создан универсальный язык, что бы преодолеть разногласия пользователей. Этим языком стал PL/I (Programm Language One)1967г. Главным конкурентом в 1968г стал АЛГОЛ-68.

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

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

Таблица 1

Популярности языков программирования на 2018г.

Популярность
текущая

Популярность
год назад

Язык
программирования

Процент
популярности

Годовой баланс популярности

1

1

Java

17.994%

-1.53%

2

2

C

17.866%

+0.65%

3

3

C++

9.658%

-0.84%

4

4

PHP

9.180%

-0.21%

5

5

(Visual) Basic

5.413%

-3.07%

6

7

C#

4.986%

+0.54%

7

6

Python

4.223%

-0.27%

8

8

Perl

3.427%

-0.60%

9

19

Objective-C

3.150%

+2.54%

10

11

Delphi

2.428%

+0.09%

11

9

JavaScript

2.401%

-0.41%

12

10

Ruby

1.979%

-0.51%

...

...

...

...

...

17

16

Pascal

0.622%

-0.05%

1.1. Виды языков программирования

Язык программирования Java — объектно-ориентированный язык программирования, его разработала компания Sun Microsystems с 1991 года, а выпустили его официально уже 23 мая 1995 года. Раньше этот язык назывался Oak (James Gosling) и был разработан для электроники, применяемой в быту, но позже был переименован в Java и использовался для написания апплетов, приложений и серверного программного обеспечения.

Язык программирования Си (англ. C)стандартный процедурный язык программирования. Разрабатывался он в начале1970-х годов. Его разработчиками являлись сотрудники Bell Labs,  Кен Томпсон и Деннис Ритчи. Этот язык был создан для операционной системы UNIX. Си является очень эффективным. Он является самым популярным языком для создания системного программного обеспечения. Его часто используют для создания прикладных программ. Так же этот язык применяется для обучения программированию. В дальнейшем синтаксис языка Си стал основой для многих других языков. [9, с.77]

Язык программирования C++ появился в начале 1980-х годов, когда сотрудник фирмы Bell Laboratories Бьёрн Страуструп придумал ряд усовершенствований к языку C. В 1998 году язык обрел международный стандарт C++: ISO/IEC 14882:1998 «Standard for the C++ Programming Language»; позже была принята другая версия стандарта/IEC 14882:2003, были исправлены выявленные ошибки и недочёты предыдущей версии стандарта.

С 2009 года велась работа по обновлению предыдущего стандарта, предварительной версией нового стандарта изначально был C++99, а спустя год C++0x, сегодня — C++11, куда были включены дополнения в ядро языка и расширение стандартной библиотеки, в том числе большую часть TR1.

Язык программирования Бе́йсик (BASIC — сокращение от англ. Beginner’s All-purpose Symbolic Instruction Code — универсальный код символических инструкций для начинающих; англ. basic — основной, базовый) — этот язык относится к высокоуровневым языкам программирования. В 1963 году преподавателями Дартмутского Колледжа Джоном Кемени и Томасом Куртцом был придуман язык программирования бейсик. Его создали для решение проблем, которые встречались в старых языках программирования. [18, с.36]

1.2. Этапы разработки программы

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

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

Язык низкого уровня. Суть этого языка заключается в записи команд – приказов. Причем самыми простыми и легкими командами. Этот язык называется машинно-ориентированным языком. Что бы описать алгоритм любой сложности, достаточно воспользоваться системой команд. Хотя запись в этом виде будет очень большой для создания сложной программы, что немало вероятно человек может допустить ошибку при написании ее, так как этот язык не для пользования человеком, потому, что запись программы производиться при помощи нулей и единиц. [2, с.37]

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

Языки программирования высокого уровня очень легкое и наглядное описание. Отличительной чертой этих языков является их ориентация на систему операторов. К этим языкам относятся: Фортран, Си, Алгол, Бейсик, Паскаль. Записываются такие программы набором слов из английского языка, которые имеют свое обозначение, поэтому человеку стало проще работать с такими программами. Такую программу очень легко понять, и в применение она более доступна.

Язык программирования сверхвысокого уровня. Этот язык отличается от языка программирования высокого уровня тем, что ему не надо описывать принцип работы, нежели языку высоко уровня. Сюда можно отнести Алгол-68, он очень универсален тем, что выполняет работу высокой сложности. Вообще Алгол-68 является процедурным языком программирования, который описывает последовательность команд, но из-за своих развитых способностей его также используют для написания программ практически в любом стиле. Также в эту категорию языков можно включить и APL,основной структурой данных в этом языке является однородный массив, содержащий числа или литеры. APL имеет простую синтаксическую структуру; использует целый ряд примитивных одноместных и двухместных функций. [5, с.20]

1.3. Различия языков программирования

Java-больше подойдёт для работы в сети Интернет или если вы хотите что бы ваши программы могли выполняться на нескольких платформах в виде Windows, Linux, MacOS, это будет лучшим выбором. Так же язык программирования Java требует программное обеспечение Java Runtime, устанавливаемое на компьютер, не у всех пользователей такое обеспечение имеется. У языка программирования есть свои плюсы и минусы. К примеру людям выбравшим программирование для чайников будет сложно, этот язык не прост из-за создания на платформе Windows визуальных программ по сравнению с другими программами. Так же он не может создавать исполняемые файлы, что не очень приемлемо начинающих программистов и многих пользователей. Но при всём этом в нём можно найти и плюсы, к примеру, то, что он является объектно-ориентированным. [15, с.3]

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

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

Бейсик- Очень быстрая разработка графических интерфейсов. В процессе разработки возможность предоставления заказчику части сделанной работы для тестирования и оценки. Малые труда время затраты. Возможность использования сторонних ActiveX компонентов, классов, объектов, дизайнеров. Если писал компоненты, библиотеки не сам, не с нуля, то не известно еще как это все будет работать и крутится, и какие ошибки могут вылезти в дальнейшей эксплуатации программного обеспечения. [20, с.14]

Глава 2. Программы циклической структуры

Циклические структуры – это выполнение одного и того же действия в алгоритме. Часто при составлении программ встречается, то, что нужно повторить какое либо действие. [3, с.36]

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

Циклы бывают:

  • Цикл с параметром
  • Цикл с предусловием
  • Цикл с постусловием

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

Рис.1.Цикл с параметром, цикл с предусловием, цикл с постусловием

а), б) – циклическая структура “Для каждого”

в) – циклическая структура “Пока”

г) – циклическая структура “До”

Цикл с предусловием – условие выполнения проверяется до шага цикла.

While <условие выполнения> Do <оператор>;

Рис.2. Цикл с предусловием

Пример:
Programtest1;
Varz:Integer;
Begin
z:=10;
Whilez>0 Do
z:=x-3;
WriteLn(z);
End.

Цикл с постусловием – условие выполнения проверяется после шага цикла.

Repeat
<оператор>;
<оператор>;

<оператор>;
Until <условие завершения>;

Рис.3. Цикл с постусловием

Пример:
Programtest2;
Varb:Real;
Begin
b:=100;
Repeatb:=b/2;
Untilb<10;
Writeln(b:0:2);
End.

Цикл с параметром – выполняется определенное заранее известное количество раз.

For <имя переменной>:=<нач. значение> To <кон. значение> Do <оператор>;

Рис.4. Циклспараметром

Пример:
Programtest3;
Varj:Integer;
Begin 
Forj:=1to5Do
WriteLn(‘*’);
WriteLn;

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

Цикл с постусловием выполняется до тех пор, пока условие не станет истинно, если условие ложно, цикл продолжается.

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

2.1.Организация циклических структур

Пример организации программы на языке Java:

Программа обработки списка

importjava.io.*

Объекты в классеlist содержат список имен и три открытых

метода, которые называются getnames, sortlist и printnames.

class list

{ final int ListLength = 10;

private String[] names;

public list()

{ names = new String[ListLength]}

public void getnames{}

{ int i;

Datalnput data = new DatalnputStream(System.in);

for(i = 0; i < ListLength; i++)

{ try( names[i] = data.readLine();

catch(IOException e){};}

public void sortnames()

{ int i,j;String pivot;for(i = 1; i < ListLength; i++)

{ pivot = names[i]);j = i - 1;

while((j >= 0) && (pivot.compareTo(names[j]) < 0))

{ names[j+1]=names[j];j--;}

names[j+1] = pivot;}}

public void printnames()

{ int i;for(d = 0; i < ListLength; i++)

System.out.println(names[i]);}}

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

class sort{ public static void main (String args[])

{ list namelist = new list();

namelist.getnames();

namelist.sortnames();

namelist.printnames(); }}Конецформы

Конецформы

Конецформы

Пример организации программы на языке Си:

/* Программа обработки списка */#include<stdio.h>

#include <string.h>

main()

{

char names[10][9], pivot[9];

inti, j;

/* Ввод имен с клавиатуры */

for(i = 0; i < 10; ++i)

scanf("%s", names[i]);

/* Сортировка списка имен */

for(i = 1; i< 10; ++i)

{ strcpy(pivot,names[i]);

j = i - 1;

while((j>=0) && (strcmp(pivot, names[j]) < 0)

{ strcpy(names[j+1], names[j]); --j;}

strcpy(names[j+1],pivot);}

/* Печать отсортированного списка */

for( i = 0; i < 10; ++i){

printf("%s\n", names[i]);}

Пример организации программы на языке С++:

// Программа обработки списка

#include<iostreain.h>

#include<string.h>

constintListLength = 10;

// Все объекты класса list содержат список имен и три открытых

// метода, которые называются getnames, sortlist и printnames.

class list

{ private:

char names[ListLength][9];

public:

void getnames()

{ int i;

for(i = 0; i< ListLength; *+i)

cin » names[i]; }

void sortlist()

{ int i,j;

char pivot[9];

for(i = 1; i < ListLength; ++i)

{ strcpy(pivot, names[i]);

j = i - 1;

while((j >= 0) && (stremp(pivot, names[j]) < 0))

{ strcpy(names[j+1], names[j]); --j;}

strcpy(names[j+1],pivot); } }

void printnames()

{ int i;

cout « endl;

for(i = 0; i < ListLength; ++i)

cout « names[i] « endl; } }

// Создание объекта с именем namelist и обращение к нему с // требованием ввести несколько имен, отсортировать их, а // затем вывести отсортированный список на экран.voidmain()

{ list namelist;

namelist.getnames();

namelist.sortlist();

namelist.printnames();

Пример организации программы на языке Бейсик:

В языке Basic циклу До соответствует следующая структура программы:

Операторы начальных присваиваний

Тело цикла

IF условие GO ТО 2

Циклу Пока соответствует структура программы:

Операторы начальных присваиваний

IF условие GO ТО 5

Тело цикла

GO TO 2

. . .

Рассмотрим следующую программу

10 P=0

20 PRINT P, P*P

30 Р=Р+1

40 IF P<=10 GОТО 20

(*—знак умножения, <= употребляется вместо ). Когда выполняется программа на экран выводятся числа от 0 до 10 и их квадраты.

Это пример цикла До. Здесь операторы 20, 30 образуют тело цикла. Оператор 20 непосредственно является телом цикла. Наряду с операторами 10 и 40, организующим цикл, относится оператор 30. Оператор 40— оператор условного перехода — осуществляет после каждого продолжения цикла. Оператор 10 осуществляет начальные присваивания и обеспечивает возможность выполнения цикла при первом его прохождении. В цикле — многократно — выполняются операторы 20—40.

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

Значения Рнач, Ркон, Н назовем параметрами цикла. При этом количество повторений цикла определяется по формуле

.

Это значение можно использовать для контроля правильности организации цикла.

2.2. Решение циклических алгоритмов

Очень многие алгоритмы являются циклическими. Обычно люди поручают машине трудную работу, где нужно много считать, и счет производится по некоторым одинаковым правилам. [10, с.36]

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

Оператор цикла с предусловием while. Эти циклы применяются тогда, когда выполнение цикла связано с некоторым логическим условием. Цикл с предусловием имеет две части: условие выполнения цикла и тело цикла.

При выполнении оператора while определенная группа операторов выполняется до тех пор, пока определенное в операторе while булево условие истинно.

Таблица 2

Основные типы блоков блок-схемы алгоритма

Если условие сразу ложно, то оператор не выполнится ни разу.

Общая форма записи следующая:

while <булево выражение> do

begin
 группа операторов

end;

Операторные скобки ставятся тогда, когда требуется отделить определенную группу операторов от программы, которую нужно повторить в цикле. Если в цикле нужно выполнить только один оператор, то операторные скобки не ставят. [6, с.88]

Когда мы работаем с циклом предусловия нужно помнить о том что, значение условия выполнения цикла должно быть выявлено еще до начала цикла; тело цикла выполняется, если условие истинно, после чего повторяется проверка условия. Если условие ложно, то осуществляется выход из цикла; что бы значение условия выполнения цикла не повторялось бесконечно, нужно что бы хоть один из операторов входящий в тело цикла влиял на значение условия выполнения цикла. [12, с.99]

Задача №1. Составить алгоритм нахождения суммы цифр числа.

Решение:

Program cikl_6;

uses crt;

var i,n,k,s : longint;

b : integer;

begin

clrscr;

write('введитечисло ');readln(n);

k:=1;

while n>=1 do

begin

b:=trunc(n) mod 10;

s:=s+b;

n:=trunc(n)div 10;

k:=k+1;

end;

write('s=',s);

readln;

end.

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

Общая форма записи:

repeat

операторы

until <условие>

В этом цикле находятся некоторые отличия цикла repeat в организации, по сравнению с while: в цикле repeat для выполнения нескольких операторов не следует вставлять эти операторы в операторные скобки begin ... end. Зарезервированные слова repeat и until выполняются как операторные скобки.

Задача №2 Найти все делители натурального числа n.

Решение:

Program ciklp_3;

Uses Crt;

Var n,i:longint;

BEGIN

ClrScr;

Write('Введите число...');

Readln(n);

Write('Делители числа ',n,' : ');

i:=1;

repeat

if n mod i = 0

then Write(i,' ');

Inc(i);

until i>n;

readln;

END.

Цикл с параметром - это тот цикл, когда известно начальное значение переменной, конечное значение и шаг изменения равен 1 или –1, т.е. параметр увеличивается или уменьшается на единицу. Отсюда следует что, цикл с параметром выполняет один или несколько операторов известное заранее определенное число раз.

for <уп> := <выражение 1> to <выражение 2> do

<оператор>;

Задача№3. Вывести на экран цифры от 0 до 9.

Решение:

inti;

for (i = 0; i < 10; i++)

{

System.Console.WriteLine("{0}",i);

}

System.Console.ReadLine();

Глава 3. Работа с массивами

Массив– это набор одногорода элементов, которые имеют порядковый номер, к массивам можно обращаться, задав номер массива. Большое количество задач на языке программирования решаются при помощи массивов. Массив это набор одного типа данных, т.е. если массив объявлен как числовой, то в него нельзя записать строку. [11, с.36]

Массивы делятся на два вида: одномерные и многомерные. Но чаще всего при решение задач используются одномерные и двумерные массивы(матрицы).

Массивом может так же быть и группа студентов. Допустим что, в учебном заведении на первом курсе всего 30 групп, то это будет одномерный массив. Но в учебном заведение 4 курса, получается количество групп равно 120, то это будет размерность массива. В каждой группе определенное количество учащихся, это будет данные массива. Если же группу сначала сформировали из 30 человек, а потом по некоторым данным в нее перевелись еще 2 человека, то последнее выражение будет принадлежать этому значению, а предыдущее просто на просто будет потеряно.

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

Что бы привести пример двумерного массива воспользуемся таблицей №3

Таблица 3

Двумерного массива

Курс/группы

Группа

А

Группа

Б

Группа

В

Группа

Г

Группа

Д

Группа

Е

Группа

Ж

1курс

30

31

31

31

32

30

30

2курс

32

32

30

30

30

30

31

3курс

33

30

30

31

30

32

32

4 курс

32

32

31

31

30

30

30

Возьмем определенное количество групп и курсов, т.е. сделаем это в виде таблицы. Берем по вертикали 3 курса, а по горизонтали 5 групп (А, Б, В, Г, Д), то мы получаем пересечение, а это и будет матрица, т.е. двумерный массив.

Мы получаем строки и столбцы матрицы, строки по вертикали, а столбцы по горизонтали. [23, с.63]

В двумерном массиве так же храниться только одно значение. Что бы получить значение в двумерном массиве, нужно просто указать номер строки и столбца, на пересечении которого находиться элемент. На примере нашей таблицы попробуем узнать сколько учащихся находится в группе Д на втором курсе, по горизонтали находим курс, по вертикале группу, находим соприкосновение этих строк и столбцов и получаем ответ, вторая строка пятый столбец[2;5] сначала пишется номер строки, а потом номер столбца.

Также существует квадратная матрица, у нее количество строк и столбцов равно. В ней есть две диагонали - это главная диагональ и побочная.

Главная диагональ – это когда у строки и столбца номер одинаковый. Например: а[4,4], эта диагональ проходит от левого верхнего угла к правому нижнему. Побочная диагональ - это диагональ, которая идет из правого верхнего угла матрицы в левый нижний. Что бы получить какой либо элемент этой диагонали, для этого нужно знать размерность матрицы. Например, если размер матрицы a равен числу n и нам нужно получить элемент i , то воспользуемся вот такой записью a[i,n-i+1], результатом будет элемент стоящий на побочной диагонали в строке i. [13]

3.1. Описание примера

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

Простой массив значений типа int

Внутри метода main мы объявили массив iNumbers, содержащий переменные базового типа int:

int[] iNumbers;

Как и полагается, размер массива не указан, так как при объявлении массива память для него не резервируется. [14]

В следующей строке мы резервируем память для хранения 10 переменных типа int. Ссылку на эту память мы записываем в переменную iNumbers, завершая таким образом инициализацию массива:

iNumbers = new int[10];

Дополнительно мы объявляем переменную i, которая будет применяться для индексации этого и других массивов:

int i;

Запись значений в ячейки массива выполняется простым присваиванием в цикле:

for(i = 0; i < 10; i++)

iNumbers[i] = i;

После завершения этого процесса программа отображает на консоли значения, хранящиеся в массиве:

System.out.print("iNumbers: ["

+ iNumbers[0]);

for(i = 1; i < iNumbers.length; i++)

System.out.print("," + iNumbers[i]);

System.out.println("]");

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

Обратите внимание на то, как мы проверяем условие выхода за пределы массива. Параметр цикла i сравнивается со значением iNumbers.length.

Что это за значение?

Все массивы в Java являются объектами некоторого встроенного класса. Поле length этого класса содержит размер массива. 16]

Массив объектов класса String

Ниже в примере показано, как можно выполнить статическую инициализацию массива, содержащего объекты встроенного класса String, предназначенного для работы с текстовыми строками:

String szLines[] =

{

"This",

"is",

"Java",

"String",

"array"

};

Здесь одновременно с объявлением массива мы выполняем и его инициализацию.

Отображение элементов массива на консоли выполняется в цикле и не имеет никаких особенностей:

System.out.print(szLines[0]);

for(i=1; i<szLines.length; i++)

System.out.print(" " + szLines[i]);

Многомерный массив объектов класса String

В следующем фрагменте кода мы объявляем двухмерный массив объектов класса String и сразу резервируем для него память:

String[][] szColors = new String[2][4];

Таким образом, создается массив из двух строк и четырех столбцов.

Для работы со строками таблицы мы будем использовать переменную i, определенную ранее. Чтобы перебирать столбцы таблицы, в программе определена переменная j:

int j;

Массив szColors заполняется в двойном вложенном цикле:

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

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

{

szColors[i][j] =

new String("Color (" + i + ","

+ j + ")");

}

При этом для каждой ячейки таблицы мы заказываем память оператором new. [17]

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

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

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

{

System.out.println(szColors[i][j]);

}

При определении массива szSounds мы задаем только количество строк:

String[][] szSounds = new String[2][];

Что же касается количества столбцов, то оно задается динамически при заполнении массива:

for(i = 0; i < szSounds.length; i++)

{

szSounds[i] = new String[3];

for(j = 0; j < szSounds[i].length; j++)

{

szColors[i][j] =

new String("Sound (" + i + ","

+ j + ")");

}

}

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

for(i = 0; i < szSounds.length; i++)

for(j = 0; j < szSounds[i].length; j++)

{

System.out.println(szColors[i][j]);

}

Обратите внимание на то, как мы проверяем границы массива. Количество строк у нас - это значение szSounds.length. Количество столбцов в строке определяется как szSounds[i].length. В случае симметричного массива szSounds оно одинаковое для каждой строки. [19]

Несимметричный массив объектов класса String

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

String[][] iAsymm;

Далее при резервировании памяти для массива мы задаем только количество строк, равное двум:

iAsymm = new String[2][];

Затем в каждой строке задается разное количество столбцов: в первой строке - три столбца, а во второй - четыре:

iAsymm[0] = new String[3];

iAsymm[1] = new String[4];

Инициализируя несимметричный массив в двойном вложенном цикле мы не можем полагаться на то, что каждая строка содержит одинаковое количество столбцов. Поэтому предельное значение переменной внутреннего цикла определяется какiAsymm[i].length:

for(i = 0; i < iAsymm.length; i++)

{

for(j = 0; j < iAsymm[i].length; j++)

{

iAsymm[i][j] =

new String("Asymm (" + i + ","

+ j + ")");

}

}

Для первой строки оно равно трем, а для второй - четырем.

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

for(i = 0; i < iAsymm.length; i++)

{

for(j = 0; j < iAsymm[i].length; j++)

{

System.out.println(iAsymm[i][j]);

}

}

}

Здесь границы переменных внешнего и внутреннего циклов указаны как iAsymm.length и iAsymm[i].length, соответственно.

3.2. Примеры массивов

Пример статического массива на С/С++

int Array[5]; Одномерный массив целое число размера 5

Нумерация элементов от 0 до 4

Пример Javaстатического массива на языке

a = new int [9];указываем число элементов в массиве

b= new int [] {1…9};создаем массив, перечисляя значения его элементов

Пример статического массива на языке BASIK

Dim aName(140) As String объявление массива

В Basic для описания массивов применяют специальный оператор DIM, который обозначает размерность. Кроме оператора DIM для описания массива используется идентификатор (имя массива), тип массива и его размер. [21]

Например,

DIM A(7)

DIM V%(12)

DIM WR$(5)

Всегда нужно помнить о том, что нумерация элементов массива начинается с нуля.

3.3. Создание массивов

Массивы создаются тремя основными способами:

1)[1, 2, 3, 4]

2) Array.new(4){ |index| index + 1 }

3) (1..4).to_a

Работа с массивами:

1.Добавить значение в элемент массива. Для начала указываем имя массива, далее указываем значение в элементе массива в скобках:Dim numbers() As Integer

2.Получение значения из элемента массива. Внутри значение указываем имя массива, а потом ставим круглые скобки, в них указываем выражение, которое потом требуется получить: Dim sortedValues(), rawValues(), estimates(,,) As Double

lowestValue = sortedValues(0)

wTotal += (rawValues(v) ^ 2)

firstGuess = estimates(i, j, k)

Попробуем создать одномерный массив на примере фруктов:

$fruit[1] = “вишня”

$fruit [2] =“клубника”

$fruit [3] = “черешня”

$fruit [4] = “абрикос”

$fruit [5] = “яблоко”

В этом массиве содержаться все фрукты, которые мы поместили. Что бы вывести определенный фрукт задаем индекс, номер фрукта и будет индекс, к примеру возьмем 3

echo $fruit [3] = “черешня” // на экран выводиться “черешня”

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

Теперь попробуем создать массив array:

$fruit = array(1=>“вишня”,2=>“клубника”,3=>“черешня”,4=>“абрикос”,5=>“яблоко”)

// массив создан

$fruit [4] = “абрикос”

Такой способ более рационален. Этот знак => указывает на присвоение индекса или наоборот.

И еще один способ создания с помощью функции array, но без указателей.

array(вишня”,“клубника”, “черешня”, “абрикос”, “яблоко”) // массив создан

$fruit [4] = “абрикос”

Давайте попробуем создать двумерный массив:

// массив Овощи

$o = array('помидор','огурец','картошка','лук');

// массив фрукты

$f = array('яблоко','персик','абрикос','виноград');

// массив Напитки

$n = array('чай', 'вода','кофе','морс');

// двумерный массив Продукты

$Products = array($o, $f, $n);

Для начала мы создали одномерные массивы, которые объединяются в продукты питания. Таким образом, уже массив $Products имеет в качестве значений своих ключей массивы. [24]

Ассоциативный двумерный массив.

// массив Овощи

$o = array('помидор', 'огурец', 'картошка', 'лук');

// массив фрукты

$f = array('яблоко', 'персик', 'абрикос', 'виноград');

// массив Напитки

$n = array('чай', 'вода', 'кофе', 'морс');

// двумерный массив Продукты

$Products = array('овощи'=> $o, 'фрукты'=> $f,'напитки'=> $n);

ЗАКЛЮЧЕНИЕ

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

Цикл while-do (цикл «ДО», цикл с предусловием который выполняется до того момента, пока выражение принимает истинное значение, но если же выражение приняло неверное значение, то происходит переход к дальнейшему оператору);

цикл repeat-until (цикл «ПОКА», цикл с постусловием, противоположен циклу «ДО», т.е. пока выражение неверное тело цикла продолжает работу, но если логическое выражение становиться верным, цикл прекращает свою работу).

цикл for (цикл «ДЛЯ», цикл со счетчиком, т.е. значения, принимают последовательный тип, т.к. значение переменной цикла увеличивается или уменьшается на один при каждой итерации цикла); [25]

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

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

Двумерные массивы это те же самые одномерные только имеют общий элемент (матрицу, где указаны строки и столбцы). Что бы найти какой либо элемент в двумерном массиве можно просто указать его номер. Известно, что массивы создаются тремя способами, но в основном в работе применяется третий способ. Так же нам известно, что для описания массива в бейсик используется оператор DIM.

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

СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ

  1. Богатырев Р. Журнал «Мир ПК» выпуск №4/2001 от 17.04.2014.
  2. Бьерн Страуструп. Язык программирования С++
  3. Вирт Н. Алгоритмы + структуры данных = программы.
  4. Вылиток А.А., Матвеева Т.К. Динамические структуры данных. Задание практикума. Язык Паскаль. // Учебно-методическое пособие. – М.: Издательский отдел Факультета ВМиК МГУ им. М.В. Ломоносова, 2014.
  5. Грогоно П. Программирование на языке Паскаль. — М.: Мир.
  6. Зверева О.М., Саблина Н.Г. Среда Турбо Паскаль 7.0. Реализация простейших алгоритмов: Конспект лекций. Часть 1. - Екатеринбург: Изд-во УМЦ-УПИ, 2013.
  7. Игошина Л.В. Программирование на языке высокого уровня. Рабочая программа дисциплины. - Пенза: ПГУ, 2013.
  8. Йенсен К., Вирт Н. Паскаль. Руководство для пользователя и описание языка.//Пер. с англ. и предисл. Д.Б.Подшивалова - М.: Финансы и статистика.
  9. Ключарев А.А., Матьяш В.А., Щекин С.В. Структуры и алгоритмы обработки данных: Учебное пособие - СПбГУАП. СПб,2014
  10. Краснов С.В. Программирование на языке высокого уровня TURBO PASCAL: Учебное пособие. - Ульяновск: УлГТУ, 2014.
  11. Максимова Т.М. Программирование на языках высокого уровня: Методические указания к выполнению курсового проекта. - СПб.: ГУАП, 2014.
  12. Моргун А. Н. Программирование на языке Паскаль (Pascal). Основы обработки структур данных. - М.: Диалектика, 2014.
  13. Острейковский В.А. "Информатика: Учеб. для вузов". - 2-е изд., стер. - М.: Высш. шк., 2013.
  14. Пахомова А.В. Методическое пособие "Программирование на языке Turbo Pascal.- URL: http://tp7.info/metod_uk2.php (дата обращения: 03.06.2013)
  15. Перминов О.Н. Программирование на языке Паскаль: Справочник.– М.: Радио и связь.
  16. Подвальный С.Л., Холопкина Л.В., Носачева М.П. Программирование на языке Паскаль: практикум - 2015.
  17. Программирование на языке высокого уровня TURBO PASCAL: Учебное пособие. - 2014 [Электронный ресурс] - URL: http://www.doklad.ref24.ru/works/62792.html (дата обращения: 21.06.2011)
  18. Программирование. Динамические списки Pascal.//сайт посвященный языку программирования Turbo Pascal - 2010 [Электронный ресурс] URL:http://www.pascal.helpov.net/index/dynamic_lists_pascal_programming (дата обращения: 08.07.2013)
  19. Рубенкинг Н.Дж. Турбо Паскаль для Windows: в 2-х томах. Пер. с англ.. - М.: Мир.
  20. Светозарова Г.И., Мельников А.А., Козловский А.В. Практикум по программированию на языке Бейсик: Учебное пособие для вузов. – М.: Наука.
  21. Сулейманов Р.Р. Методика решения учебных задач средствами программирования//Методическое пособие – М: 2014.
  22. Трофимов С.П. Программирование на языке высокого уровня: Рабочая программа дисциплины. - Екатеринбург: ГОУ ВПО УГТУ-УПИ, 2014.
  23. Учебник Turbo Pascal 7.0 - CибГУТИ, 2011 [Электронный ресурс] - URL: http://pascal.guti.ru/fornext.html (дата обращения: 14.07.2012)
  24. Шумова Е.О., Рачева Н.В. Программирование на языке высокого уровня:
  25. Шумова Е.О., Рачева Н.В. Программирование на языке высокого уровня: Методические указания к курсовой работе. - СПб.: СЗТУ, 2015. 739