понеділок, 22 квітня 2013 р.

Blogspot для 12 роты

Зарегистрироваться в сервисе Blogspot.com
Придумать тематику блога (она может быть произвольной)
Придумать название и зарегистрировать блог
Выбрать один из предлагаемых шаблонов оформления
Написать несколько постов, в том числе:
  • Пост с текстом с разным форматированем
  • Пост с картинкой
  • Пост с встроенным видео из YouTube
  • Пост со ссылкой "Читать далее"
  • Пост с гиперссылкой на другой сайт
Добавить в блог виджет Поиска
Изменить ширину блога до 1000 пикселей

понеділок, 15 квітня 2013 р.

Чемпионат по интернет-поиску

Сегодня с 11-50 в блоге начнётся чемпионат по интернет-поиску.

Для начала в комментариях к этому посту напишите свои фамилии, группу и номер компьютера, за которым сидите (считайте с компьютера, ближайшему к двери по часовой стрелке). Специально регистрироваться не надо, можно выбрать "Анонимный" при отправке комментария, главное - чтобы в тексте его всё, что нужно было написано.

Затем следите за главной страницей блога. Там раз в 5 минут будут появляться вопросы, ответы на которые нужно найти в интернете.
Ответ на вопрос должен состоять из:
  • собственно ответа,
  • ссылки на сайт, на котором вы его нашли, и
  • номера компьютера за которым сидите.

Отправляйте ответы в комментарии к постам с вопросами.

Ваши комментарии до конца пары будут скрыты. Если комментарий отправится успешно, в блоге покажется сообщение: "Ваш комментарий будет опубликован после одобрения."
Подсчёт очков ведётся по схеме:
1й правильный ответ - 12 баллов,
2й правильный ответ - 10 баллов,
3й и т.д.: 9, 8, 7, 6, и т.д. баллов.

середа, 3 квітня 2013 р.

Pascal для 61 роты


Начнём использовать массивы

program Project2;
{$APPTYPE CONSOLE}
uses
  SysUtils;
 //создадим массив из 10 элем элементов
var a:array[1..10] of integer;
i:integer;

begin
  Writeln('Pishem v massiv chisla on 1 do 10');
  //пробегаем по элементам массива
  for i := 1 to 10 do
   begin
     a[i] := i;//заполняем его числами от 1 до 10
   end;

  Writeln('Vot, chto v massive:');
  //теперь выведем их на экран
  for i := 1 to 10 do
   begin
     Writeln(a[i]);//выводим элементы на экран
   end;

 Readln;//Обязательная команда, чтобы программа не закрывалась внезапно
end.

Работает? Теперь будем расширять. Новая программа будет заполнять массив случайными числами, находить их сумму, максимальное из них и минимальное



program Project2;
{$APPTYPE CONSOLE}
uses
  SysUtils;
 //создадим массив из 10 элем элементов
var a:array[1..10] of integer;
  i:integer;
  s:integer;
  mx:integer;
  mn:integer;
begin
  Writeln('Pishem v massiv sluchajnye chisla');
  //пробегаем по элементам массива
  for i := 1 to 10 do
   begin
     a[i] := random(100);//заполняем его случайными числами от 0 до 99
   end;

  Writeln('Vot, chto v massive:');
  //теперь выведем их на экран
  for i := 1 to 10 do
   begin
     Writeln(a[i]);
   end;

//ищем сумму. вначале она равна 0
  s:=0;

  for i := 1 to 10 do
   begin
     s:=s+a[i];
   end;
  Writeln('summa ravna ', s);

//Теперь ищем максимум и минимум. Вначале они оба равны первому элементу
 mx:=a[1];
 mn:=a[1];



for i := 2 to 10 do
   begin
//Если находится элемент, который больше текущего максимума текущий масимум поднимаем
      if a[i] > mx then
        mx := a[i];
//Если находится элемент, который меньше текущего минимума текущий минимум поднимаем

      if a[i] < mn then
        mn := a[i];


   end;
  Writeln('minimum raven ', mn);
  Writeln('maximum raven ', mx);



 Readln;
end.

Подумайте самостоятельно, как сделать так, чтобы эти 10 чисел не генерировал компьютер, а вводил человек.


Blogspot для 42 роты

Задание:
Зарегистрироваться на сервисе Blogspot.com
Придумать название своего туристического агентства (для менеджеров по туризму) или авиакомпании (для менеджеров международных перевозок). Создать блог о своём предприятии.

Создать несколько страниц, заполнить их придуманной информацией о компании. Опубликовать несколько новостей (только, чтобы не вводить в заблуждение посетителей, укажите где-нибудь, что это курсантский проект)

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

MathCad для 60 роты




понеділок, 25 березня 2013 р.

Чемпионат по поиск

Превью поста То, что скрыто под катом

неділя, 24 березня 2013 р.

Високосные годы

Знаете, по какому правилу определяется. является ли год високосным? Високосные годы - те, которые делятся на 4. Но есть исключения. Если номер года оканчивается на два нуля, но не делится на 400, такой год не будет високосным. Так, високосные годы 1904, 2004, 2008, 2012. Високосным были и 2000 и 1600 годы. Но годы 1700, 1800, 1900 и 2100 - не високосные. Вам нужно написать программу, которая выведет на экран числа от 1800 до 2100 и укажет, является ли год високосным. Результат должен быть таким: 1800 - не високосный 1801 - не високосный 1802 - не високосный 1803 - не високосный 1804 - високосный 1805 - не високосный 1806 - не високосный 1807 - не високосный 1808 - високосный и т.д........ Напоминаю, чтобы проверить, делится ли число a на число b, нужно найти остаток от деления a на b. Этот остаток должен быть равен нулю. B Паскале это выглядит так: if (a mod b = 0) then

понеділок, 18 березня 2013 р.

Как всё-таки решаются задачи с циклами

На позапрошлом занятии были даны 5 заданий на циклы for. К сожалению, даже второе вызвало у многих затруднения. Давайте ещё раз разберём их.

Для начала напомню общую структуру программы в Pascal

program Project1;//имя программы. Не играет роли

{$AppType CONSOLE} //Эту строку вставляет сама Делфи, показывает, что будет паскалевское приложение

uses SysUtils;//Используемые модули. Если работаем черед Делфи, ничего не меняйте

var //здесь объявляются переменные. Если в программе нет ни одной переменной, он не нужен

begin
 //Здесь будет текст собственно программы
  Readln; //Эта команда нужна, чтобы окно после завершения работы не закрывалось автоматически, а можно было увидеть результат.
end.


Напомню также структуру оператора цикла

for {переменная} := {начальное значение переменной} to {конечное значение переменной} do
   begin
     {действия, которые нужно выполнить}
   end;

Задание 1.
Написать программу, которая выведет на экран все числа от 1 до 100


Здесь всё просто (в этом и последующий примерах я буду приводить только блок var и всё, что находится между begin и end)


var i:integer;//забили в памяти ячейку для целого числа - счётчика цикла

begin
 for i := 1 to 100 do //Выполняем действие 100 раз
   begin
     Writeln(i); //А действие это - напечатать число
   end;

  Readln;

end.



Задание 2.
Написать программу, которая выведет на экран квадраты чисел от 1 до 100

Чем это задание отличается от предыдущего? Только действием. Значит и в программе надо поменять только действие:

var i:integer;//забили в памяти ячейку для целого числа - счётчика цикла

begin
 for i := 1 to 100 do
   begin
     Writeln(i*i); //Теперь будет печататься квадрат числа
   end;

  Readln;

end.

Задание 3.
Написать программу, которая выведет на экран квадраты только нечётных чисел от 1 до 100

Чем эта программа отличается от предыдущей? Тем, что перед тем, как выполнить действие, выполнится проверка на чётность. Можно исопльзовать функцию odd() а можно - деление с остатком, mod.

var i:integer;

begin
 for i := 1 to 100 do
   begin
     if odd(i) then
        Writeln(i*i); //Теперь будут печататься только нечётные квадраты
   end;

  Readln;

end.



Задание 4.
Написать программу, которая попросит у человека ввести число, а затем найдёт сумму всех чисел от 1 до введённого числа

Вот здесь было больше всего непоняток. Чем эта программа отличается от самой первой? Тем, что верхняя граница заранее не известна, а её будет водить человек.

Значит, нужна переменная, значение которой мы попросим ввести человека, а затем используем как верхнюю границу в цикле.

var i:integer;
n:integer;//вот это вторая переменная

begin
 WriteLn('Vvedite Chislo'); //Сначала объясняем человеку, что мы от него хотим
 ReadLn(n);//получаем это число от человека


 for i := 1 to n do //Выполняем действие n раз
   begin
     Writeln(i); //А действие это - напечатать число
   end;

  Readln;

end.






Задание 5.
Написать программу, которая выведет следующие 100 строк:
1 год
2 года
3 года
4 года
5 лет
6 лет
и т.д.

Давайте для начала сделаем английский аналог. 
1 year
2 years
3 years 
и т.д.

Вспомним задачу 3. Если число будет равно 1, нужнописать year, а если больше - years.

begin
 for i := 1 to 100 do
   begin
     if i=1 then
        Writeln(i, ' year')
     else       
        Writeln(i, ' years');
   end;

  Readln;

end.

А для русского языка сформулируйте условия самостоятельно и напишите аналогичную программу. 

Подскажу, как определить, заканчивается ли число на единицу. Последняя цифра числа - это его остаток от деления на 10. Поэтому русская фраза "Если число i оканчивается на единицу, то..." в Паскале будет выглядеть как:
if (i mod 10) = 1 then

понеділок, 11 березня 2013 р.

Результаты чемпионата по поиску

Результаты 122 группы:
Компьтер 5: 96 баллов
Компьтер 6: 96 баллов


Компьтер 4: 83 балла

Компьтер 10: 77 баллов

Компьтер 9: 60 баллов

Компьтер 3: 45 баллов

Компьтер 8: 22 балла

Поздравляю! Молодцы!
Все вопросы оказались разгаданы, кроме вопроса про Александра II. Интересно, что этот  вопрос взял с настоящего кубка Яндекса, а остальные я придумывал сам.

середа, 6 березня 2013 р.

Напишем свою собственную программу

Нашей задачей не является сделать из вас программистов. Однако одно занятие можно потратить на то, чтобы показать, как же создаются программы для компьютера. В 18 кабинете на одном из компьютеров есть хранитель экрана - мыльные пузыри.

Мы напишем 16 строчек, которые реализуют основную функциональность этого хранителя экрана - движение круга по экрану и отражение его от стен. Работать будем на GWBASIC - языке, специально разработанном для обучения программированию. На рабочем столе должен быть ярлык на эту программу. Запустив её вы увидите чёрный экран - в 1983 году, когда создавалась эта среда, в нём не было ни поддержки Ctrl+С/Ctrl+V ни мыши. Однако, для короткой программки сойдёт.

Что нужно знать для того, чтобы задать положение круга на экране?
Положение его центра (Х, Y) и радиус R. Для красоты круг можно рисовать некоторым цветом C
Что нужно знать, чтобы круг двигался?
Проекции его скорости на оси х и у: VX и VY.
На компьютере движение тела моделируется следующим образом:
Выбирается небольшой шаг времени DT, и с этим шагом каждый раз вычисляются новые координаты тела. Для прямолинейного движения формула будет:
X=X+VX*DT
Y=Y+VY*DT
Т.е. координата по оси Х будет той, что была, плюс то расстояние, на какое тело успело переместиться за время DT. Аналогично и для игрека.
Теперь как математически выразить отражение круга от края экрана?
Рассмотрим четыре его положения:
В положениях левее круга 1 и правее круга 3 происходит отражение от вертикальных границ. Это значит, что скорость VX должна поменять знак.
Если круг будет левее положения 1, то для него будет верным неравенство X<=R. Если он правее круга 3, то верно неравенство X>=600-R.
Поэтому команда отражения от вертикальных стенок будет выглядеть так:
IF X<=R OR X>=600-R THEN VX=-VX
В положениях ниже круга 2 и выше круга 4 менять знак должна скорость VY.
Поэтому, аналогично
IF Y<=R OR Y>=300-R THEN VY=-VY
Теперь сформулируем алгоритм, по которому круг будет летать по экрану
  1. Перевести экран в графический режим
  2. Инициализировать переменные
  3. Стереть старое положение круга
  4. Просчитать новое положение круга
  5. Нарисовать круг
  6. Проверить отражение
  7. Перейти к пункту 3
Сделаем на основе алгоритма программу, используя соображения, приведённые ранее.
Пункт 1 реализуется двумя стандартными строками (здесь и далее строки с номерами - это те строки, которые нужно вводить в BASIC. Причём вводить их надо тоже с номерами, как написаны тут):
10 SCREEN 9
20 CLS
Пункт 2: зададим переменным стартовые значения
30 X=200
40 Y=150
50 R=30
60 C=14
70 DT=0.1
80 VX=7
90 VY=5
Таким образом, координата центра круга по оси х будет равна 200,  по оси у – 150, радиус круга – 30, цвет – 14 (жёлтый).
Шаг времени задаём равным 0,1 секунды, если понадобится – отрегулируем потом. Проекции скорости по осям х и у будут равны 7 и 5.
Пункт3. Чтобы стереть изображение, его нужно нарисовать нулевым цветом, т.е. чёрным
100 CIRCLE(X,Y),R,0
Пункт 4. Применяем выведенные формулы
110 X=X+VX*DT
120 Y=Y+VY*DT
Пункт 5 – рисуем круг в новых координатах
130 CIRCLE(X,Y),R,C
Пункт 6 – применяем выведенные формулы отражения
140 IF X<=R OR X>=600-R THEN VX=-VX
150 IF Y<=R OR Y>=300-R THEN VY=-VY
Пункт 7 – возвращаемся к пункту 3 алгоритма, т.е. к 100й строке программы
160 GOTO 100
 
Не забывайте после каждой строки нажимать Enter, чтобы та ввелась в память компьютера.
 
Запускаем программу. Для этого нужно перейти курсором на пустую строку, набрать RUN и нажать Enter. Наблюдаем, наслаждаемся плодами труда своего J

Теперь добавим гравитацию - пусть круг подскакивает как мячик. Прервите программу, нажав Ctrl+Break.

Выведите текст программы. Для этого нужно набрать команду LIST

Вспоминаем физику. При движении брошенного тела, с ускорением g меняется вертикальная составляющая его скорости, VY. Значит, в программу нужно добавить 2 строки (их можно набирать внизу, они встроятся в нужное место)
Инициализируем переменную G
75 G=1
Вычисляем новую вертикальную скорость
135 VY=VY+G*DT

Запускаем программу.

Добавим эффект переливания. Перед каждой отрисовкой будем случайнм образом менять цвет. Дописываем строку:
105 C = INT(1+RND*14)

Запускаем, смотрим. И ещё одна модификация - пусть круг оставляет цветной след. Для этого отключим стирание предыдущего положення круга. Это делается отключением строки 100. Её можно не удалять, а просто поставить после номера строки апостроф:
100 ‘CIRCLE(X,Y),R,0
Запускам программу, наблюдаем за изменениями в движении.

Подумайте, как надо изменить программу, чтобы круг притягивался к верхнему краю экрана? А к правому или левому?

пʼятниця, 1 березня 2013 р.

Задания олимпиады по информатике



  1. Смоделировать бросок двух 6-гранных кубиков (вывести на экран 1 случайных числа от 1 до 6 каждое).
  2. Вывести на экран все возможные перестановки из 5 чисел (от 12345 до 54321).
  3. Человек вводит 10 чисел (после каждого числа нажимает Enter). Нужно сразу же после того, как она закончил ввод, вывести наибольшее число среди них.
  4. Правила игры: на столе лежат N спичек. Играют двое – каждый может своим ходом взять из кучки от 1 до K штук (числа N и K вводятся при начале работы программы). Выигрывает тот, кто забирает последнюю спичку. Компьютер ходит первым. Придумайте выигрышную стратегию и запрограммируйте её.
  5. Почему мой профиль Вконтакте (http://vk.com/izvalov) невозможно найти через вконтактовский поиск по имени и фамилии?
  6. Как перевести RGB-цвет (67, 247, 82) в HSV представление?
  7. В Excel поместите в ячейку A1 число 0,1, под ней (в ячейку A2) напишите формулу =1001*A1-100. Размножьте эту формулу примерно на 20 ячеек столбца A. Объясните полученный эффект.
  8. С помощью каких команд в обычном Paint  можно фигуру повернуть на 45 градусов?
Решения присылайте через ЛС или на почту aviglau@gmail.com

середа, 27 лютого 2013 р.

Циклы в Pascal

Часто в программе требуется сделать много однотипных действий. Если число повторений известно заранее, для этого используется цикл со следующей структурой:

for {переменная} := {начальное значение переменной} to {конечное значение переменной} do
   begin
     {действия, которые нужно выполнить}
   end;

Задание 1.
Написать программу, которая выведет на экран все числа от 1 до 100

Задание 2.
Написать программу, которая выведет на экран квадраты чисел от 1 до 100

Задание 3.
Написать программу, которая выведет на экран квадраты только нечётных чисел от 1 до 100

Задание 4.
Написать программу, которая попросит у человека ввести число, а затем найдёт сумму всех чисел от 1 до введённого числа

Задание 5.
Написать программу, которая выведет следующие 100 строк:
1 год
2 года
3 года
4 года
5 лет
6 лет
и т.д.

понеділок, 25 лютого 2013 р.

Power Point

Задание:

Выбрать линейку ВС (например, Ту, Ан, Боинг, Airbus и т.п.)
Найти информацию по 5 прдставителям в интернете (дальность, максимальный взлётный вес, размах крыла и пр.)

Сделать презентацию в Power Point с использованием эффектов смены кадров и оформлением слайдов.

понеділок, 18 лютого 2013 р.

Pascal: ветвление

Обычно ветвление в паскале рассматривают на примере решения уравнения вида ax2+bx+c=0.

Но  мы начнём с чего-то попроще. Пусть компьютер угадывает загаданное пользователем число от 1 до 2.

Пишем:

program ugadayka1;
{$APPTYPE CONSOLE}
uses
  SysUtils;
var
  ans    : Char;
begin
  Writeln('Zagadayte chislo ot 1 do 2. Nazhmite Enter po gotovnosti.');//сообщаем пользователю, что мы от него хотим
  Readln;//когда человек загадал число, он должен нажать Enter
  Writeln ('Eto 1? (y/n)');//спрашиваем, загадал ли он единицу.
  Readln(ans);//ответить он должен, нажав y или n на клавиатуре
  if (ans='y') or (ans='Y') then //т.к. может быть нажат Caps Lock, за ответ "да" будем считать как маленькую, так и заглавную букву y
   Writeln('Ura! Ya ugadal! Eto 1')
  else
   Writeln('Vy zagadali chislo 2');

  Readln;
end.      


Расширим теперь нашу программу - пусть человек загадывает число от 1 до 4:

program ugadayka2;
{$APPTYPE CONSOLE}
uses
  SysUtils;
var
  ans    : Char;
begin
  Writeln('Zagadayte chislo ot 1 do 4. Nazhmite Enter po gotovnosti.');
  Readln;
  Writeln ('Eto 1? (y/n)');
  Readln(ans);
  if (ans='y') or (ans='Y') then
   Writeln('Ura! Ya ugadal! Eto 1')
  else

    begin
      Writeln ('Eto 2? (y/n)');
      Readln(ans);
      if (ans='y') or (ans='Y') then
       Writeln('Ura! Ya ugadal! Eto 2')
      else

        begin
          Writeln ('Eto 3? (y/n)');        
          Readln(ans);
          if (ans='y') or (ans='Y') then
           Writeln('Ura! Ya ugadal! Eto 3')
          else

           Writeln('Vy zagadali chislo 4');
 
        end;
    end;
 
  
  Readln;
end.   



Изменим теперь программу так, чтобы ей требовалось максимум 2 вопроса, чтобы угадать число от 1 до 4:

program ugadayka3;
{$APPTYPE CONSOLE}
uses
  SysUtils;
var
  ans    : Char;
begin
  Writeln('Zagadayte chislo ot 1 do 4. Nazhmite Enter po gotovnosti.');
  Readln;

  Writeln ('Chislo chetnoe? (y/n)');//Этим вопросом мы разбиваем все возможные варианты ответа на 2 равные группы  Readln(ans);
  if (ans='y') or (ans='Y') then
   begin
      Writeln ('Eto 2? (y/n)');
      Readln(ans);

      if (ans='y') or (ans='Y') then
       Writeln('Ura! Ya ugadal! Eto 2')
      else
       Writeln('Vy zagadali chislo 4');
   end
  else
   begin
      Writeln ('Eto 1? (y/n)');
      Readln(ans);

      if (ans='y') or (ans='Y') then
       Writeln('Ura! Ya ugadal! Eto 1')
      else
       Writeln('Vy zagadali chislo 3');
   end;
  
  Readln;
end. 


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

неділя, 10 лютого 2013 р.

Microsoft Excel



Зарисуйте в конспект эскизы следующих кнопок панели инструментов Excel:
·        Суммирование
·        Сортировка по возрастанию
·        Сортировка по убыванию
·        Объединение ячеек
·        Диаграммы и графики
·        Цвет ячейки
·        Цвет шрифта
·        Формат по образцу
·        Границы ячейки
·        Уменьшение разрядности числа в ячейке
·        Увеличение разрядности числа в ячейке
·        Панель рисования
·        Вставка функции

1.      Добавьте в книгу новый лист. Назовите его своей фамилией. Поместите лист перед листом №1.
2.      Создайте следующую таблицу:


3.                              Заполните столбец А числами от 1 до 1000 с помощью автозаполнения. Чтобы сделать это, введите в ячейку А1 число 1, в ячейку А2 – число 2. Затем выделите эти 2 ячейки и потяните курсором за правый нижний угол рамки (Как показано на рисунке)
4.                              В ячейку В1 введите формулу =КОРЕНЬ(A1), т.е. квадратный корень из величины ячейки, лежащей слева. Обратите внимание: буква А – не русская, а латинская. Используя автозаполнение, введите эту формулу в ячейки В2-В1000.
5.                              Постройте график по значениям ячеек В1-В1000. Для этого выделите необходимый диапазон и нажмите на кнопки построения графиков и диаграмм.
6.                              Введите в ячейки следующий текст:
В ячейку F4 введите формулу:
=F2/F3
, установите разрядность ячейки в 2 знака после запятой. Проверьте работоспособность, вводя расстояние и время в ячейки F2 и F3.

7.                              Введите следующую таблицу:  
 
По её данным постройте круговую диаграмму.
Чтобы добавить в легенду диаграммы названия стран, щёлкните по кнопке напротив «Подписи категорий» и затем выберите рамкой столбец с названиями.
В поле «Имя» выберите имя ячейки c заголовком таблицы.

На третьем шаге включите отображение процентного соотношения:

В результате должна получиться диаграмма такого вида:
8. Найдите в интернете данные по 10 типам ВС: максимальная взлётная масса, размах крыла, потолок, число двигателей, крейсерская скорость. составьте на основе этих данных таблицу и постройте диаграммы.

9. Для каждого из параметров найдите среднее, минимальное и максимальное значения. Воспользуйтесь функциями, находящимися в раскрывающемся списке у кнопки "Сумма".

10. Выделите каким-либо цветом дальности полёта, превышающие среднюю. Для этого выделите диапазон с данными, выберите в меню "Формат-Условное форматирование". Задайте условие "больше", и укажите ячейку, содержащую среднее значение. Затем по кнопке "Формат" задайте вид ячейки. Попробуйте поменять данные в диапазоне и посмотрите, как изменится раскраска ячеек.