Материал: Основы алгоритмизации и программирования

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Основы алгоритмизации и программирования














Курсовая работа

Основы алгоритмизации и программирования

Введение

алгоритм программа математический

Алгоритмический язык Паскаль разработан профессором Цюрихского технологического института Никлаусом Виртом в 1969-71 годах для обучения студентов структурному программированию. Идеи, заложенные в основу создания языка, позволили фирме Borland International значительно расширить алгоритмические средства языка, а удобный интерфейс (меню команд) и высокая скорость компиляции (процесса перевода текста программы в машинные коды) сделали язык Турбо-Паскаль (Turbo-Pascal) одним из самых распространенных среди начинающих и профессиональных программистов.

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

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

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

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

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

Главной целью курсового проекта по дисциплине «Основы алгоритмизации и программирования» является создания условий для освоения студентами основ проектирования программных комплексов, а также закрепления навыков программирования на языке Pascal.

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

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

Цели курсового проектирования:

−       решение задач и разработка базы данных;

−       систематизация и закрепление теоретических знаний и практических умений, полученных за время обучения дисциплины «Основы алгоритмизации и программирования».

Реализация данных целей возможна путем решения следующих задач:

−       анализ литературы по поставленной задаче;

−       оценка возможностей альтернативных языков программирования;

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


1. Постановка задачи и выбор метода обработки информации


Вычислить сумму ряда с точностью e=10-4

.1 Математическая формулировка задачи и выбор метода обработки информации

Для решения данной задачи используется следующая формула:


Сумму необходимо вычислять до тех пор пока сумма ряда не станет меньше чем e=10-4.

.2 Форма представления исходных данных

Исходные данные вводятся с клавиатуры.

Пользователь вводит значение X с клавиатуры. После производятся вычисления до значения с точностью, равной 10-4. После нахождения результата сумма выводится на экран.

1.3 Описание программы

program z126;

var i:integer; // раздел описания переменных

e, sum, a, x:real;

function fact (n: integer): longint; // функция вычисления // факториала

begin n <= 1 then:= 1

else

fact:= n * fact (n - 1)

end;

begin

writeln ('Введите х= '); // ввод X

read(x);:=0.0001; // устанавливаем точность

sum:=0;:=1;:=0;abs(a)<=e do begin:=power (-1, i+1)*(power (x, 2*i-1)*(2*i+x))/fact (2*i);

// вычисляем сумму ряда

sum:=sum+a;:=i+1;

end;

('сумма=', sum:6:10); // вывод суммы

end.

.4 Инструкция по эксплуатации программы

После запуска появится строка «Введите Х=». После необходимо ввести значение переменной Х. Далее производятся необходимые вычисления и выводится результат «Сумма=».

1.5 Результаты проведенных расчетов и их анализ

Для проведения тестирования выполним программу для некоторого значения Х.

Введем число 3. Сумма = 7,5;

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

2. Постановка задачи и выбор метода обработки информации

В квадратной матрице в каждой строке переставить ее максимальный и минимальный элементы.

.1 Математическая формулировка задачи и выбор метода обработки информации

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

.2 Форма представления исходных данных

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

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

.3 Описание программы

program z215;

// раздел описания переменныхn, i, j, min, max, tmp, xmax, xmin, ymax, ymin:integer;:array [1..10, 1..10] of integer;

begin('Введите n= '); // ввод размерности матрицы

read(n);

for i:=1 to n do

for j:=1 to n do begin

write ('введите элемент матрицы = '); // ввод элементов матрицы

read (mas[i, j]);

end;

// устанавливаем положение минимального и максимального элемента

ymax:=1;:=1;:=1;

for i:=n downto 1 do begin:=mas [i, 1];:=mas [i, j];

for j:=1 to n do

begin

// поиск максимального элемента и запоминание позиции где стоит элемент

if mas [i, j]>=max then begin max:=mas [i, j]; xmax:=i; ymax:=j; end;

// поиск минимального элемента и запоминание позиции где стоит элемент

if mas [i, j]<min then begin min:=mas [i, j]; xmin:=i; ymin:=j; end;;

writeln ('max=', max);('min=', min);:=mas [xmax, ymax];

// обмен максимального и минимального элементов в каждой строке

mas [xmax, ymax]:=mas [xmin, ymin];[xmin, ymin]:=tmp;

end; i:=1 to n do begin // вывод матрицы

for j:=1 to n do begin(' ', mas [i, j]);

end;

writeln;

end;

end.

.4 Инструкция по эксплуатации программы

После запуска программы необходимо ввести размерность матрицы «Введите N=», также ввести элементы матрицы. Далее выполняется программа и результат выводится на экран.

.5 Результаты проведенных расчетов и их анализ

Для проведения тестирования выполним программу для некоторого значения N.

Введем размерность матрицы - 3. Введем элементы матрицы - 1, 2, 3, 4, 5, 6, 7, 8, 9.

Ответ: 3 2 1

5 4

8 7   

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

3. Постановка задачи и выбор метода обработки информации


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

.1 Математическая формулировка задачи и выбор метода обработки информации

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

.2 Форма представления исходных данных

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

Пользователь вводит размер массива. После из массива выбираются все отрицательные и положительные элементы, сортируются и расставляются на места. Результат выводится на экран.

.3 Описание программы

program z31;

// раздел описания переменных

var n, i, k, p, kol, kolotr:integer;:array [0..100] of integer;:array [0..100] of integer;:array [0..100] of integer;

procedure sortp (masl:array [0..100] of integer; kolvo:integer;

var maspl:array [0..100] of integer);

// процедура сортировки положительных чисел массива

var i, b, j, k:integer;

begin

k:=1;

for i:= 1 to kolvo do begin // выбор положительных элементов

if masl[i]>0 then

begin

maspl[k]:=masl[i];:=k+1;

end;; i:=2 to kolvo do begin:=maspl[i]; // устанавливаем барьер

maspl[0]:=B;:=i-1;B<maspl[j] do begin[j+1]:=maspl[j]; // сортировка массива

j:=j-1;

end;[j+1]:=B;

end;; sorto (masl:array [0..100] of integer; kolvo:integer;

var maspo:array [0..100] of integer);

// сортировка отрицательных элементов массива

var i, b, j, o:integer;

begin

o:=1;

for i:= 1 to kolvo do begin

if masl[i]<0 then // выборка отрицательных элементов

begin

maspo[o]:=masl[i];:=o+1;

end;;

for i:=2 to kolvo do begin:=maspo[i]; // установка барьера

maspo[0]:=B;:=i-1;

while B>maspo[j] do begin // сортировка отрицательных элементов

maspo [j+1]:=maspo[j];:=j-1;

end;

maspo [j+1]:=B;

end;;

begin

read(n);

for i:=1 to n do begin('введите элемент массива = '); // ввод элементов массива

read (mas[i]);

end;

for i:= 1 to n do begin mas[i]>0 then kol:=kol+1;

// подсчет количества отрицательных и положительных элементов массива

if mas[i]<0 then kolotr:=kolotr+1;

end;

sortp (mas, n, masp); // сортировка положительных элементов

sorto (mas, n, maso); // сортировка отрицательных элементов

k:=1;:=1;

for i:=1 to n do

begin mas[i]>0 then

begin

mas[i]:=masp [n-kol+k]; // вывод отсортированных положительных элементов на их относительное положение

k:=k+1;

end;

if mas[i]<0 then

begin

mas[i]:=maso [n-kolotr+p]; // вывод отсортированных отрицательных элементов на их относительное положение

p:=p+1;

end else if mas[i]=0 then mas[i]:=0;

end;

for i:=1 to n do begin(' ', mas[i]); // вывод массива

end;

writeln;

end.

3.4 Инструкция по эксплуатации программы

После запуска необходимо ввести размер массива «Введите n:». Далее необходимо ввести элементы массива. Размер массива должен быть не больше 100 элементов. Далее выполняется сама программа и отсортированный массив выводится на экран.

.5 Результаты проведенных расчетов и их анализ

Протестируем программу. Для этого введем размерность массива - 5. Введем поочередно элементы массива - 6, 1, -1, -7, 4. В результате получаем - 1, 4, -1, -7, 4. При тестировании программы ошибок обнаружено не было.


4. Постановка задачи и выбор метода обработки информации


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

.1 Математическая формулировка задачи и выбор метода обработки информации

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

.2 Форма представления исходных данных

Текст вводится пользователем с клавиатуры.

.3 Разработка алгоритма и его описание

Пользователь вводит текст. Проводится проверка на наличие точки в конце предложения. После этого весь текст делится на слова. Разделителем является пробел. Каждое слово заносится в массив. После этого идет сравнивание каждого слова с последним. Если они различны, то вырезается первая буква слова и добавляется в конец этого же слова. После выводятся слова отличные от последнего слова на экран.

4.4 Описание программы

program z412;

var

// раздел описания переменных

txt, word, tmp:string;

c:char;

i, j, k, post:integer;

mas: array [0..100] of string;:text;

begin

writeln ('Введите строку= '); // ввод строки

read(txt);

if txt [length(txt)]<>'.' then writeln ('Это не текст!') else

// проверка наличия точки в конце предложения

begin

:=1;

for i:=1 to length(txt) - 1 do // разбиение текста по словам

begin txt[i] = ' ' then

begin length(tmp) <> 0 then

begin

mas[j]:=tmp;:= j+1;:='';

end;begin

tmp:= tmp + txt[i];

if i=length(txt) - 1 then

if length(tmp) <> 0 then[j]:=tmp;

end;;

:=mas[j];

(f, 'tmp.txt'); // открытие текстового файла

rewrite(f);

for i:=1 to j-1 do

begin(mas[i] <> word) then // сравнивание слов с последним словом предложения

begin

c:=mas[i] [1];

// перемещение первого элемента слова в конец слова

write (mas[i]+' '); // вывод слов(f, mas[i]+' ');

end;;

close(f);

end;.

.5 Инструкция по эксплуатации программы

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

.6 Результаты проведенных расчетов и их анализ

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

5. Анализ исходных данных и поставленной задачи