Программирование и основы алгоритмизации. 2

Федеральное агентство по образованию Российской Федерации

Вологодский государственный технический университет 

Кафедра АВТ 
 
 
 
 
 
 
 
 
 
 
 
 

Пояснительная записка к курсовому проекту

по дисциплине

«Программирование и основы алгоритмизации» 
 
 
 
 
 
 
 
 
 
 

                                                        Выполнил студент: Казаков Д.В.

                                                        Принял преподаватель: Давыдова Е.Н. 
 
 
 
 
 
 
 
 
 
 

Череповец

2010 

СОДЕРЖАНИЕ 

Введение

1 Задание  1…………………………………………………………………………………….....4

1.1 Работа  программы…………………………………………………………………………...4

1.2 Назначение  переменных…………………………………………………………………….4

1.3 Блок  – схема алгоритма программы………………………………………………………..5

1.4 Текст  программы…………………………………………………………………………….6

1.5 Тестирование……………………………………………………………………………..….6

2 Задание  2…………………………………………………………………………………….…7

2.1 Работа  программы…………………………………………………………………………...7

2.2 Назначение  переменных………………………………………………………………….....7

2.3 Блок  – схема алгоритма программы………………………………………………………..8

2.4 Текст  программы………………………………………………………………………..….9

2.5 Тестирование……………………………………………………………………………..…10

3 Задание  3………………………………………………………………………………………11

3.1 Работа  программы …………………….................................................................................11

3.2 Назначение переменных………………………………………………...............................11

3.3 Блок  – схема алгоритма программы………………………………………………………12

3.4 Текст  программы…………………………………………………………………………...13

3.5 Тестирование……………………………………………………………………………….14

4 Задание  4……………………………………………………………………………………...14

4.1 Работа  программы………………………………………………………………………….14

4.2 Назначение  переменных…………………………………………………………………...14

4.3 Блок  – схема алгоритма программы………………………………………………………16

4.4 Текст  программы…………………………………………………………………………...17

4.5 Тестирование……………………………………………………………………………….17

5 Задание  5……………………………………………………………………………………...18

5.1 Работа  программы……………………………………………………………………….....18

5.2 Назначение  переменных…………………………………………………………………...18

5.3 Блок  – схема алгоритма программы………………………………………………………19

5.4 Текст  программы…………………………………………………………………………...20

5.5 Тестирование…….………………………………………………………………………….21

 Задание  6……………………………………………………………………………………......22

6.1 Работа программы………………………………………………………………………......23

6.2 Назначение переменных…………………………………………………………………...23

6.3 Текст программы …………………………………………………………………………..24

6.4 Тестирование …………………………………………………………………………........27

Заключение……………………………………………………………………………………..29 
 
 
 
 
 
 
 
 
 
 
 
 
 

      Введение 

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

      1 Задание №1

     Заданы  два массива A и B по N элементов.   Сформировать и  вывести на печать массив L из 2*N элементов: 
L=(A(1)+B(1),A(1)-B(1),A(2)+B(2),A(2)-B(2),.....,A(N)+B(N),A(N)-B(N)) 
Значение N и элементы массива A ввести с клавиатуры.
 

      
    1. Работа  программы

     Работа  программы начинается с ввода  количества элементов N. Далее массив заполняется случайным числами в диапазоне от -100 до 100. В цикле находим минимальный элемент массива и меняем местами с последний элементов, перезаписываем массив. На экран выводятся массивы до и после изменения.

    1. Назначение переменных

      Назначение  переменных, используемых в задаче, приведено в таблице 1

            Таблица 1 – Назначение переменных

Переменная Тип Назначение
n integer  количество  элементов массива.
i integer Порядковые номера элементов массивов.
min integer Минимальный элемент  массива.
с array[1..100]of integer Массив.
ind integer Индекс элемента массива.
 
 
 
 
 
  
    1. Блок  – схема  алгоритма  программы

    1. Текст программы

     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.

    1. Тестирование программы

      Вводим  количество элементов массивов 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

align="justify">       for j:=1 to M do

        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 – Назначение переменных подпрограмм модуля.

Программирование и основы алгоритмизации. 2