четверг, 26 декабря 2013 г.

Зачет по учебному курсу

Уважаемые студенты!  Для получения зачета нужно:
  • Сдать индивидуальную задачу на циклы (С++)
  • Сдать индивидуальную задачу на массивы и строки (С++)
  • Сдать индивидуальную задачу на функции (С++)
  • Опубликовать на странице задачу на Java (см. условия на странице), которую до вас еще никто не публиковал (Java)
  • Сдать очно 2 простые задачи на ассемблере (ответив на вопросы по используемым командам) -см. задачи здесь. Обратите внимание, сейчас эти задачи общие, а после нового года станут индивидуальными.
Не разделите печальной судьбы Антошки:

понедельник, 23 декабря 2013 г.

Работа с компилятором MASM32

Желающим дальше продвигаться в изучении ассемблера нужно перейти к работе с компилятором MASM32 фирмы Microsoft, который можно скачать бесплатно

Необходимо помнить:
  • у программы на ассемблере есть жесткая структура: блок общих настроек, подключения библиотек, описания данных и т.д., см. примеры в папке masm32/bin/tutorial установленного на вашем компьютере ассемблера. Для начала копируйте эту структуру программы.
  • в ассемблере очень часто используются подпрограммы (нужно разобраться с оформлением, передачей данных)
  • в ассемблере безобразный ввод-вывод, с которым нужно также отдельно разбираться
  • чтобы отлаживать серьезные программы, нужно работать с отладчиком. Он сможет продемонстрировать покомандное выполнение программы, содержимое регистров. За простоту и интуитивную понятность хвалят отладчик ollydbg, который можно скачать бесплатно.

Некоторые пояснения работы с компилятором   MASM32 можно найти на рисунке:


пятница, 20 декабря 2013 г.

Решаем задачки на ассемблере

Задачи:
  1. Задать переменной а значение 12. Переместить ее значение в регистр EАX. Поместить в регистр EDX значение -а. Поменять местами значения регистров EАX и EDX. Выгрузить содержимое регистра EАX в пераменную а, содержимое регистра EDX в пераменную d. Распечатать значения переменных  a, d
  2. a=104, b=21, c=15. Найти значения a+b, a-b,  c-(a+b), 2*c+a-b (операцию умножения не используйте)
  3. Умножить 50000*(-100) с помощью команды imul  с тремя, двумя, одним операндом
  4. Найти значение выражения  (2*a-b)*(7+3*a*b), a=104, b=221, затем a=104h, b=221h в шестнадцатиричной системе, а затем получите тот же результат, выразив a,b в двоичной системе.
  5. Найти результат и остаток от деления 697:13 и проверить результат с помощью операций умножения, сложения  и вычитания
  6. Найти значение с: если  (a > 0 и| b > 0) c=a*b , иначе c=a+b;
  7. Найти значение с: если (2*a+b>b-a или b>a), то  c=a div b , иначе с=b mod a
  8. Найти сумму  натуральных чисел от 1 до 20 используя только переходы и с помощью команды управления циклом
  9. Найти наибольшее целое число без знака, квадрат которого занимает в памяти меньше 2 байт

Маленькая таблица команд ассемблера

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


понедельник, 16 декабря 2013 г.

Осваиваем ассемблер _ 1

Ассемблер для процессоров 80х86 Intel

Литературы - масса, например:
Список ресурсов для изучения Ассемблера http://habrahabr.ru/post/131971/
и еще
  • http://natalia.appmat.ru/c&c++/assembler.html
  • http://www.insidepro.com/kk/144r.shtml
  • http://lib.znate.ru/docs/index-56712.html
  • http://cs.mipt.ru/fileadmin/assembler/severov/2013/ начиная с http://cs.mipt.ru/fileadmin/assembler/severov/2013/05-mashinnyi___uroven_2.pdf
  • http://www.dialektika.com/PDF/978-5-8459-1197-1/part.pdf

Но лекции - лучше!

Изучаем примеры и решаем задачи: 
Осваиваем команды пересылки MOV, обмена XCHG, сложения и вычитания, умножения, деления.

Сначала используем ассемблерные вставки в Visual Studio, они позволяют  не обращать внимание на взаимодействие с ОС.


Полный сбор 17 декабря!!!

Java: Подводим итоги первых шагов на странице Java: покоренные вершины

17 декабря начинаем 3-й этап: знакомство с ассемблером.
Всё очень сложно и необычно. Не пропускать!

    lea EDX,b     
    mov a1,11h
    inc [EDX]
    mov eax,[EDX]
    add eax,a1
    mov c,eax

понедельник, 9 декабря 2013 г.

Установка плагина для отправки задач

  снача прочтите  Решаем задачи на Java

Установка плагина для отправки задач из idealU-12.1.6 на сайт JavaRush


  •  Скачать плагин в п.Настройка (кнопка внизу на страниуе JavaRush) и распаковать папки:
  • Папку JavaRushHomeWork в c:/Documents and Settings/User/IdeaProjects
  • Папку JavaRushIdeaPlugin в c:/Program Files/JatBrains/IntelIdealU-12.1.6/Plugins
  • Запустить IntelIdealU-12.1.6, закрыть предыдущий проект (File/Close Project), в открывшемся меню выбрать пункт Open Project и в списке выбрать JavaRushHomeWork. Если в списке проектов c:/Documents and Settings/User/IdeaProjects его нет, нажать на минус в квадратике около названия папки (список проектов свернется), а затем на плюсик там же (список развернется снова и JavaRushHomeWork там будет).
  •   Проект откроется. Необходимо запустить плагин. Для этого нажимаешь Ctrl+Alt+S, справа внизу нажимаешь кнопку «Install plugin from disk» , выбираешь файл "JavaRushIdeaPlugin/lib/IdeaPlugin.jar". Вверху на панели инструментов появятся две кнопки (далее они называются левая и правая!). 


  • Нажимаешь на левую кнопку,  выводится список доступных задач. Выбираешь, нажимаешь ОК.
  •  Пишешь программу. Чтобы ее запустить, созданный класс Solution.java нужно сделать главным. Вверху на ярлычке с именем Solution.java щелкаешь правой и выбираешь Create Mainclass.main(). Становится активным зеленый треугольник  –запуск. Отлаживаешь программу.
  •  Щелкаешь на тексте отлаженной программы и нажимаешь на правую кнопку
  •  Система сообщает, что программа прошла (не прошла) тестирование.

Решаем задачи на Java


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

Программное обеспечение. Нужно скачать и установить:


Процесс решения задачи
  • Создать проект  на Java
  • Скачать с сайта JavaRush и установить плагин для отправки задач из idealU-12.1.6 на сайт 
  • Выбрать задачу, написать и отладить программу на  Java
  • Программу послать на сайт и дождаться подтверждения ее успешности.


 Подробности ниже..

понедельник, 2 декабря 2013 г.

Делимся первыми впечатлениями

Надеюсь, обучение Java в полном разгаре!


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

С 3 уровня нужно установить дополнительный пакет Java jdk-7u45 и среду для разработки программ  idealU-12.1.6 (о ее настройке и запуске программ -позже).

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

среда, 27 ноября 2013 г.

Приступаем к знакомству с Java!



Используем для этого ресурс http://javarush.ru/ . Это очень веселая попытка научить программировать на Java.

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



- никакие анекдоты, рисунки не помогут.
Так что решайте сами. Наша задача минимум – познакомиться с ЯП Java, хотя бы так, чтобы вы были в состоянии написать на нем задачу №1 (на циклы) – это просто!

Выберите вверху страницы пункт меню Курс Java, зарегистрируйтесь удобным способом и, быстрее, в полет на космическом корабле!





понедельник, 25 ноября 2013 г.

Решаем задачу на классы



Задача на классы:
Описать класс «Прямоугольник» (имеет длину и ширину, метод рассчитывает площадь)  и производный от него класс «Параллелепипед» (имеет длину, ширину, высоту, методы рассчитывают площадь поверхности и объем). С помощью конструкторов создать 3 объекта-прямоугольника и 2 объекта- параллелепипеда. Напечатать таблицу, содержащую № объекта (1-прямоугольник, 2- параллелепипед), длину, ширину, высоту (для прямоугольника в этом столбце –пропуск), площадь и объем (для прямоугольника в этом столбце –пропуск).
Для уяснения необходимости виртуальных методов, напишите отдельную функцию, которая будет печатать строки такой таблицы при пересылке адреса объекта (пример – в лекции).

План разработки программы:

понедельник, 18 ноября 2013 г.

Изучаем классы

Изучаем
  • Часть 1 материалов о классах в языке С++ 
  • Часть 2 (Наследование и полиморфизм) 
и пишем контрольную работу, задания (вопросы) которой вы найдете в тексте.

среда, 13 ноября 2013 г.

Консультации по задачам на тему "Функции"

Вопросы и тексты программ по теме "Функции " выкладывайте здесь.

Вы уже чувствуете, что становится легче и интереснее?


понедельник, 11 ноября 2013 г.

Задача на функции (№3)


Напишите программу с подпрограммой (функцией).
При этом:
Пользуйтесь только параметрами и локальными данными.
  • Напишите не менее двух подпрограмм: одну для ввода данных, другую -описанную в тексте задачи;
  • Каждую функцию оформите в отдельном файле. 
  • Напишите заголовочный файл Имя.h , включите ссылку на него во все файлы;
  • Печать  производится только в функции main.

Текст задач смотреть здесь

Алгоритмы 

Алгоритмы сортировки
Рекурсия

Несмотря на множество готовых программ в Интернете, просьба программировать самостоятельно и в точном соответствии с алгоритмом, описанным в задаче.

Указания по разработке программы:

четверг, 7 ноября 2013 г.

Анализируйте чужие программы

На странице выложены циклические программы студентов с комментариями. На комментарии можно не отвечать. Постарайтесь понять, что "делают" чужие программы.

воскресенье, 3 ноября 2013 г.

Задача на массивы/строки (№2)

Задача №2 практических занятий предполагает обработку строк в языке С/С++, т.е. использование массивов, чтение-запись в файлы, использование библиотеки string.h.

Материал был изложен в лекциях. Пример, демонстрирующий приёмы работы со строками, показан ниже.

Текст задач смотрите здесь

Пример. Дана строка, содержащая текст (считать из файла). Выписать самое длинное слово, начинающееся на букву k..

Программа:

Пример №2 решения задач на циклы

Рассмотрим расчет сумм рядов.
В примере №1 каждое слагаемое ряда рассчитывается с помощью номера слагаемого i
В примере №2 каждое слагаемое ряда рассчитывается через предыдущее.
Обратите внимание на ввод переменной типа double.

четверг, 31 октября 2013 г.

Пример №1 решения задач на циклы

Задача 1.
Напечатать таблицу перевода расстояний в футах в метры (1 фут-30,48 см) для значений от N до K футов с шагом d футов. Подсчитать количество строк в таблице, в которых расстояние меньше 5 м. Подсчитать среднее значение расстояния в метрах в таблице.

Разработка программы
В программе введены переменные:
f  -текущее расстояние в футах,
m -текущее расстояние в метрах;
i -номер шага;
ii - количество строк в таблице, в которых расстояние меньше 5 м;
s -сумма, а затем -среднее.

Можно воспользоваться любым оператором цикла, но наиболее интересен оператор for, который в С/С++ представляет собой уникальный мощный инструмент, позволяющий написать очень компактный, ёмкий программный код.

Написать можно, например, так:

среда, 30 октября 2013 г.

Задача на циклы

Требования к разрабатываемой программе:
Напишите программу, реализующую Вашу задачу. В программе обязательно должны присутствовать:
  • цикл for;
  • совмещение операции присваивания с бинарными операциями (например, a+=b);
  • операторы scanf и printf .
Задача предполагает обязательную распечатку таблицы и расчет суммы или числа слагаемых (всех имеющихся или удовлетворяющих некоторому условию).
  
Указания:
Блок-схема программы  может выглядеть так (здесь i-номер шага цикла, s-сумма, с-очередное слагаемое, n -счетчик):


Приемы расчета сумм рядов описаны в методичке Структурное программирование в ИСР "Free Pascal"  на стр.37-41.

вторник, 29 октября 2013 г.

Зарегистрируйтесь в Google!

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

Создание проекта

I.Сделайте отладку пробной задачи:
1.      Создайте консольное приложение. Для этого:
·        Запустите Microsoft Visual Studio 2008  из меню Пуск/Все программы/ Microsoft Visual Studio 2008
·        Создайте консольное приложение в Меню  Файл/Создать/Проект. В открывшемся меню слева выбрать тип проекта  WIN32, справа – шаблон Консольное приложение WIN32. Ввести имя проекта в окне внизу  и нажать ОK.
·        В следующем окне Мастера приложения WIN32 нажмите Далее, в открывшемся окне параметров приложения, поставьте галочку возле параметра Пустой проект и нажмите Готово.
·        Проект создан, но к нему необходимо присоединить файлы. В главном меню выберите Проект/Добавить новый элемент, в открывшемся списке шаблонов файлов  выберите Файл С++ и введите внизу его имя. Нажмите кнопку Добавить.
·        Наберите программу в открывшемся центральном окне проекта.


·        Запустите проект:
o       Запишите файл на диск  (нажмите на значок дискеты)
o       Откомпилируйте его -меню Построение/Построить решение (F7)   Если есть ошибки –исправьте и откомпилируйте снова.
o       Произведите компоновку  -меню Построение/Построить Имя_проекта 
o       Запустите на выполнение -меню Отладка/Запуск без отладки

II.Напишите собственную задачу
         Напишите программу, реализующую Вашу задачу. В программе обязательно должны присутствовать:
·        Цикл for
·        совмещение операции присваивания с бинарными операциями (например, a+=b).
·        операторы scanf   и   printf.