Программирование и основы алгоритмизации. 2
Федеральное агентство по образованию Российской Федерации
Вологодский
государственный технический
Кафедра
АВТ
Пояснительная записка к курсовому проекту
по дисциплине
«Программирование
и основы алгоритмизации»
Выполнил студент: Казаков Д.В.
Принял преподаватель: Давыдова Е.Н.
Череповец
2010
СОДЕРЖАНИЕ
Введение
1 Задание
1……………………………………………………………………………
1.1 Работа
программы………………………………………………………
1.2 Назначение
переменных……………………………………………………
1.3 Блок
– схема алгоритма программы………
1.4 Текст
программы………………………………………………………
1.5 Тестирование………………………………………………
2 Задание
2……………………………………………………………………………
2.1 Работа
программы………………………………………………………
2.2 Назначение
переменных……………………………………………………
2.3 Блок
– схема алгоритма программы………
2.4 Текст
программы………………………………………………………
2.5 Тестирование………………………………………………
3 Задание
3……………………………………………………………………………
3.1 Работа
программы ……………………............
3.2 Назначение
переменных………………………………………………..
3.3 Блок
– схема алгоритма программы………
3.4 Текст
программы………………………………………………………
3.5 Тестирование………………………………………………
4 Задание
4……………………………………………………………………………
4.1 Работа
программы………………………………………………………
4.2 Назначение
переменных……………………………………………………
4.3 Блок
– схема алгоритма программы………
4.4 Текст
программы………………………………………………………
4.5 Тестирование………………………………………………
5 Задание
5……………………………………………………………………………
5.1 Работа
программы………………………………………………………
5.2 Назначение
переменных……………………………………………………
5.3 Блок
– схема алгоритма программы………
5.4 Текст
программы………………………………………………………
5.5 Тестирование…….………………………………………
Задание
6……………………………………………………………………………
6.1 Работа
программы………………………………………………………
6.2 Назначение
переменных……………………………………………………
6.3 Текст
программы …………………………………………………………………………..
6.4 Тестирование
…………………………………………………………………………..
Заключение……………………………………………………
Введение
Целью
курсового проекта является развитие
навыков алгоритмизации, кодирования
и тестирования программной продукции.
В ходе выполнения курсового проекта необходимо
решить шесть задач на языке программирования
Pascal по темам: циклы, одномерные массивы
и матрицы, строки и файлы.
1 Задание №1
Заданы
два массива A и B по N элементов.
Сформировать и вывести на печать массив
L из 2*N элементов:
L=(A(1)+B(1),A(1)-B(1),A(2)+B(
Значение N и элементы массива A ввести
с клавиатуры.
- Работа программы
Работа программы начинается с ввода количества элементов N. Далее массив заполняется случайным числами в диапазоне от -100 до 100. В цикле находим минимальный элемент массива и меняем местами с последний элементов, перезаписываем массив. На экран выводятся массивы до и после изменения.
- Назначение переменных
Назначение переменных, используемых в задаче, приведено в таблице 1
Таблица 1 – Назначение переменных
| Переменная | Тип | Назначение |
| n | integer | количество элементов массива. |
| i | integer | Порядковые номера элементов массивов. |
| min | integer | Минимальный элемент массива. |
| с | array[1..100]of integer | Массив. |
| ind | integer | Индекс элемента массива. |
- Блок – схема алгоритма программы
- Текст программы
program Z1;
uses Crt;
var A: array [byte] of integer;
B: array [byte] of integer;
L: array [byte] of integer;
N: byte;
i: integer;
j: integer;
Begin
ClrScr;
write('Vvedite N=');
readln(N);
Randomize;
for i:=1 to N do
begin
A[i]:=random(100);
B[i]:=random(100);
end;
for i:=1 to N do write('A[',i,']=',A[i],' ');
writeln;
for i:=1 to N do write('B[',i,']=',B[i],' ');
writeln;
i:=0;
j:=1;
while i<=2*N do
begin
i:=i+1;
L[i]:=A[j]+B[j];
i:=i+1;
L[i]:=A[j]-B[j];
j:=j+1;
end;
writeln;
for i:=1 to 2*N do write('L[',i,']=',L[i],' ');
readln;
End.
- Тестирование программы
Вводим количество элементов массивов N, массив С составлен верно(1). При вводе количества элементов, равном 5, программа работает корректно (2).
1:
2:
2 Задание №2
Определить суммы элементов всех столбцов матрицы размерами N*M и наибольшую среди них. Размеры матрицы и ее элементы задать при помощи ввода
2.1 Работа программы
Указываем число строк и столбцов массива N и M соответственно . В цикле массив заполняется случайным образом в диапазоне от 0 до 100 (внешний цикл по i (строки), вложенный - по j (столбцы) ). Размерность матрицы, так же задается в цикле, N и M не больше 10. Затем на экран выводится максимальный элемент массива, строка, в которой этот элемент располагается, а затем сумма элементов этой стоки.
2.2 Назначение переменных
Назначение переменных, используемых в задаче, приведено в таблице 2.
Таблица 2 – Назначение переменных
| Переменная | Тип | Назначение |
| n | integer | определяет количество строк массива |
| m | integer | определяет количество столбцов массива |
| i | integer | порядковый № строки массива |
| j | integer | порядковый № столбца массива |
| a | array[1..10,1..10]of integer | Двумерный массив а |
| max | integer | Максимальный элемент массива |
| ind | integer | Индекс |
| sum | integer | Сумма элементов массива |
2.3 Блок – схема алгоритма программы
2.4 Текст программы
program Z2;
uses Crt;
var Mas: array [1..100, 1..100] of integer;
i: integer;
j: integer;
N: byte;
M: byte;
Summa: integer;
Max_S: integer;
Begin
ClrScr;
write('Vvedite N=');
readln(N);
write('Vvedite M=');
readln(M);
Randomize;
for i:=1 to N do
for j:=1 to M do
Mas[i,j]:=random(100);
for i:=1 to N do
begin
write('M[',i,'j','] = ', Mas[i,j]);
writeln;
end;
writeln;
Summa:=0;
Max_S:=0;
for j:=1 to M do
begin
for i:=1 to N do Summa:=Summa+Mas[i,j];
write(Summa,' ');
if Summa>Max_S then Max_S:=Summa;
end.
writeln;
writeln('Max = ',Max_S);
readln;
End.
2.5 Тестирование
При вводе количество элементов массивов N, равном 3, программа работает корректно (1). При вводе количества элементов массивов M , равном 4, программа работает корректно (2). При вводе произвольного значения элементов программа также выполняет свой алгоритм (3).
1:
2:
3:
3 Задание №3
Вводится строка произвольного текста. Удалить из нее первое и последнее слово (слова разделены пробелами).
3.1 Работа программы
Вводятся две строки произвольного текста. Поменять местами их первые слова (слова разделены пробелами)
3.2 Назначение переменных
Назначение переменных, используемых в задаче приведено в таблице 4
Таблица 4 – Назначение переменных
| Переменная | Тип | Назначение |
| ind | integer | Индекс символа |
| i | integer | элемент строки |
| s | string | Строка текста |
3.3
Блок – схема алгоритма
программы
3.4 Текст программы
program Zadacha3;
uses crt;
var s1,s2,slovo1,slovo2:string;
i,n:integer;
begin
clrscr;
writeln('ўўҐ¤ЁвҐ бва®Єг');
readln(s1);
writeln('ўўҐ¤ЁвҐ бва®Єг');
readln(s2);
n:=pos(' ',s1);
slovo1:=copy(s1,1,n-1);
delete(s1,1,n);
n:=pos(' ',s2);
slovo2:=copy(s2,1,n-1);
delete(s2,1,n);
s1:=slovo2+' '+s1;
s2:=slovo1+' '+s2;
writeln(s1);
writeln(s2);
readln;
end.
3.5 Тестирование
Когда последнее слово строки оканчивается на “k”, программа выдает верный ответ (1). При наличии между словами, впереди и после строки неопределенного количества пробелов, программа также успешно выполняет свой алгоритм (2).
1:
2:
4 Задание №4
Вводится строка произвольного текста. Удвоить в ней все буквы «А» (прописные или заглавные).
4.1 Работа программы
Вводится строка, произвольного текста. В цикле идет подсчет и удвоение всех букв “А”. В конце работы программы выводится на экран все буквы “А” в удвоенном количестве.
4.2 Назначение переменных
Назначение переменных, используемых в задаче приведено в таблице 4
Таблица 4 – Назначение переменных
| Переменная | Тип | Назначение |
| S | string | Строка |
| opn | integer | Считает отрывающиеся скобки |
| cls | integer | Считает закрывающиеся скобки |
| i | integer | Элемент строки |
4.3
Блок – схема алгоритма
программы
4.4 Текст программы
program Zadanie_4;
Uses CRT;
var stroka: string;
temp: string;
i: integer;
Begin
ClrScr;
writeln('Vvedite striku: ');
readln(stroka);
temp:='';
for i:=1 to length(stroka) do
if (stroka[i]='A') or (stroka[i]='a')
then temp:=temp+stroka[i]+stroka[i]
else temp:=temp+stroka[i];
writeln('Novaya stroka: ', temp);
readln;
4.5 Тестирование
Вводится строка произвольного текста, имеющая в себе буквы “а” (1). При вводе текста, программа успешно выполняет свой алгоритм (2).
1:
2:
5 Задание №5
Дан текстовый файл с произвольным именем. Создать файл B.TXT, в который поместить первую половину строк исходного файла и C.TXT, в который поместить оставшуюся половину. Вывести на экран первую и последнюю строку исходного файла.
5.1 Работа программы
Вначале происходит инициализация и создание файлов с первого по третий. Далее поочередно считываем строки из первого и второго файла и записываем их в третий (строки из первого и второго файла помещаются в хронологическом порядке). Подсчитываем количество строк в третьем файле, максимальный и среднюю длину строки. Закрываем файлы.
5.2 Назначение переменных
Назначение переменных, используемых в задаче приведено в таблице 5
Таблица 5 – Назначение переменных
| Переменная | Тип | Назначение |
| file1 | text | исходный текстовый файл для чтения |
| file2 | text | исходный текстовый файл для чтения |
| file3 | text | Хранит чередующиеся числа из 1ого и 2ого файлов |
| s, s1 | string | Строки |
| count | integer | Количество строк в файле |
| max | integer | Максимальная длина строки |
| sr | integer | Средняя длина строки |
5.3 Блок – схема алгоритма программы
5.4 Текст программы
program Zadanie_5;
Uses CRT;
var F1: Text;
F2: Text;
F3: Text;
T: string;
i: integer;
count: integer;
N: integer;
First_stroka: string;
Second_stroka: string;
Begin
ClrScr;
Assign(F1, 'File1.txt');
Reset(F1);
count:=1;
readln(F1,T);
First_stroka:=T;
while not(Eof(F1)) do
begin
readln(F1,T);
count:=count+1;
end;
Second_stroka:=T;
Close(F1);
N:=round(count/2);
Assign(F1, 'File1.txt');
Reset(F1);
Assign(F2, 'B.txt');
Rewrite(F2);
Assign(F3, 'C.txt');
Rewrite(F3);
i:=0;
while not Eof(F1) do
begin
i:=i+1;
readln(F1,T);
if i<=N then writeln(F2,T)
else writeln(F3,T);
end;
Close(F1);
Close(F2);
Close(F3);
writeln('Pervaya stroka: ', First_stroka);
writeln('Vtoraya stroka: ', Second_stroka);
readln;
end.
5.5 Тестирование
Программа выполняет заданный алгоритм.
6 Задание №6
Разработать библиотечный модуль, содержащий следующие подпрограммы (процедуры или функции) для работы со строками:
А. Удалить из заданной строки все знаки препинания.
Б. Заменить в заданной строке все цифры на пробелы.
В. Выделить первое слово заданной строки.
Написать программу, к которой подключается модуль, демонстрирующую работоспособность всех подпрограмм модуля.
6.1 Работа программы
Библиотечный модуль содержит в себе следующие подпрограммы.
- Процедура подсчета количества слов в строке.
В цикле функция считает количество символов отличных от пробела, после нахождения пробела счетчик количества слов увеличивается на 1 и так до завершения цикла.
- Процедура поиска слова по номеру в строке.
В цикле процедура добавляет каждый символ строки s к строке s1. При нахождении символа пробела увеличивается значение счетчика слов. Проверяется равен ли счетчик числу введенному пользователем. Если числа равны то цикл останавливается и s1 выводится на экран это и есть искомое слово, если числа не равны то строка s1 опустошается. Цикл продолжается.
- Процедура удаления слова с заданным номером в строке.
В
цикле процедура считает количество
слов в строке. После того как введенное
число пользователем будет равно с счетчиком
слов. Устанавливается первая переменная
которая послужит номером буквы в строке
с которой следует стирать символы. Дальше
ищется первый пробел после этого индекса,
и количество шагов поиска букв будет
равно длине слова. Выполняется функция
delete(). Строка выводится на экран.
Программа,
демонстрирующая
6.2 Назначение переменных
Назначение переменных, используемых в подпрограммах, приведено в таблице 6.
Таблица 6 – Назначение переменных подпрограмм модуля.