Примеры программ на Паскале.
На главную
Программирование на Pascal
(Из рубрики: Начинающим о компьютерных технологиях. Автор - NK)
nk-inform.narod.ru
Здесь представлены примеры
простых программ на языке программирования Pascal. В процессе их разбора, те,
кто начинает учиться программировать, смогут усвоить некоторое количество
простых приемов, которые можно использовать в дальнейшем.
Описание к приведенным программам дается после демонстрации
каждого исходника. Если вы сможете понять смысл программы без моего комментария,
я буду считать свою задачу, в оказании вам помощи по изучению азов
программирования выполненной.
1. Из простой в заглавную.
2. Число в степени.
3. Число пробелов в строке.
4. Цикл с предусловием.
5. Нахождение минимального числа.
6. Заполнение и вывод двумерного массиваю
7. Лохотрон - найди шарик.
8. Корни квадратного уравнения - 1.
9. Корни квадратного уравнения - 2.
10. Количество цифр в числе.
11. ASCII - код нажатой клавиши.
12. Контроль ввода нуля.
13. Запись в файл.
14. Поиск файла на диске.
15. Контроль ввода.
16. Размер диска.
17. Десятки и единицы.
18. Количество положительных чисел.
19. Оператор Case.
20. Подача сигнала.
21. Догнал ли Ахил черепаху.
1. Из простой в заглавную.
В начало
Program Str1;
VAR Words: STRING;
BEGIN
Words := 'microsoft';
Words[1] := UpCase (Words[1]);
WriteLn(Words); {Выводится Microsoft'}
END.
Программа демонстрирует перевод символа строки из обычного представления в
заглавное. Часто такой прием требуется для анализа введенного символа, если
важно проверить именно символ, а не его регистр.
2. Число в степени.
В начало
Program Stepen_chisla;
Var
Z, А : Real; M : integer;
Function Step (N: integer; X:real): real;
Var
I: integer; Y: Real;
Begin
I:=1; Y:=1;
While I<=N do
Begin
Y:=Y*X; I:=I+1;
End;
Step:=Y;
End; {Конец функции}
Begin
Write(‘Введи степень и возводимое число’); Readln(Z,M);
F:=Step(M,Z);
Writeln(Z, ‘ в степени’, M, ‘=’,F);
End.
В Паскале нет встроенной функции возведения в степень. Программа показывает, как
это можно исправить. Попробуйте реализовать такую функцию для случая, когда
показатель степени не является целым числом.
3. Число пробелов в строке.
В начало
program CountSpacesInString;
var
str: string;
function CountSpaces (s: string): integer;
var
i, count: integer;
begin
count := 0;
for i:=1 to length(s) do
if s[i]=' ' then
count := count+1;
CountSpaces := count;
end;
{основная программа}
begin
writeln('Программа подсчитывает количество пробелов '+'во введенной
строке');
repeat
writeln('Введите исходную непустую строку:');
readln(str);
if (length(str)<1) then
writeln('Исходная
строка должна быть непустой');
until length(str)>0;
writeln('В строке "',str,'" ',CountSpaces(str),' пробелов.');
readln;
end.
Программа демонстрирует приемы работы со строками. Поиск символа в строке,
контроль длины введенной строки. Здесь же реализована структура цикла с
постусловием и применение функции созданной пользователем.
4. Цикл с предусловием.
В начало
program cycle_while;
Var
x,y,sum:real; otv:char;
begin
sum:=0;
otv:='Д';
while (otv='Д') or (otv='д') do
begin
write('Введите числа x,y > 0
');
readln(x,y);
writeln('Их произведение =
',x*y:8:3);
sum:=sum+x+y;
write('Завершить программу (Д/Н)? ');
readln(otv);
end;
writeln('Общая сумма = ',sum:8:3);
readln
end.
В приведенной программе циклически будет вычисляться произведение двух введенных
чисел. Для продолжения работы программы необходимо периодически на ее вопрос
отвечать утвердительным символом Д или д. Паскаль выводит вещественные числа в
так называемой экспоненцмальной форме. Для их обычного представления необходимо
после выводимой переменной указать параметры вывода в виде двух чисел после
двоеточий.
5. Нахождение минимального числа из введенных.
В начало
Program MIN;
Var
A, I : Integer;
Min : Integer;
Begin
Min:=32767;
For I:=1 to 10 do
Begin
Write('Vvedi chislo ');
Readln(A);
If A < Min then
Min:=A;
end;
Writeln('MIN=',Min);
Readln;
end.
Простая программа демонстрирует цикл со счетчиком, и работу условных операторов.
В начале анализа в качестве минимального задано максимально возможное из целых
положительных целочисленного типа. (Попробуйте реализовать этот алгоритм по
другому.)
6. Заполнение и вывод двумерного массива.
В начало
Program MASS-DV;
var
mas:array[1..5,1..5] of integer; {объявление
двухмерного массива}
i ,j:integer;
begin
{Ввод значений элементов массива}
for i:=1 to 5 do
for j:=1 to 5 do readln(mas[i,j]);
{Вывод значений элементов массива}
for i:=1 to 5 do
begin
for j:=1 to 5 do
write(' ',mas[i,j]);
writeln;
end;
end.
Демонстрация ручного заполнения двумерного массива с последующим выводом его на
экран.
7. Лохотрон - найди шарик.
В начало
Uses Crt;
Var
A, C, B : Integer;
Begin
clrscr;
Randomize;
gotoXY(20,10); Writeln('Где шарик? Введи номер стакана…');
A:=Random(99);
If A<=33 then B:=1 Else If A>66 then B:=3 else B:=2;
GotoXY(20,11); Writeln(' _ _ _');
GotoXY(20,12); Writeln('/ \ / \ / \');
GotoXY(20,13); Writeln(' 1 2 3');
Readln(C);
If C=B then Write('Вы угадали!!!') else Write('Вы ошиблись!');
GotoXY(20,11); Writeln(' ');
GotoXY(20,12); Writeln('\_/ \_/ \_/');
GotoXY(17+4*B,12); Write('O');
Readln; end.
Кто ж не видел лохотронщиков, ловко катающих шарик под колпачками. Здесь это
делает программа. Но, только она не будет вас обманывать, а в конце честно,
покажет, в каком стаканчике шарик. Программа демонстрирует вывод в определенную
точку экрана, перемещая в нее курсор процедурой GoToXY из модуля CRT.
8. Корни квадратного уравнения - 1.
В начало
Program Sq1;
Var A, B, C, D, X1, X2 : Real;
Begin
Writeln ('Введите коэффициенты квадратного уравнения');
Readln (A,B,C);
D:=B*B-4*A*C;
If D<0 Then Writeln ('Корней нет! ')
Else
Begin
X1:=(-B+SQRT(D))/2/A;
X2:=(-B-SQRT(D))/2/A;
Writeln ('X1=',
X1:8:3, ' X2=',X2:8:3)
End;
End.
Классическая программа вычисления корней квадратного уравнения с контролем
дискриминанта. Обратите внимание, как в Паскале формируются вычислительные
выражения.
9. Корни квадратного уравнения - 2.
В начало
Program Sq2;
Var A, B, C, D, X, X1, X2 : Real;
Begin
Writeln ('Введите коэффициенты уравнения (A, B, C) ');
If A=0 Then
If B=0 Then
If C=0 Then Writeln('X - любое число')
Else Writeln('Корней нет! ')
Else Begin X:=-C/B; Writeln('X=',X:8:3) End
Else
Begin End;
End.
В программе проанализированы ситуации, когда какой либо из коэффищиентов равен
0. Обратите внимание на использование пустого оператора Begin End; Оказывается
иногда без него никак не обойтись.
10. Количество цифр в числе.
В начало
Program KolCifr;
Var
I, S, N : Longint;
Begin
Writeln('Введите целое'); Readln(I);
N:=1;
While I > 10 DO
BEGIN
I:=I DIV 10;
Inc(N);
end;
Write('Количество цифр = ',N);
Readln; end.
Простая программа определяет количество цифр в числе. Используется
алгоритмическая структура цикл с предусловием.
11. ASCII - код нажатой клавиши.
В начало
Uses crt;
Var ch : char;
Begin
clrscr; {очистка экрана}
repeat
ch:=readkey; {ожидание
нажатия клавиши}
WriteLn('Клавиша и ее ASCII-код: ', ch, ‘-’, ord(ch));
{Вывод ASCII - кода}
until ch=#27; {27 - ASCII - код клавиши Esc}
End.
Мы говорим: кодирование. А какому числу в реальности соответствует каждый из
символов клавиатуры. В программах довольно часто приходится анализировать
нажатие определенных клавиш. Данная программа позволит вам выяснить, что чему
соответствует.
12. Контроль ввода нуля.
В начало
Program KONTROL;
Label A;
Var I : Integer;
Begin
A:
Write(‘Введите число. 0 - выход из программы’); Readln(I);
Writeln(‘Вы ввели число = ’, I);
IF I <> 0 then Goto A;
End.
Программа закончит свою работу, если вы специально или по ошибре ввели нуль в
качестве требуемого числа. Здесь продемонстрировано назначение меток (Label) и
так страстно ругаемое применение оператора GoTo (Идти на).
13. Запись в файл.
В начало
Program File;
var
f: file;{файловая переменная f}
begin
assign(f,'test.txt'); {назначение файловой
переменной f имени файла test.txt}
rewrite(f); {создание файла и открытие его
для записи}
writeln(f,'Запись'); {запись информации в
файл}
close(f); {закрытие файла}
end.
В реальных программах сохранение результатов в файл происходит очень часто.
В этой программе продемонстрирован этот механизм. Поэкспериментируйте с записью
чисел, а затем попробуйте их прочитать и использовать в программе. Практически
все школьные олимпиады по программированию используют именно такой способ ввода и
вывода данных.
14. Поиск файла на диске.