Материалы школьного этапа олимпиады по информатике

Задание для 7-8 классов
Zadanie_shkol'nogo_etapa_IN_7_8_2015.pdf
Adobe Acrobat Document 208.0 KB
Задания для 9-11 классов
Zadanie_shkol'nogo_etapa_IN_9_11_2015.pd
Adobe Acrobat Document 157.3 KB
ScratchInstaller1.4.rar
compressed file archive 32.6 MB

Добавлены учебники для 5 и 6 классов в Библиотечку.

С задачником
PascalABCNETSetup.exe
exe File 18.4 MB
Только среда программирования
PascalABCNETMiniSetup.exe
exe File 12.9 MB
Pascal ABC
abcpascal.zip
Compressed Archive in ZIP Format 4.0 MB
sbornik_zadach_po_programmirovaniu_brozd
Adobe Acrobat Document 532.4 KB

Пояснения к темам предмета

Очень краткая теория на боковой ссылке.

Первая программа.

Ветвления

С клавиатуры вводится два числа. Если первое больше второго, то вычислить разность, в противном случае вычислить сумму.


Вывести на печать таблицу умножения на 3. 

Program z1;

 Uses  crt;

 Var  a,b,c: integer;

 Begin

   ClrScr;

   WriteLn (' Программа таблица умножения ');

   b:=3;

   For a:=1 to 10 do

   Writeln ( b,' x ',a,' = ',b*a);

 end.

Считаем до 100

Демонстрация работы цикла с параметром.

Program z1;
 Uses Crt;
 Var i: integer;
 Begin
   ClrScr;
   For i:=1 to 100 do
    begin
    Write (' ', i);
    delay(50);
    end;
 end.

Напишите еще два варианта программы.

Графика

// Простой домик

Program z1;
 Uses graphabc, crt;
 Begin
   rectangle (100,100,200,200);
   rectangle (120,120,180,180);
   line (100,100,150,50);
   line (150,50,200,100);
 end.

program d1;

uses graphabc, crt;

var x,y: integer;

begin

x:=100;

y:=100;

 

rectangle (x,y,x+150,y+150);

 

end.

Циклы и графика

// Забор

Program z1;

Uses graphabc, Crt;

Var a,b,c,d: integer;

Begin

a:=1;

b:=100;

for c:=1 to 60 do

begin

rectangle (a,b,a+10,b+100);

delay (10);

FloodFill(a+2,b+2, clNavy);

a:=a+10;

delay (100);

end;

end.

Program z1;
 Uses Crt,graphABC;
 Var  c,x,dx,y,dy: integer;
 Begin
 x:=10; dx:=10;
 y:=10; dy:=10;
 repeat
   rectangle (x,y,x+10,y+10);
   x:=x+dx;
   y:=y+dy;
   if (x>580) or (x<10) then dx:=-dx;
   if (y>380) or (y<10) then dy:=-dy;
   delay(20);
 until keypressed;
 end.

Попробуйте сотворить 2 и более квадратика.

Пишушая машинка (работа со строками).

Program z1;
uses crt;
var i,n,c:integer;
    m,s:string;
begin
  s:='Пишущая машинка в действии ';
 n:=length(s);
 for i:=1 to n do begin
   m:=copy(s,i,1);
   write (m);
   delay (100);
  end;
end.

Попробуйте сделать еще один вариант с подобным эффектом.

Массивы

Создать одномерный массив из 100 случайных элементов. Значения элементов в интервале от 1 до 9 включительно.

Program z1;

 Uses Crt;

 Var i,m,j: integer;

       a: array[1..100] of integer;

Begin

   ClrScr;

   randomize;

      for i:= 1 to 100 do

     begin

      textcolor (4);

      a[i]:=random(9)+1;

      write (' ', a[i]);

      delay(100);

     end;    

end.

Найти сумму элементов одномерного массива

Program z1;
 Uses Crt;
 Var i,m,j: integer;
       a: array[1..100] of integer;
Begin
   ClrScr;
   m:=0;
   randomize;
      for i:= 1 to 100 do
     begin
      textcolor (4);
      a[i]:=random(9)+1;
      write (' ', a[i]);
      m:=m+a[i];
      delay(100);
     end;
     WriteLn;
     WriteLN ('Сумма элементов = ',m);
end.

Создать двумерный массив 20х20, состоящий из случайных чисел

Program z1;

 Uses Crt;

 Var i,m,j: integer;

       a: array[1..20,1..20] of integer;

Begin

   ClrScr;

    for j:= 1 to 20 do

     begin

    for i:= 1 to 20 do

     begin

      textcolor (6);

      a[j,i]:=1;

      write (' ', a[j,i]);

      delay(5);

     end;

     WriteLn;

     end;

end.

Создать одномерный массив из 100 случайных чисел и отсортировать его по возрастанию.

Program z1;

 Uses Crt;

 Var i,m,j: integer;

       a: array[1..100] of integer;

Begin

   ClrScr;

   randomize;

      for i:= 1 to 100 do

     begin

      textcolor (4);

      a[i]:=random(100)+1;

      write (' ', a[i]);

      delay(100);

     end;

  writeln;

   writeln;

  for j:=1 to 100 do

  for i:= 1 to 99 do

     begin

      textcolor (4);

      if a[i]>a[i+1] then

         begin   m:=a[i]; a[i]:=a[i+1];a[i+1]:=m; end;

     end;

     for i:= 1 to 100 do

     begin

      textcolor (4);

      write (' ', a[i]);

      delay(100);

     end;

end.

Ркабота с файлами

Program File_text;

uses crt;

var

f1 : text;

st : string;

n: byte;

begin

assign   (f1, 'file1.txt'); {связать с файлом file1.txt  файловую переменную f1  }

rewrite  (f1); { создать новый файл  с именем file1.txt }

writeln ( f1, 'Очень полезно изучать pascal'); { записать предложения в файл}

close (f1);    { закрыть файл для записи }

reset (f1); { открыть файл для чтения }

while not eof (f1) do { пока не конец файла  f1}

begin

readln (f1, st);    {читаем строку из файла f1 }

writeln(st);         { выводим на экран }

end;

close (f1); { закрыть файл  для чтения}

end .

 

Записи

Ввести информацию по 3-м студентам ( порядковый номер, Ф.И.О. и три оценки) определить количество отличников и средний бал каждого студента.

 

Program zap_1;

Type student = record

n : integer ;

fio : string[40] ;

bal : array [1..3] of integer

end;

Var spisok : student ;

i, j, kol, s : integer; sr : real;

Begin

kol:=0;

With spisok do

For i:=1 to 3 do

Begin

n:=i;

Write (' введите фамилию ', i ,' ');

Readln (fio);

s:=0;

For j:= 1 to 3 do

 Begin

 write ( 'введите оценку: ' );

 readln ( bal [j] );

 s := s+ bal [j];

end;

if s=15 then kol:=kol+1;

sr := s/3; writeln ( fio, ', средний бал = ', sr:4:1);

end;

writeln ( ' количество отличников ', kol );

readln;

end.