Pascal — различия между версиями

Материал из synset
Перейти к: навигация, поиск
 
(не показано 8 промежуточных версий этого же участника)
Строка 1: Строка 1:
'''Стандартные программы для реализации алгоритмов на языке Pascal '''
+
'''Паскаль''' (англ. ''Pascal'') — высокоуровневый язык программирования общего назначения. Один из наиболее известных языков программирования, широко применяется в промышленном программировании, обучении программированию в высшей школе, является базой для большого числа других языков. Был создан Никлаусом Виртом в 1968-69 годах (опубликован в 1970 году) после его участия в работе комитета разработки стандарта языка Алгол-68.
  
 +
Ниже представлен список разделов, в которых находятся описания и реализация программ на языке Pascal. Данные программы могут быть полезны в написании более сложных программ.
  
== Функция для определения принадлежности числа к простым: ==
+
[[Pascal:Целочисленная арифметика|Целочисленная арифметика]]
<pre class="brush:pascal; gutter: false;">
 
Function Prime(n:longint):boolean;
 
var
 
  p,i:longint;
 
  b:boolean;
 
begin
 
  b:=true;
 
  if (n=1) or ((n>3) and (n mod 2=0)) then
 
  b:=false
 
  else
 
  begin
 
      p:=trunc(sqrt(n));
 
      i:=3;
 
      While (i<=p) and b do
 
      begin
 
        b:=n mod i<>0;
 
        i:=i+2;
 
      end;
 
  end;
 
  Prime:=b;
 
end;
 
</pre>
 
  
== Функция для определения наибольшего общего делителя: ==
+
[[Pascal:системы исчисления|Cистемы исчисления]]
  
<pre class="brush:pascal; gutter: false;">
+
[[Pascal:длинная арифметика|Длинная арифметика]]
Function GCD(a,b:longint):longint;
 
var
 
  x,y:longint;
 
begin
 
  x:=a;
 
  y:=b;
 
  While x<>y do
 
      if x>y then x:=x-y
 
      else y:=y-x;
 
  GCD:=x;
 
end;
 
</pre>
 
== Работа с текстовыми файлами. Чтение и запись: ==
 
 
<pre class="brush:pascal; gutter: false;">
 
var
 
  f1,f2:text;
 
  sum,a,b:integer;
 
begin
 
  Assign(f1,'input.dat');
 
  Assign(f2,'output.sol');
 
  Rewrite(f2);
 
  Reset(f1);
 
  Read(f1, a);
 
  Read(f1, b);
 
  close(f1);
 
  sum:=a+b;
 
  Write(f2, sum);
 
  close(f2);
 
end.
 
</pre>
 
  
 
+
[[Pascal:Разное|Разное]]
 
 
 
 
 
 
== Перевод числа из десятичной системы исчисления в систему исчисления с основанием m: ==
 
 
 
<pre class="brush:pascal; gutter: false;">
 
program Сonversion;
 
 
 
uses
 
  SysUtils;
 
const
 
  nmax=1000000000;
 
var
 
  i,v,x,m,j:integer;
 
  a:array[1..nmax] of byte;
 
begin
 
  i:=0;
 
  ReadLn(x,m);  {Вводим число x которое необходимо перевести в систему исчисления с основанием m}
 
  v:=x;
 
  While v>0 do
 
    begin
 
      inc(i);
 
      a[i]:=v mod m;
 
      v:=v div m
 
    end;
 
  Write(x,' in the calculus of reason ',m,' = ');
 
  for j:=i downto 1 do
 
      Write(a[j]);
 
  ReadLn;
 
end.
 
</pre>
 
 
 
 
 
== Перевод числа из системы исчисления с основанием m в десятичную систему: ==
 
 
 
 
 
<pre class="brush:pascal; gutter: false;">
 
program OppositeToConversion;
 
 
 
uses
 
  SysUtils;
 
Function Power(x,n:integer):integer;  {функция для возведения в степень n числа x}
 
var
 
  p,i:integer;
 
begin
 
  if n=0 then Power:=1
 
  else begin
 
  p:=x;
 
  for i:=2 to n do
 
      p:=p*x;
 
  Power:=p;
 
  end;
 
end;
 
 
 
var
 
  st:string;
 
  i,v,sum,m:integer;
 
  a:array[1..1000000] of byte;
 
begin
 
  ReadLn(st);
 
  ReadLn(m);
 
  v:=length(st);
 
  for i:=1 to v do
 
      a[v-i+1]:=StrToInt(st[v-i+1]);
 
  sum:=0;
 
  for i:=1 to v do
 
      sum:=sum+Power(m,i-1)*a[v-i+1];
 
  WriteLn(sum);
 
  ReadLn;
 
end.
 
</pre>
 
 
 
== Длинная арифметика ==
 
Длинная арифметика - раздел программирования позволяющий удобно работать с числами которые не могут быть помещены в стандартные типы языка. Ниже представлен код программы реализующий сложение двух чисел, длина которых ограничивается только оперативной памятью. По анологии с этой программой, могут быть решены задачи умножения, деления, возведения в степень, получение факториала больших чисел.
 
 
 
<pre class="brush:pascal; gutter: false;">
 
 
 
program A+B;
 
 
 
var
 
  s1,s2:string;
 
  a,b:array[1..100] of integer;
 
  len,i,c:integer;
 
  f1,f2:text;
 
begin
 
  Assign(f1,'INPUT.TXT');  Reset(f1);
 
  Assign(f2,'OUTPUT.TXT'); ReWrite(f2);
 
  c:=0;
 
  ReadLn(f1,s1);
 
  ReadLn(f1,s2);
 
  close(f1);
 
  len:=length(s1);
 
  for i:=1 to len do
 
      a[len-i+1]:=Ord(s1[i])-48;
 
  len:=length(s2);
 
  for i:=1 to len do
 
      b[len-i+1]:=Ord(s2[i])-48;
 
 
 
  if length(s1)>length(s2) then len:=length(s1)
 
  else len:=length(s2);
 
  for i:=1 to len do
 
    begin
 
      c:=c+a[i]+b[i];
 
      a[i]:=c mod 10;
 
      c:=c div 10;
 
    end;
 
  if c>0 then begin
 
      len:=len+1;
 
      a[len]:=c;
 
    end;
 
  for i:=len downto 1 do
 
      Write(f2,a[i]);
 
  close(f2);
 
end.
 
</pre>
 

Текущая версия на 13:16, 21 февраля 2010

Паскаль (англ. Pascal) — высокоуровневый язык программирования общего назначения. Один из наиболее известных языков программирования, широко применяется в промышленном программировании, обучении программированию в высшей школе, является базой для большого числа других языков. Был создан Никлаусом Виртом в 1968-69 годах (опубликован в 1970 году) после его участия в работе комитета разработки стандарта языка Алгол-68.

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

Целочисленная арифметика

Cистемы исчисления

Длинная арифметика

Разное