Разработка консольных приложений в среде Delphi

Автор работы: Дина Жолобова, 04 Октября 2010 в 20:06, курсовая работа

Краткое описание

В наше время программированием занимаются многие ПК-пользователи. И это вполне объяснимо: с помощью программ можно решать достаточно сложные задачи – задачи, которые могут отнять у человека много драгоценных часов, в то время как компьютер решит их за доли секунд. Кроме того, поработав какое-то время с чужими программами, хочется создать нечто свое, родное. И тогда возникает вопрос: с чего начать? Выбор языков программирования на данный момент очень велик: Basic, Pascal, C, Perl и так далее. Basic – самый легкий из этого списка, его не зря называют основой программирования, так как обычно начинают именно с него. Однако этот язык недостаточно мощный, поэтому сейчас многие начинают с чего-то более серьезного, например, с Паскаля (Pascal)1.
Именно с ним в данной курсовой работе мы и будем работать. В качестве среды для разработки приложений на этом языке выберем среду языка Delphi, который развился из Турбо Паскаля, а тот, в свою очередь, – из Паскаля.
Delphi позволяет разрабатывать приложения Windows. Но в этой работе мы рассмотрим только создание программ в стиле MS-DOS, называемых консольными приложениями.

Содержание работы

Введение 3
Глава 1. Простейшие арифметические и логические операции 5
Глава 2. Линейные программы 9
Глава 3. Ветвящиеся программы 11
Глава 4. Циклические программы 14
Глава 5. Двумерные массивы 16
Глава 6. Строковый тип данных 21
Глава 7. Операции с файлами. 24
Заключение 30
Список использованной литературы 31

Содержимое работы - 1 файл

Разработка консольных приложений в среде Delphi.docx

— 261.37 Кб (Скачать файл)

    for j:=1 to n do

    begin

    k:=B[max,j];         

    B[max,j]:=B[min,j];

    B[min,j]:=k;

    end;

    И, наконец, выводим измененный массив на экран:

    for i:=1 to n do

      for j:=1 to m do

       writeln ('B[',i,', ',j,'] = ',B[i,j]);

      Теперь приведем полный код программы:

    program Project5;

    {$APPTYPE CONSOLE}

    uses

      SysUtils;

    const n=3;

    const m=3;

    var B:array [1..n, 1..m] of integer;

    i,j,k,min,max:integer;

    begin

    for i:=1 to n do         //столбцы

    for j:=1 to m do           //строки

    begin

    write ('B[',i,', ',j,'] = ');     

                 readln (B[i,j]);               //Ввод элемента матрицы

         end;

    //---начинаем поиск минимального элемента массива:

    k:=B[1,1];

    min:=1;

    for i:=2 to n do          //столбцы

    for j:=1 to m do      //строки

    if B[i,j]<k then       //если очередной элемент массива меньше k

    begin

      k :=B[i,j];            //присвоить k этот элемент

      min :=i;             //и присвоить min номер этой строки

    end;

    //---начинаем поиск максимального элемента массива:

    k:=B[1,1];

    max:=1;

    for i:=2 to n do

      for j:=1 to m do

    if B[i,j]>k then

    begin

     k :=B[i,j];

     max:=i;

    end;

    writeln;

    //перезаписываем  строки друг в друга:

    for j:=1 to n do

    begin

    k:=B[max,j];

    B[max,j]:=B[min,j];

    B[min,j]:=k;

    end;

    //выводим массив на экран:

    for i:=1 to n do

      for j:=1 to m do

      writeln ('B[',i,', ',j,'] = ',B[i,j]);      //вывод массива

      readln;

      end.

    В заключение хотелось бы отметить, что  хотя в данной программе мы присвоили  массиву целочисленный тип integer, он может иметь и вещественный, например real. На рис. 5.1. показан результат работы программы на экране, а на рис. 5.2. показаны те же результаты, только в матричном виде.

 
 
 
 
 

 

Глава 6. Строковый тип данных

 

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

Решение.

Составим  алгоритм решения задачи.

  1. Ввести строку S.
  2. Сравнить каждую букву с предыдущими.
  3. Если нашлась хоть одна равная, то проверить, является ли текущая буква гласной. Если является – удалить из строки.
  4. Вывести измененную строку.

    Итак, в соответствии с условиями задачи нам требуется не просто составить  программу, а еще написать процедуру. Процедура – это подпрограмма, состоящая из заголовка и тела. Заголовок включает в себя служебное слово procedure, имя процедуры и список формальных параметров с указанием их типов.

    procedure DelVow (S:string);

    где DelVow – имя процедуры, а S – это наша строка, из которой нам и надо удалить повторные гласные.

    В процедуре нам понадобятся три  переменные типа integer: i, j, k. А также переменная str типа string. Идея в том, чтобы сравнить каждый элемент строкового массива со всеми предыдущими. Для этого очень удобно организовать два цикла for…do: первый – с параметром i, который будет принимать значения от 1 до числа, обозначающего количество символов (букв) в строке; второй – с параметром j, который будет принимать значения от 0 до i – 1.

  1. str:='aeiouAEIOU';       //записываем все гласные буквы с учетом регистра
  2. for i:=1 to length(S) do       
  3. for j:=0 to i-1 do
  4. if S[i]=S[j] then               //сравниваем очередную букву с предыдущими
  5. begin
  6. for k:=0 to length(str) do         
  7. if S[i]=str[k] then delete (S,i,1);          //если текущая буква – гласная, то удалить ее
  8. end;
  9. write (S);
  10. end;

    В первой строке представленного выше фрагмента в строковую переменную str записываем все гласные буквы английского языка с разными регистрами. Далее, в строке 2, i принимает определенное значение: от 1 до length(S). Необходимо отметить, что функция length(S) возвращает длину строки S. Переменная j принимает значения от 0 до номера текущего элемента строкового массива (строка 3). В строке 4 текущий символ (буква) сравнивается с предыдущими. Если нашелся хотя бы один равный элемент, то проверяем, является ли текущая буква гласной: снова организовываем цикл for…do с параметром k, который принимает значения от 0 до length(str) (строка 6); сравним текущую букву S[i] с каждым элементом строки str. Если нашлась равная, значит S[i] является гласной буквой. Исключаем ее из строки с помощью процедуры delete, которая удалит из строки S, начиная с позиции i, один символ (строка 7). После завершения всех циклов выводим измененную строку (строка 9).

    Итак, процедура написана. Переходим к  основному телу программы. Нам осталось только ввести строку и вызвать процедуру  DelVow.  

    write('S = ');

    readln(S);

    DelVow(S);

    Теперь  приведем полный код программы.

    program Project6;

    {$APPTYPE CONSOLE}

    uses

      SysUtils, windows;

    //-----Начало процедуры:

    procedure DelVow (S:string);

    var i,j,k:integer;

    str:string;

    begin

    str:='aeiouAEIOU';       //записываем все гласные буквы с учетом регистра

    for i:=1 to length(S) do       

    for j:=0 to i-1 do

    if S[i]=S[j] then                //сравниваем очередную букву с предыдущими

    begin

    for k:=0 to length(str) do         

    if S[i]=str[k] then delete (S,i,1); //если текущая буква – гласная, удалить ее

    end;

    write (S);              //выводим измененную строку                                

    end;

    //-----Конец процедуры

      var S:string;

    begin

    write('S = ');     

    readln(S);             //вводим строку

    DelVow(S);          //вызываем процедуру, указав S в качестве параметра

    readln;

    end.

    Конечно, наверное, приятнее иметь дело с  родной кириллицей, но эта программа  с русскими буквами работать не будет, вернее, будет, но некорректно. Вообще, к сожалению, консольные приложения не очень-то любят кириллицу, поэтому  иногда приходится писать латиницей. Теперь посмотрим, что у нас получилось (рис. 6.1): 

Глава 7. Операции с файлами.

 

    Задача 10.7. В файле хранятся реквизиты рабочих: фамилия, имя, отчество, дата рождения, адрес, количество детей, количество отработанных часов, расценка одного часа. Заработная плата вычисляется умножением количества отработанных часов на расценку минус 13% налога. Величина налога уменьшается на 0,01 % 
на каждого имеющегося ребенка. Записать в другой файл фамилии и инициалы рабочих и их заработную плату.
 

    Решение.

    Итак, пусть файл с реквизитами рабочих  будет именоваться «rec.txt», а файл, в который нам нужно записать фамилии и инициалы рабочих и их заработную плату, назовем «abc.txt».

    Составим  алгоритм.

  1. Открыть файлы: «rec.txt» - в режиме «для чтения», «abc.txt» - в режиме «для записи».
  2. Считать из файла «rec.txt» фамилию, первые буквы имени и отчества и записать в файл «abc.txt».
  3. Считать из файла «rec.txt» количество детей, количество отработанных часов и расценку одного часа.
  4. Рассчитать налог с учетом количества детей в процентах.
  5. Рассчитать заработную плату с учетом налога и записать в файл «abc.txt».
  6. Закрыть файлы «abc.txt» и «rec.txt».

    Для начала работы с файлами необходимо описать две переменные f и f1 и присвоить им тип textfile.

    Нам нужно открыть два файла: один – для считывания, другой – для  записи. Но прежде воспользуемся процедурой assign, которая связывает файловую переменную с файлом.

      assign(f, 'C:\rec.txt');

      assign(f1, 'C:\abc.txt');

    Первый  параметр – это файловая переменная, второй – полный путь к файлу (если файл находится в текущем каталоге, то путь к нему можно не указывать).

    Теперь  откроем файлы с помощью процедур reset и rewrite.

      reset(f);                    //открываем для чтения

      rewrite(f1);             //открываем для записи

    Если  файла для записи (т.е. «abc.txt») в указанном каталоге не обнаружится, то он создастся программой после ее запуска.

Информация о работе Разработка консольных приложений в среде Delphi