четверг, 25 октября 2012 г.

Проект Павла Гордона, идеи и рекомендации

Несколько возможных вариантов развития аппликации, сделанной Павлом:

1)  Добавить показ количества верных и неверных ответов. Как вариант: сколько верных ответов из общего числа, или процент, или даже предварительная оценка.

2)  Добавить кнопку "Завершить", при нажатии на которую завершается работа и показываются итоговые результаты.

3)  Добавить реакцию на неверный ответ -- ну, тут вообще огромный простор для вариантов. Можно, скажем, при неверном ответе делать красным фон. Другой вариант -- в центре между кнопками появляется предупреждающая надписть на текстовой наклейке, которую в "обычном" состоянии не видно. Есть и еще -- но давайте начнем с этого.

Кстати, если Павел даст разрешение, можно выложить тут листинги нескольких основных файлой его проекта, чтобы желающие могли попробовать свои силы.

Android: работа Павла Гордона, Пенза

На последнем вебинаре мы разбирали возможный вариант создания тестовой аппликации.
Выкладываю запись работы Павла Гордона, губернский лицей №3, Пенза.
Вариант пробный, разумеется, будем его дальше развивать и совершенствовать (рекомендации в следующем посте).


среда, 17 октября 2012 г.

Android: работа Анечки из Салавата

Получил работу Ани из  гимназии №2 г.Салават. Все отлично работает. Молодец, Анечка)))

Android: последнее видео по проекту с вебинара

Ну, вот и последнее видео.
Но не последний материал: завтра будут пояснительные тексты (листинги файлов) к проекту.

Android: предпоследнее видео о проекте

Предпоследняя часть видеоматериалов для проекта, о котором мы говорили на вебинаре 16.10.2012
Последняя часть тоже будет сегодня, а после нее -- дополнительные текстовые материалы к проекту.


Android: продолжение работы над проектом


Часть вторая, и тоже не последняя, работы над проектом.
Скорее всего, остальные части -- не сегодня)))

Android: вебинар 16.10.2012 -- еще видео

Видео с объяснениями о первой части работы над проектом.
Будут еще)))
Успеха!


Примерный план работы над проектом (занятие от 16.10.2012)


Это -- примерный план работы над проектом, видео исполнения которого я разместил в предыдущем сообщении. Можете использовать этот план в своей самостоятельной работе. озднее (сегодня же) я выложу еще несколько дополнительных материалов по этому же занятию, видео и текстовых.









1.      Заготовить несколько картинок (предпочтительно размером не более 200Х300)

2.      Создайте новый проект

3.      Создать папку drawable в папке res

4.      На диске: скопировать в эту папку заготовленные картинки

5.      Убрать текстовую наклейку с активности (файл activity_main.xml)

6.      Поставить кнопку (Button)

7.      Поставить изображение (элемент ImageView):
7.1.   В открывающемся окне просто нажать Ok, на экране (активности) появится пустой квадратный элемент
7.2.   Открыть коды этого файла и в строке android:src="@drawable/" после наклонной черты вписать имя любого из заготовленных файлов

8.      Запустить Debug Configuration или сразу на исполнение

9.      Открыть файл R.java и проверить, что в нем зарегистрированы все добавленные вами картинки

10.  Открыть файл ресурсов (strings.xml) и добавит в него переменную типа String для надписи на кнопке

11.  В файле разметки главной активности (файл activity_main.xml) указать:
11.1.                    Идентификатор элемента "картинка" (ImageView) – заменить существующий автоматически установленный идентификатор
11.2.                    Идентификатор элемента "кнопка" (Button) – заменить существующий автоматически установленный идентификатор
11.3.                    Текст на "кнопке" – через переменную, которую мы добавили в файл ресурсов
11.4.                    К элементу "кнопка" добавить вызов метода "по нажатию" – например в виде android:onClick="go"

12.  В java-файле главной активности (MainActivity.java) указать:
12.1.                    Массив целочисленных значений для записи в него идентификаторов картинок – каждый идентификатор выглядит как R.drawable.название_файла_картинки
12.2.                    Переменную-счетчик
12.3.                    Переменную типа ImageView для будущей работы с элементом "картинка"
12.4.                    Создать в методе onCreate связь переменной (из пункта 12.3) с объектом типа ImageView, использовав для этого поиск через метод "найти View по идентификатору).
12.5.                    Создать метод, который мы собираемся использовать для обработки явления "нажата кнопка" (метод go)
12.5.1.  В этом методе сначала – увеличить счетчик
12.5.2.  Установить для переменной pic (она связана с  элементом "картинка")  с очередным идентификатором массива индикаторов файлов с рисунками)
12.5.3.  Предусмотреть проверку счетчика, чтобы не происходило вываливание за массив.

Android: вебинар от 16.10.2012

Вчера, во вторник, мы провели вебинар, в котором участвовали ученики из Салавата и Пензы (вместе и одновременно).

На вебинаре мы разбирали построение аппликации (создание проекта), в которой по нажатию на кнопку сменяют друг друга четыре изображения из графических файлов.

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



среда, 19 сентября 2012 г.

Scratch: рабочая панель

Короткий видеоролик, знакомяший с основными частями рабочей панели в алгоритмической среде Scratch.

пятница, 14 сентября 2012 г.

Новые видеоролики по Android

Уважаемые коллеги, учителя и ученики!
Я выложу несколько коротких видеороликов, связанных с работой в редакторе Eclipse: как создать архив проекта, как создать новый проект, стереть и добавить проект с внешнего носителя.
----------------
Прошу обратить внимание: хотя на экране вы увидите вроде бы один ролик -- на самом деле они просто следуют друг за другом )))

среда, 12 сентября 2012 г.

Учебник и задачник -- изданы!

В этом году пока никак не удается наладить работу блога и Интернет-уроки -- в основном из-за  происходящих несколько раз в неделю изменений в моем личном расписании.
Надеюсь, что это скоро "устаканится".
-------------------------------------
А пока: приятнейшая новость -- наш учебник и задачник изданы в Пензе в виде книг. Ура.
-------------------------------------



пятница, 17 августа 2012 г.

О компьютерах, образовании и вообще

Мы с Димой Инюшкиным старые-старые друзья, но совместный сюжет записали в первый раз.
Говорим о компьютерах, образовании, о нашем проекте, о жизни.
На мой взгляд -- по делу и очень удачно.
Поскольку на сайте телеканала ТВ-Экспресс-Пенза видеоматериалы не обновлялись давно -- видео выложил с разрешения автора.


И вновь продолжается блог...

Дорогие коллеги, взрослые и юные)))
Вернулся я на Родину -- так что уже сегодня можем продолжать работу, и по нашему проекту с Java, и по проекту с Android.
С наступающим новым учебным годом)

воскресенье, 22 июля 2012 г.

Android: две практических рекомендации

Для тех, кто начинает делать первые проекты для Android: две простых практических рекомендации, связанных с эмулятором и запуском (проверкой работы) проектов.


пятница, 20 июля 2012 г.

Android: компонеты, которые не устанавливаются (((

Благодаря тем, кто начал опробовать наше пособие (разрабатываемое, не окончательное!) по Android (и, в первую очередь, замечательно старательное Annie из Салавата)))), решил написать про компоненты, которые не устанавливаются.

Имеются некоторые компоненты, которые, с одной стороны, помечены как "надо установить" автоматически в Android SDK, а с другой -- не устанавливаются, вызывая сообщение об ошибке и оставаясь помеченными же в списке.


Ну и не обращайте внимания -- проблемы они создадут только в очент и очень специфических случаях, пусть так и остаются.

Кстати -- вышло очередное обновление для Android 4, так что советую запустить этот режим и быть готовыми к некоторым расхождениям на отдельных экранах. Такова уж эта система -- постоянно обновляется.

среда, 18 июля 2012 г.

Android: еще один видеокомментарий

Видеоролик с пояснениями, какие возможно предоставляет редактор при работе с файлом activity_main.xml.

К сожалению, качество получилось не очень, возможно, я перепишу этот ролик в ближайшие дни.

Но пока -- оставляю и, разумеется, жду комментарии и замечания.


Android: необходимое пояснение

Коллега д-р Канель справедливо заметил, что, по поводу проекта с Android, надо внести ясность в смысле практической стороны работы.

Составлены 3 презентации, которые объясняют, что и в каком порядке, откуда и зачем скачивать и устанавливать. Я не счел нужным выкладывать эти презентации сюда, но, разумеется, каждый желающий опробовать это дело на своем компьютере, получит эти материалы -- только напишите, сразу вышлю.

Кстати, уже и написали вчера, я выслал и ребята уже начали работать.

вторник, 17 июля 2012 г.

Мы начинаем новый проект: учебный курс для школ по программированию для ОС Android

В соответствии с договоренностью с министерством образования Пензенской области мы разрабатываем новый курс, предназначенный для 11-го класса и для тех, кто год прозанималсся год по курсу "Компьютерные науки" (Java).

Курс предполагает обучение основным навыкам написания аппликауций для ОС Android (смартфоны и планшетники). Курс находится в разработке и его "обкатчиками" согласились стать несколько учителей из Пензы и, разумеется, замечательная команда из Салавата.

Им всех рассылаются на проверку и комментарии созданные материалы.

Успеха нам всем!

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


пятница, 11 мая 2012 г.

А ты походи по массиву, походи…


Еще одна задачи из категории "движение по массиву"; мы ее тоже разбирали с командой из Салавата и я надеюсь, что кто-то из них выложит решение, хотя оно совсем не такое уж и простое.


В массиве размером N ячеек содержатся числа из серии целых чисел от 1 до N (без повторения одно и того же значения). Каждое значение указывает на номер (индекс) ячейку, в которую следует перейти из данной.
Например, если в ячейке №5 содержится значение 12, это означает, что из ячейки №5 следует перейти в ячейку №12.
Массив называется "качественно заполненным", если можно пройти по всем его ячейкам.
Напишите метод, который принимает в качестве параметра массив и возвращает true, если массив является "качественно заполненным"; в ином случае метод возвращает false.

Успеха!

четверг, 10 мая 2012 г.

Длинная-длинная задача…


Речь идет о задаче, код решения которой как раз особо большими размерами не отличается, но вот время, которое уходит даже у сильного компьютера на ее решение, оказывается длинным-длинным…

Дана серия целых положительных чисел: 1, 2, 3 … М. Надо в этой серии найти такое число N, для которого сумма чисел в серии "слева" от него равна сумме чисел "справа" от него (само число не учитывается).

Например, для серии 1, 2, 3, 4, 5, 6, 7, 8 таким числом является 6, потому что 1+2+3+4+5=15 и 7+8=15.

Надо найти все пары чисел М и N, для которых выполняется описанное выше условие.

Эту задачу мы в принципиальном плане разобрали с командой из Салавата и Аня прислала вчера один из вариантов решения. Я надеюсь, что она его сегодня выложит, а от себя хочу добавить, что прогон решения для М=100000 занял у меня на приличном компе почте 7 минут…

вторник, 17 апреля 2012 г.

Задача на "движение" по одномерному массиву

Мы ее сегодня разбирали с ребятами из 3-го губернского лицея и я вывешиваю ее текст для всех, кому захочется ее решить.


Задача непростая и в смысле логики, и в техническом отношении.






Назовем "движением" следующее действие: переход из данной ячейки массива в иную ячейку на величину значения, записанного в данной ячейке.
Положительное значение означает переход в ячейку в направлении конца массива (если в ячейке №5 записано значение 3, то переходить надо в ячейку №8), отрицательное -- в направлении начала (если в ячейке №5 записано значение 3, то переходить надо в ячейку №2), значение 0 -- оставаться на месте.
--------
Напишите метод, который получает в качестве параметра одномерный массив целых чисел (отрицательных, положительных и нулей). Запрещается дважды использовать одну и ту же ячейку. Метод выполняет движение по ячейкам массива, начиная с первой (ячейки №0) и прекращает работу в одном из следующих случаев:

  • пройдены все ячейки массива;
  • переход приводит в "выпадению из массива со стороны начала";
  • переход приводит в "выпадению из массива со стороны конца";
  • начинается движение по "замкнутому кругу";
  • начинается "топтание на месте".
Метод должен сообщать, по какой причине он завершил работу.


вторник, 27 марта 2012 г.

Задача про расписание: решение Ани

Как всегда, Аня решила))), как всегда, Аня извиняется, что сделала только 5(!) пунктов из 8-ми, как всегда, блог делает проблемы с выкладкой длинного кода.
Как всегда -- Аня молодец, как всегда, мне трудно понять, за что ты извиняешься)))), ну, а коды я попробую выложить по частям. Если по частям не получится, то все пусть знают, что Аня задачу решила!

воскресенье, 25 марта 2012 г.

Совместный проект


Незаметно подходит к концу второй год нашего проекта "Компьютерные науки: Израиль-Россия". Мы решили собрать сюда несколько ссылок на материалы в Сети о том, как все начиналось и делалось. К сожалению, мы так и не собрались сделать видеоматериалы о наших интернет-уроках, с Салаватом и Пензой -- но "все еще впереди")))
Практически по каждой ссылке есть видеоролики.

вторник, 20 марта 2012 г.

Вот как надо сортировку в массивах объяснять!


Две задачи из госэкзамена 2010-го года

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


Задача №9

Дан двумерный массив размером m×n, содержащий целые числа.
Определим правую диагональную тройку массива, которая начинается в позиции [i][j] следующим образом:
три элемента массива:
    первый элемент – в позиции [i][j],
    второй элемент – на одну строку вниз и на один столбец вправо от первого элемента,
    третий элемент - на одну строку вниз и на один столбец вправо от второго элемента
Например, в приведенном ниже массиве размером 5×6 обозначена правая диагональная тройка, которая начинается в позиции [1][3].

0
3
6
7
1
0
17
1
1
2
5
1
23
8
9
6
7
1
1
1
85
9
1
12
0
43
1
31
4
1


Дан двумерный массив размером m×n, содержащий только числа 0 и 1.
Определим единичную правую диагональную тройку массива, которая начинается в позиции [i][j] следующим образом: существует правая диагональная тройка, начинающаяся в позиции [i][j], и значения всех элементов этой тройки равны 1.
Например, в приведенном ниже массиве размером 5×6 обозначена единичная правая диагональная тройка, которая начинается в позиции [1][2].

0
0
0
0
1
0
1
1
1
0
0
1
0
0
0
1
0
1
1
1
1
1
1
0
0
0
1
0
0
0

А.     Напишите метод, который получит:
    двумерный массив, содержащий только числа 0 и 1.
    два целых числа, обозначающие позицию элемента массива (первое число обозначает строку, второе число обозначает столбец).

Метод проверит, существует ли правая диагональная тройка, начинающаяся в этой позиции. Если да, метод вернет значение
true, иначе – вернет значение false.

Б.      Напишите метод, который получит:
    двумерный массив, содержащий только числа 0 и 1.
    два целых числа, обозначающие позицию элемента массива (первое число обозначает строку, второе число обозначает столбец).

Метод проверит, существует ли единичная правая диагональная тройка, начинающаяся в этой позиции. Если да, метод вернет значение 1, иначе – вернет значение 0.
Вы должны использовать метод, написанный в пункте А.

В.      Дан двумерный массив размером 36×52, содержащий только числа 0 и 1.

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

Замечание:
Нет необходимости вводить данные в массив.
Нет необходимости проверять корректность данных в массиве.

Задача №10.
В бассейне есть три разных аттракциона: трамплин, джакузи и сауна.
Прыгать с трамплина можно  начиная с 12 лет.
Пользоваться джакузи можно начиная с 16 лет.
Пользоваться сауной можно начиная с 18 лет.

А.     Напишите метод, который получит возраст посетителя бассейна. Метод вернет одномерный массив из 3 целых чисел, каждое из которых соответствует одному из аттракционов бассейна. В массиве будет содержаться число 1 для тех аттракционов, которые разрешены данному посетителю, и число 0 для запрещенных ему аттракционов.
Б.      Напишите программу, которая для определенного дня примет с клавиатуры возраст каждого из посетителей бассейна. Программа подсчитает число посетителей, которые имели право пользоваться каждым из аттракционов, и выведет полученные числа на экран.
Ввод данных завершится, когда будут введены данные о посетителе, которому нельзя пользоваться ни одним из аттракционов.
Вы должны использовать метод, написанный Вами в пункте А.

Примечание:  нет необходимости проверять корректность вводимых данных



Задача на 2D-массив с разным количеством ячеек в каждой "строке"

Задача эта умышленно сформулирована в общем виде -- чтобы оставить свободу реализации ее в Java. При этом к сформулированным вопросам можно добавить еще много-много хитроумных вариантов -- милости прошу делиться в этот раз не только решениями, но и дополнительными вопросами!


Задание №1
На компьютерных курсах занятия проводятся 6 дней в неделю, каждый день – не менее 4-х и не более 10 уроков. Преподаются на курсах 6 предметов (Java, C#, Access, Networks, Android, OS), но бывают и свободные уроки ("окна").
Напишите класс, который составляет расписание занятий курса на неделю, а затем определяет и выводит на экран следующую статистическую информацию:
1.      Общее количество часов (не считая "окон")
2.      Общее количество "окон"
3.      Количество дней (и какие это дни), в которые нет окон
4.      Предмет, который преподается чаще других
5.      В какие дни, когда, сколько и по какому предмету есть сдвоенные уроки
6.      Есть ли предмет, которые в смежные дни преподается в одно и то же время ­ в какие дни, сколько и какие это предметы
7.      Среднее количество занятий в день
8.      В какие дни число уроков больше средненедельного
И прочая, и прочая, и прочая…



вторник, 31 января 2012 г.

Массив массивов: длинная-длинная задача…

Как мы и договорились сегодня с группой из Салавата – публикую одну, но "многометодную" задачу.

Задача, возможно, и не самая сложная)))), тем более, что часть мы сегодня сделали на занятии -- но длинная она наверняка, поэтому кроме ума, понадобится еще и много-много терпения.



Назовем ячейку массива "счастливой", если выполняются (одновременно) следующие условия:
1.      Сумма значений в "строке" (то есть во внутреннем массиве, к которому относится ячейка) равна значению в данной ячейке.
2.      Сумма значений в "столбце" (то есть в ячейках всех внутренних массивов – ячейках, у которых такой же порядковый номер во внутреннем массиве, как и у данной ячейки, то есть в ячейках с одинаковым индексом) равна значению в данной ячейке.

Надо написать класс, который находит все "счастливые" ячейки в массиве массивов ("двумерном") и выводит о каждой такой ячейке следующую информацию:
·         ее значение;
·         ее положение в массиве массивов.

Кроме того, класс должен определять, какое из значений в "счастливых" ячейках встречается чаще всего.

Разумеется, размеры массива и его содержание можно задавать по-разному: можно – через ввод параметров с клавиатуры (гибко), можно ­– заранее устанавливать значения… Выбирайте сами.

Я советую писать класс "по частям": проверять каждый этап и использовать как можно больше методов.

Удачи!

понедельник, 30 января 2012 г.

Вебинар, встреча №2

Коллеги-учителя!
Завтра -- вебинар, то есть видеоконференция, в 16:30 по московскому, будем говорить про таблицы трассировки, они же таблицы ручной прокрутки.

Экзамен 2008-го года, третья часть

Я хочу обновить тут две последних задачи из экзамена за 2008-й год, на аттестат зрелости (первый год обучения): там как раз и методы, и массивы, и массив массивов ("двумерный").


Как раз хватит голову поломать)))






Задача №9
Значение, находящееся в одной из ячеек двумерного массива, называется перекрестком, если сумма всех значений в столбце, в котором находится это значение-перекресток, равно сумме всех значений в строке, в которой находится значение-перекресток.

Например, для массива

-4
0
7
14
-3
10
-2
11
9
2
1
8
6
0
10
-7
4
9
2
15
2
3
-1
5
0

Выделенное значение (9) является перекрестком.
  1. Напиши метод, которые получает в качестве параметра массив размером 17Х17, содержащий целые числа, и два целых числа, указывающих ячейку в этом массиве (номер строки и номер столбца). Метод должен проверять, является ли значение в указанной ячейке массива перекрестком и возвращает 1, если это действительно так, в противном случае метод возвращает 0.
  2. Напиши класс, который определяет, какое количество перекрестков содержится в массиве размером 17Х17 – и выводит итог проверки на экран. Обязательно использовать метод, написанные для пункта 1.

Задача №10
  1. Напиши метод с именем elapsedTime и следующими условиями входа и выхода:
·         Условие входа – два целых четырехзначных числа в переменных first и second, каждое из которые представляет момент времени в промежутке от 12:00 до 23:59. Две первых цифры каждого числа – час, две последних – минуты: нгапример, число 1354 представляет время 13:45. Можно считать заранее известным, что значение переменной first меньше значения переменной srcond.
·         Условие выхода – промежуток времени между first и second в минутах.
  1. В отборочных соревнованиях на право участия в марафоне стартовали 127 спортсменов. Каждый из участников начал забег после 12:00, и закончил до 23:59.
Напиши класс, который принимает с клавиатуры для каждого участника два параметра: время старта участника и время его финиша. Класс должен использовать метод elapsedTime из пункта 1 и вывести на экран результат забега участника.
Класс также должен определять лучшее время забега и выводить его на экран.