Автор работы: Дина Жолобова, 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
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.
В
заключение хотелось бы отметить, что
хотя в данной программе мы присвоили
массиву целочисленный тип inte
Задача
8.7. Написать процедуру удаления повторных
гласных в слове. Например, если в слове
есть буква а, то после преобразований
она должна остаться одна, другие буквы
а должны быть удалены.
Решение.
Составим алгоритм решения задачи.
Итак, в соответствии с условиями задачи нам требуется не просто составить программу, а еще написать процедуру. Процедура – это подпрограмма, состоящая из заголовка и тела. Заголовок включает в себя служебное слово procedure, имя процедуры и список формальных параметров с указанием их типов.
procedure DelVow (S:string);
где DelVow – имя процедуры, а S – это наша строка, из которой нам и надо удалить повторные гласные.
В процедуре нам понадобятся три переменные типа integer: i, j, k. А также переменная str типа string. Идея в том, чтобы сравнить каждый элемент строкового массива со всеми предыдущими. Для этого очень удобно организовать два цикла for…do: первый – с параметром i, который будет принимать значения от 1 до числа, обозначающего количество символов (букв) в строке; второй – с параметром j, который будет принимать значения от 0 до i – 1.
В первой строке представленного выше фрагмента в строковую переменную 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):
Задача
10.7. В файле хранятся реквизиты рабочих:
фамилия, имя, отчество, дата рождения,
адрес, количество детей, количество отработанных
часов, расценка одного часа. Заработная
плата вычисляется умножением количества
отработанных часов на расценку минус
13% налога. Величина налога уменьшается
на 0,01 %
на каждого имеющегося ребенка. Записать
в другой файл фамилии и инициалы рабочих
и их заработную плату.
Решение.
Итак, пусть файл с реквизитами рабочих будет именоваться «rec.txt», а файл, в который нам нужно записать фамилии и инициалы рабочих и их заработную плату, назовем «abc.txt».
Составим алгоритм.
Для начала работы с файлами необходимо описать две переменные f и f1 и присвоить им тип textfile.
Нам нужно открыть два файла: один – для считывания, другой – для записи. Но прежде воспользуемся процедурой assign, которая связывает файловую переменную с файлом.
assign(f, 'C:\rec.txt');
assign(f1, 'C:\abc.txt');
Первый параметр – это файловая переменная, второй – полный путь к файлу (если файл находится в текущем каталоге, то путь к нему можно не указывать).
Теперь откроем файлы с помощью процедур reset и rewrite.
reset(f); //открываем для чтения
rewrite(f1); //открываем для записи
Если файла для записи (т.е. «abc.txt») в указанном каталоге не обнаружится, то он создастся программой после ее запуска.
Информация о работе Разработка консольных приложений в среде Delphi