Разработка консольных приложений в среде Delphi
Курсовая работа, 04 Октября 2010, автор: Дина Жолобова
Краткое описание
В наше время программированием занимаются многие ПК-пользователи. И это вполне объяснимо: с помощью программ можно решать достаточно сложные задачи – задачи, которые могут отнять у человека много драгоценных часов, в то время как компьютер решит их за доли секунд. Кроме того, поработав какое-то время с чужими программами, хочется создать нечто свое, родное. И тогда возникает вопрос: с чего начать? Выбор языков программирования на данный момент очень велик: 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 Кб (Скачать файл)Создадим цикл while…do, который будет продолжаться до тех пор, пока не будет достигнут конец файла «rec.txt».
- while not eof(f) do //пока не будет достигнут конец файла, выполнять цикл
- begin
- readln (f,S); //считываем из файла фамилию
- write(f1,S,' '); //записываем ее в «abc.txt»
- readln (f,S); //считываем имя
- write(f1,S[1],'. '); //записываем его первую букву в файл
- readln (f,S); //считываем отчество
- writeln(f1,S[1],'.');
- readln (f,S); //считываем дату рождения
- readln (f,S); //считываем адрес
- readln (f,S); //считываем количество детей
- Val(S,ch,j); //преобразуем строку в число
- if j>0 then break; //если преобразование некорректно, выйти из цикла
- readln (f,S); //считываем количество отработанных часов
- Val(S,z,j);
- if j>0 then break;
- readln (f,S); //считываем расценку одного часа
- Val(S,h,j);
- if j>0 then break;
- n:=13-(ch*0.01); // налог с учетом детей
- z:=h*z;
//зарплата без учета налога - z:=z-(z/100)*n; //зарплата с учетом налога
- writeln(f1,z:2:2); //записываем зарплату в файл «abc.txt»
- end;
Функция eof(f) (строка 1) принимает значение «истина» (true), если достигнут конец файла, иначе – «ложь» (false).
В теле цикла while…do происходит построчное считывание из файла «rec.txt» в переменную S типа string (так как считанные из файла данные имеют строковой тип). В третьей строке считываем фамилию рабочего, в четвертой – записываем в файл. Далее (строка 5) считываем имя рабочего и записываем первую букву в файл «abc.txt» вместе с точкой (строка 6). То же самое делаем в седьмой и восьмой строке с отчеством: считываем и записываем в файл «abc.txt» первую букву отчества, так же добавив после нее точку.
В строках 9 и 10 считываем дату рождения и адрес. Эти данные нам не нужны, но пропустить мы их не можем. В строке 11 считываем количество детей. Так как мы имеем дело со строковыми данными, математические операции мы с ними проводить не можем. Но мы можем преобразовать эти данные в их численные значения с помощью процедуры val, где первый параметр – строка, которую необходимо преобразовать, второй – переменная соответствующего численного типа, в которую будет записан результат, а третий параметр хранит позицию первого недопустимого символа. Так, если после преобразования третий параметр больше нуля – выходим из цикла.
Таким образом, мы считаем из файла «rec.txt» и запишем в переменные ch, h, z количество детей, количество отработанных часов и расценку одного часа соответственно.
В строке 20 рассчитаем налог в процентах, который будет вычитаться из зарплаты: умножим 0,01 на количество детей и вычтем это произведение из 13. Затем, в строке 21, мы умножим расценку одного часа на количество отработанных часов. А в строке 22 посчитаем зарплату рабочих с учетом налога. И, наконец, запишем зарплату в файл «abc.txt». Отметим, что после чтения или записи все открытые файлы рекомендуется закрыть.
Приведем полный код программы.
program Project7;
{$APPTYPE CONSOLE}
uses
SysUtils;
var f,f1:textfile;
j,ch,h:integer;
n,z:real;
S:string;
begin
assign(f, 'C:\rec.txt');
assign(f1, 'C:\abc.txt');
reset(f); //открыть файл «rec.txt» в режиме чтения
rewrite(f1); //открыть файл «abc.txt» в режиме записи
while not eof(f) do //пока не будет достигнут конец файла, выполнять цикл
begin
readln (f,S); //считываем из файла фамилию
write(f1,S,' '); //записываем ее в «abc.txt»
readln (f,S); //считываем имя
write(f1,S[1],'. '); //записываем его первую букву в файл
readln (f,S); //считываем отчество
writeln(f1,S[1],'.');
readln (f,S); //считываем дату рождения
readln (f,S); //считываем адрес
readln (f,S); //считываем количество детей
Val(S,ch,j); //преобразуем строку в число
if j>0 then break; //если преобразование некорректно, выйти из цикла
readln (f,S); //считываем количество отработанных часов
Val(S,z,j);
if j>0 then break;
readln (f,S); //считываем расценку одного часа
Val(S,h,j);
if j>0 then break;
n:=13-(ch*0.01); // налог с учетом детей
z:=h*z;
z:=z-(z/100)*n; //зарплата с учетом налога
writeln(f1,z:2:2); //записываем зарплату в файл «abc.txt»
end;
close(f1); //закрываем файл «abc.txt»
close(f); //закрываем файл «rec.txt»
end.
В заключение стоит заметить, что если файл «abc.txt», в случае его отсутствия в указанной папке, создается автоматически после запуска программы, то файл «rec.txt» должен существовать, иначе возникнет ошибка, и программа не сможет корректно работать. На рис. 7.1. показан результат работы программы, а на рис. 7.2. и рис. 7.3. показано содержимое файлов «rec.txt» и «abc.txt».
Заключение
В наше время среднестатистическому ПК-пользователю достаточно редко приходится сталкиваться с консольными приложениями, большее предпочтение он отдает оконным. И кажется, что программы с текстовым интерфейсом уходят в прошлое. Напрасно. На самом деле такие программы и в настоящее время необходимы. Может быть, внешне они и малопривлекательны, однако, как мы выше уже убедились, по функциональности ничем не уступают приложениям с богатым графическим интерфейсом – а это самое главное.
В результате проделанной работы мы получили семь консольных приложений для решения различных задач. Они эффективны в работе, малотребовательны к ресурсам и могут работать на маломощных компьютерах.
Хотелось бы еще добавить, что все-таки в современном мире обойтись без программирования крайне сложно. В самом начале я уже говорила, что существует немало таких задач, решение которых у человека отнимает много времени. Возьмем для примера хотя бы задачу 4.7 (стр. 13). Вообразите, сколько времени ушло бы на ее решение без помощи программы, если бы m было равно, например, 10000? Не говоря уже о том, что человек – не робот, он способен допускать различные ошибки в расчетах, особенно когда ему приходится проделывать долгую и утомительную работу. В то время как компьютер всегда максимально точен.
А, к примеру, в современной экономике ошибки, пусть даже самые, казалось бы, мелкие, могут привести к катастрофическим последствиям. Именно поэтому очень важно уметь грамотно и качественно писать различные программы для решения экономически важных задач, которые с каждым новым этапом в развитии страны становятся все сложнее.
Список использованной литературы
- Алексеев, Е. Р., & Чеснокова, О. В. (2004). Шаг за шагом. Турбо Паскаль 7.0. Москва: NT Press.
- Бобровский, С. (2000). Delphi 5. Учебный курс. Санкт-Петербург: Питер.
- Гаврилов,
С. Программирование
консольных приложений
на Delphi. Получено 09. 04. 2010 r., из http://www.gptelecom.ru/
Articles/Console/index.htm