Создание программы циклической структуры. Работа с массивами
Автор работы: Пользователь скрыл имя, 23 Марта 2013 в 17:55, курсовая работа
Описание
Цель и задачи. Выбрав именно эту работу для курсовой работы, перед нами ставиться задача, научиться работать с циклами, при каких условия необходимо применять тот или иной вид циклической структуры что бы избежать логической ошибки. Так как язык программирования основывается на определенных зарезервированных словах и символах, поставив цель и выучив которые, мы сможем создавать любые базы данных и пользоваться ими, используя законы программирования. Порядок действий и их повторения позволит писать программу понятным для других пользователей языком, при этом научимся высвобождать в памяти программы достаточно места.
Содержание
Введение____________________________________________________
3
Циклические алгоритмы на языке Паскаль ____________________
5
Решение циклических алгоритмов___________________________
13
Работа с массивами________________________________________
22
Заключение_________________________________________________
32
Список использованной литературы_________________________
Работа состоит из 1 файл
Курсовая.doc
— 940.00 Кб (Скачать документ)a:integer;
Для подсчета результата так же необходима переменная. В этой переменной будут суммироваться данные, вводимые пользователем.
sum:integer;
Переменная, отвечающая за суммирование, должна быть проинициализирована перед использованием, рисунок . Установим значение переменной, равное 0. Для этого введем в программу строку, рисунок 14
sum:=0;
Рис. 14. Ввод суммирующего элемента
Организуем цикл для ввода 10-ти значений от пользователя. Для этого вводим в программу строку
for count:=1 to 10 do
Так как мы собираемся использовать в цикле несколько операций, то необходимо поставить операторные скобки. Вводим следующую строку
begin
...введите дополнительную строку, окончания данного задания
end;
Водим с клавиатуры очередное значение... Для этого вводим в алгоритм следующую команду
readln(a);
В результате наш алгоритм выглядит следующим образом, рисунок 15. Продолжим запись программы.
Рис. 15. Ввод очередного значения
Однако пользователь должен понять, что за данные ему необходимо вводить.
Write (‘Введите ‘, count, ‘-тое значение:’);
Не забудем в каждой итерации цикла прибавить новое значение к сумме. Для этого введем строку в программу
sum:=sum+a;
В конце программы выведем результат на экран, следующей строкой
Writeln (‘Среднее арифметическое:’, sum/10);
Запустим программу, щелкнув пункт меню «Run», рисунок 16.
Рис. 16. Запуск программы
Необходимо пользователю ввести 10-ть значений (от 1 до 10). Результат работы программы видно на рисунке 17
Рис. 17. Результат работы программы
Мы рассмотрели два варинта написания программы с использование двух циклов. Как видно из примеров необходимо все сторонне подходить к написанию программы, что бы пользователю было понятно и удобно использовать написанную программу, для этого и вводим строки позволяющие пользователю получить желаемый результат работы программы.
- Работа с массивами
Массив — упорядоченный набор данных для хранения данных одного типа, идентифицируемых с помощью одного или нескольких индексов. В простейшем случае массив имеет постоянную длину и хранит единицы данных одного и того же типа.[1]
Работа с многомерными массивами всегда связана с организацией вложенных циклов, рассмотрим пример написания такого массива.
Начнем запись программы
Program TestProg;
Begin
End.
Для начала нам необходимо определить массив для хранения десяти введенных пользователем значений. Для этого введите в программу строку
var a:array[1..10] of integer;
Обработка массивов очень часто производится при помощи цикла for. Для использование данного цикла необходимо определить переменную-счетчик.
i:integer;
Ввод данных с клавиатуры будет осуществляться в цикле for. Добавим в программу данный цикл. Для этого введем строку
for i:=1 to 10 do
Так как в
теле цикла будет составной
Begin
End;
Рис. 18. Составной оператор цикла
Выдадим запрос на ввод очередного элемента. Для алгоритм программы вводим строку
Write (‘Введите’,i,’-ый элемент’);
Запросим i-ый элемент у пользователя. Для этого введите строку
readln(a[i]);
Для нахождения максимального значения нам понадобится еще одна переменная., она будет следующая
max:integer;
Инициализируем переменную числом 0. Для этого введите строку в программу
max:=0;
Организуем цикл для поиска максимального значения, смотрите на рисунке 19 . Необходимо перебрать все элементы массива.
For i:=1 to 10
Begin
End;
Рис. 19. Цикл для поиска максимального значения
Проверим, больше ли очередной элемент массива, чем значение в max? Если больше, то запишем это значение в max. Для этой операции в алгоритм программы вводим следующую строку
if (a[i]>max) then max:=a[i];[16]
Выведем пользователю результат выполнения программы, рисунок 20.
Write (‘максимальное значение в массиве:’, max);
Рис. 20. Готовая программа по поиску максимального значения
Запустим программу, для чего щелкнем по меню Run для открытия меню.
Теперь, введя по запросу 10 чисел, в качестве результата получим наибольшее из этих значений, рисунок 21.
Рис. 21. Результат работы программы
На данный момент мы имеем программу, которая запрашивает у пользователя 10 чисел с клавиатуры и заполняет ими массив. Теперь необходимо организовать цикл обработки значений массива[10], начиная со 2-го
For i:=2 to 10
Begin
End.
Организуем проверку двух соседних значений массива. Для этого в алгоритм добавим условие с составным оператором (рис. 22).
If (a [i-1]>a[i]) then
Begin
End;
Рис. 22. Цикл со составным оператором
Если условие выполняется, присвоим x наименьшее из двух значений. Введите в строку ввода
x:=a[i];
Присвоим переменной j номер элемента, расположенного перед рассматриваемым. Для этого введите в строку ввода
j:=i-1;
Организуем цикл, рисунок 23, для перемещения блока значений, больших x вперед по массиву.
While (j>0 and (a[j]>x) do
Begin
End;
Рис. 23. Перемещение блока значений
Передвинем очередное значение вперед по массиву. Для этого введем в программу
a[j+1]:=a[j];
Уменьшим j на 1 для движения к началу массива.[13,c.70]
j:=j-1;
Как только переберем весь блок с значениями больше x, запишем x в конце этого блока. Для этого введем строку, рисунок 24
a[j+1]:=x;
Рис. 24. Поиск значения большего х
Организуем цикл вывода упорядоченного массива в консоль.[12] Для этого введем в активную область следующий блок.
For i:=1 to 10 do
Begin
End;
Выведем очередной элемент на экран, рисунок 25
Writeln (I,’-ый элемент:’, a[i]);
Рис.25. Вывод данных на экран
Запустим программу. Для чего щелкнем меню «Run» и выберем в открывшемся меню пункт «Run».[17]
Теперь необходимо пользователю ввести значения для вычисления, после этого программа вычислит искомое значение, рисунок 26
Рис. 26. Ввод данных в программу
После ввода значений программа упорядочит массив и выведет его на экран, рисунок 27
Рис. 27. Результат работы программы.
Заключение
Как мы выяснили из проведенной работы что отсутствие циклов привело бы к большим затруднениям, память отведенная под программу была бы перегружена, не говоря уже о трудоемкости и быстродействии программы. На протяжении всей работы мы рассматривали разнообразие циклов начиная с арифметического, заканчивая итерационным циклом, который в свою очеред разделился на:
цикл for (цикл «ДЛЯ», цикл со счетчиком, здесь значения должны иметь порядковый тип, т.к. значение переменной цикла увеличивается или уменьшается на один при каждой итерации цикла);
цикл while-do (цикл «ДО», цикл с предусловием будет выполняться до тех пор пока выражение принимает истинное значение, но стоит выражению принять ложное значение, то осуществляется переход к следующему оператору);
цикл repeat-until (цикл «ПОКА», цикл с постусловием ведет себя противоположно циклу «ДО», т.е. пока выражение ложное тело цикла продолжается, как только логическое выражение станет истинным, цикл прекратится).
Нами были рассмотрены примеры использования циклов, а так же мы выяснили, что тело цикла с постусловием всегда выполняется хотя бы один раз, а вот тело цикла с предусловием может быть так и не выполнено[18], этот факт необходимо учитывать при написании программы.
Код любой программы должен быть читаемым. Для того чтобы код был читаемым, он должен удовлетворять некоторым требованиям по форматированию кода и стилю его написания.
Для этого и нужна цикличность программной структуры, при постоянно повторяющейся действенности, мы устанавливает цикл, количество операций, и оперативность программы увеличивается, меньше времени тратиться у программиста на прописывание действия.
Не будем забывать и о вложенных циклах, когда один цикл начинает свою работу, только после того как другой цикл закончил свою. Циклическую программу можно составить и для поиска максимального или минимального значения, в некоторых случаях это удобнее чем использование записи поиска.
С точки зрения преподавания Паскаль универсален, удобен и в изучении, и в использовании. Язык программирования является строго типизированным языком, что позволяет использовать его при написании программ группами, что сейчас очень распространенно. При написании любой, даже самой маленькой программы необходимо помнить что, возможно, кому-то придется с ней работать, для этого при написании нужно учитывать все правила программирования.
Циклические действия окружают нас повсюду, просто многие ни когда не задумывались что их возможно описать, тем более машинным языком, а научившись с вами этим не сложным действиям перед нами открываются границы нового, ведь великое строится по крупинкам
Список использованной литературы
- Богатырев Р. Журнал «Мир ПК» выпуск №4/2001 от 17.04.2001, с.58
- Вылиток А.А., Матвеева Т.К. Динамические структуры данных. Задание практикума. Язык Паскаль. // Учебно-методическое пособие. – М.: Издательский отдел Факультета ВМиК МГУ им. М.В. Ломоносова, 2005. – с. 8-20.
- Грогоно П. Программирование на языке Паскаль. — М.: Мир, 1982. — с. 108
- Зверева О.М., Саблина Н.Г. Среда Турбо Паскаль 7.0. Реализация простейших алгоритмов: Конспект лекций. Часть 1. - Екатеринбург: Изд-во УМЦ-УПИ, 2004. - с.112
- Игошина Л.В. Программирование на языке высокого уровня. Рабочая программа дисциплины. - Пенза: ПГУ, 2004. - с.5
- Йенсен К., Вирт Н. Паскаль. Руководство для пользователя и описание языка.//Пер. с англ. и предисл. Д.Б.Подшивалова - М.: Финансы и статистика,1989. - с. 151
- Ключарев А.А., Матьяш В.А., Щекин С.В. Структуры и алгоритмы обработки данных: Учебное пособие - СПбГУАП. СПб,2003 – с. 21-30
- Краснов С.В. Программирование на языке высокого уровня TURBO PASCAL: Учебное пособие. - Ульяновск: УлГТУ, 2004. - с.27-31
- Моргун А. Н. Программирование на языке Паскаль (Pascal). Основы обработки структур данных. - М.: Диалектика, 2005. — с. 576
- Максимова Т.М. Программирование на языках высокого уровня: Методические указания к выполнению курсового проекта. - СПб.: ГУАП, 2005. - с.27
- Перминов О.Н. Программирование на языке Паскаль:Справочник.– М.: Радио и связь, 1998. – с.243-304
- Подвальный С.Л., Холопкина Л.В., Носачева М.П. Программирование на языке Паскаль: практикум - 2008, с.24
- Рубенкинг Н.Дж. Турбо Паскаль для Windows: в 2-х томах. Пер. с англ.. - М.: Мир, 1993. – с.78
- Сулейманов Р.Р. Методика решения учебных задач средствами программирования//Методическое пособие – М: 2010, с. 112
- Трофимов С.П. Программирование на языке высокого уровня: Рабочая программа дисциплины. - Екатеринбург: ГОУ ВПО УГТУ-УПИ, 2005. - с.12
- Шумова Е.О., Рачева Н.В. Программирование на языке высокого уровня: Методические указания к курсовой работе. - СПб.: СЗТУ, 2002. - с.36
- Пахомова А.В. Методическое пособие "Программирование на языке Turbo Pascal.- URL: http://tp7.info/metod_uk2.php (дата обращения: 03.06.2011)
- Учебник Turbo Pascal 7.0 - CибГУТИ, 2011 [Электронный ресурс] - URL: http://pascal.guti.ru/fornext.
html (дата обращения: 14.07.2011) - Программирование. Динамические списки Pascal.//сайт посвященный языку программирования Turbo Pascal - 2010 [Электронный ресурс] - URL: http://www.pascal.helpov.net/
index/dynamic_lists_pascal_ programming (дата обращения: 08.07.2011) - Программирование на языке
высокого уровня TURBO PASCAL: Учебное пособие. - 2004 [Электронный ресурс] - URL: http://www.doklad.ref24.ru/
works/62792.html (дата обращения: 21.06.2011)