Перфокарты впервые начали применяться в ткацких станках Жаккарда (1808) для управления узорами на тканях. В информатике перфокарты впервые были применены в «аналитической машине» Бэббиджа и в «интеллектуальных машинах» коллежского советника С. Н. Корсакова (1832), механических устройствах для информационного поиска и классификации записей[1]. В конце XIX в. началось использование перфокарт для обработки результатов переписей населения в США (см. табулятор Холлерита).
Бухгалтерские машины (табуляторы) и позднее компьютеры первого поколения, в 1920-х—1950-х годах, использовали перфокарты в качестве основного носителя при хранении и обработке данных. Затем, в течение 1970-х — начале 1980-х годов, они использовались только для хранения данных и постепенно были замещены магнитными лентами. В настоящее время перфокарты не используются нигде, кроме устаревших систем, однако оставили свой след в компьютерной технике: отображаемый по умолчанию текстовый видеорежим дисплеев подавляющего большинства компьютерных устройств содержит по горизонтали 80 знакомест, ровно столько, сколько их было на стандартной перфокарте.
Главным преимуществом перфокарт было удобство манипуляции данными — в любом месте колоды можно было добавить карты, удалить, заменить одни карты другими (то есть фактически выполнять многие функции, позже реализованные в интерактивных текстовых редакторах).
В 2011 году в США всё ещё существовала компания Cardamation, поставлявшая перфокарты и устройства для работы с перфокартами[2]. Об использовании перфокарт в современных организациях сообщалось в 1999[3] и 2012 годах[4].
var n,i:integer;
t:array[1..100] of real;
a,b:real;
begin
readln(n);
readln(a);
readln(b);
for i:=1 to n do
begin
t[i]:=(b-a)/n;
write(t[i],' ');
end;
end.
2) Program n1;
var a:array[1..100] of integer;
n,i:integer;
k:real;
begin
read(n);
k:=0;
for i:=1 to n do
read(a[i]);
for i:=1 to n do
if a[i] mod 2 <> 0 then
k:=k+1;
writeln;
writeln('кол-во нечет. чисел равно ',k,'');
end.
6) Program n1;
var a:array[1..100] of real;
i,n:integer;
s,sr:real;
begin
read(n);
for i:=1 to n do
read(a[i]);
s:=0;
sr:=0;
for i:=1 to n do
s:=s+a[i];
sr:=s/n;
writeln('сред. арифметическое равно ',sr,'');
end.
7) Program n1;
var a:array[1..100] of real;
i,n:integer;
min,max:real;
begin
read(n);
for i:=1 to n do
read(a[i]);
min:=a[1];
for i:=2 to n do
if a[i]<min then
min:=a[i];
max:=a[1];
for i:=2 to n do
if a[i]>max then
max:=a[i];
writeln('максимальный элемент равен ',max,'');
writeln('минимальный элемент равен ',min,'');
end.
8) Program n1; var a:array[1..100] of real; i,n:integer; min,max,nom1,nom2:real; begin read(n); for i:=1 to n do read(a[i]); min:=a[1]; nom1:=1; for i:=2 to n do if a[i]<min then begin min:=a[i]; nom1:=i; end; max:=a[1]; nom2:=1; for i:=2 to n do if a[i]>max then begin max:=a[i]; nom2:=i; end; writeln('максимальный элемент равен ',max,', его номер ',nom2,''); writeln('минимальный элемент равен ',min,', его номер ',nom1,''); end.
9) Program n1; var a:array[1..100] of real; i,n:integer; min,max,s,sr:real; begin read(n); randomize; for i:=1 to n do begin a[i]:=random(100)+1; write(a[i],' '); end; writeln; s:=0; sr:=0; for i:=1 to n do s:=s+a[i]; sr:=s/n; writeln('ср. арифм. = ',sr,''); min:=a[1]; for i:=2 to n do if a[i]<min then min:=a[i]; max:=a[1]; for i:=2 to n do if a[i]>max then max:=a[i]; writeln('максимальный элемент равен ',max,''); writeln('минимальный элемент равен ',min,''); end.