воскресенье, 29 декабря 2013 г.

К зачету!

Еще раз напоминаю, особенно для студентов, регулярно пропускавших занятия.
Чтобы получить зачет, нужно
  • Сдать индивидуальную задачу на циклы (С++)
  • Сдать индивидуальную задачу на функции (С++) или тест
  • Сдать индивидуальную задачу на классы (С++) или тест
  • Сделать в присутствии преподавателя задания 4-6 по программированию под Windows
  • Разработать  индивидуальную страницу на HTML
  • Отладить обработчик своей HTML-страницы или ответить на вопросы по обработчику-примеру 1.рhр
После этого -медаль зачет!

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

Обработка отдельных данных формы на РНР

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

Для этого имя и фамилию записываем в один файл, а выбранное домашнее животное- в другой. Каждый раз при обработке информации читаем оба файла и подсчитываем количество посетителей вообще ( $n) и выбранных енотов ( $е), в частности.

Обратите внимание на особенность РНР: для того, чтобы корректно сравнить две строковые переменные,  например $s1="Енот " и  $s3=$file_array1[$n];, нужно завести другие переменные таким образом  $s2=$s1[0];  и  $s4=$s3[0];  и сравнить $s2 и $s4. Они сравниваются правильно. Исходные переменные - нет.

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

Знакомство с РНР



В 1995 г. датский программист Расмус Лердорф (Rasmus Lerdorf) написал программу (сценарий) на языке Perl для подсчета количества посетителей сайта, прочитавших его онлайновое резюме. Программа записывала  данные посетителя и подсчитывала число "зашедших" на веб-страницу.  А затем эта идея превратилась в самостоятельный язык программирования PHP - Hypertext Preprocessor — «препроцессор гипертекста».
Сегодня РНР мощный, широко распространенный язык программирования. Нам, в частности, будут интересны большие возможности этого языка при решении задачи обработки строк.
Примерно такие же (как у Р. Лердорфа)  задачи стоят и перед вами. Чтобы их решить, вы должны написать обработчик передаваемых  данных из формы по образцу:
Обработчик из примера 1.php (с пояснениями):

воскресенье, 8 декабря 2013 г.

Знакомство с HTML

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

С HTML вы знакомитесь самостоятельно, используя лекции на сервере, пример (ниже), ссылки на источники в сети Интернет (список в конце).
Вы должны знать:
  •  Структуру HTML-документа
  •  Назначение некоторых тегов (перечислены ниже)
  •  Некоторые атрибуты тегов (перечислены ниже)
  •  Приемы использования таблиц для размещения материалов на веб-странице
  •  Назначение HTML-форм и их атрибутов
 Используя эти знания Вы  должны будете создать  Файл Reshenie_1_№.htm (вместо № - номер Вашей задачи) - описание см. ниже. Номер задачи такой же, как у задачи №2. 

Тексты задач

Файл создать «вручную», в редакторе Блокнот (Html-редакторы не использовать), проверяеть с помощью браузера.

Подробнее:

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

Языки программирования в веб


В нашем курсе предполагается знакомство с языком разметки HTML и языком обработки запросов на стороне сервера РНР.

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

Парадигмы и языки программирования



Парадигма - философский подход к программированию, который определяет совокупность используемых концепций и методов программирования, реализуемые в ЯП.

Термин «парадигма программирования» впервые применил Роберт Флойд в своей лекции лауреата премии Тьюринга.

Императивное программирование основано на описании последовательного изменения состояния вычислителя (компьютера) для решения поставленной задачи. Причем под состоянием компьютера нужно понимать значения его ячеек памяти, состояние процессора и других устройств.
Объектно-ориентированное программирование (ООП) основано на объектной декомпозиции имеющейся задачи. Система описывается в терминах объектов и связей между ними.
Функциональное программирование основано на решении имеющейся задачи только с помощью вызова функций.
Логическое программирование основано на описании задачи как системы фактов и логических правил. Способ получения результата при этом в программе не указывается. 
 
В соответствии с выделенными парадигмами, можно классифицировать и языки программирования (ЯП). Однако, многие ЯП  дают возможность реализовать разный подход и однозначной классификации не получается. Поэтому разделим ЯП на две большие группы:
 
1.Императивные языки программирования
— языки, оперирующие командами, изменяющими значение элементов данных. Характеризуются наличием операций присваивания и циклами.
подгруппы:
•универсальные ЯП (Паскаль, СИ, Бейсик, Фортран)
•языки ООП ( Java, SmallTalk, Self, Cecil)
•языки сценариев (Rexx, Python, JavaScript, HTML)
 
2.Декларативные языки
— языки, оперирующие инструкциями о данных и отношениями между данными.
подгруппы:
•языки логики (Prolog, KLO, Mercury)
•функциональные языки (Lisp; Miranda, Haskel) 
 
Императивные языки скорее отвечают на вопрос «как?», декларативные — на вопрос «что?».

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

Популярность языков программирования


Популярность языка программирования определяется
•Количеством программ, разработанных на этом языке программирования (ЯП) ;
•Количеством рабочих мест для программистов, знающих данный ЯП.
На рисунке показаны логотипы (если они имеются) наиболее популярных в настоящее время ЯП:



Рейтинг языков программирования в разные годы, который можно видеть на рисунке ниже принадлежит TIOBE Software BV — голландской компании, известной своими ежемесячными рейтингами популярности языков программирования.   При составлении своего рейтинга  Tiobe учитывает число специалистов по языку, число существующих учебных курсов по нему, вендоров, поддерживающих язык, а также количество кода, индексируемого поисковыми системами.


 Интересна статистика Украины, в которой, за неимением нефти и газа, очень динамично развивается IT отрасль. Другую информацию по данному вопросу вы легко найдете по поисковому запросу "Рейтинг языков программирования".

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

Пора взяться за классы!

Пора, пора сдать задачи на функции и приступить к классам!
С этой недели по графику мы должны приступить к программированию под Windows. На самом деле, мы приступим к нему на следующей неделе. В это время на занятиях я не буду принимать никакие задачи.
Долги по задачам: обсуждение - в блоге (на страницах
сдача - в дополнительное время.

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

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

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

Использование друга класса

Добавим в определение класса описание друга:

friend int Frend(FourAngl&, FourAngl&);

и его код (в файл metody.cpp)

int Frend(FourAngl& o1, FourAngl& o2){if(o1.P>o2.P) return 1; else return 0;};

Тогда в main можно сделать заключение, периметр какого четырехугольника больше:

int n=Frend(fig1, fig2);
if (n) cout<<"P1>P2"<<endl;
else cout<<"P1<=P2"<<endl;

То же самое без использования друга: (в main)

if (fig1.Perimetr()>fig2.Perimetr()) cout<<"P1>P2"<<endl;
else cout<<"P1<=P2"<<endl;


Используйте функцию несколько раз

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

#include <iostream>
using namespace std;
float fun1 ( float p, float q )
         {return p+q;}

void main()
{
float a,b,c,d,f;
cout <<" vvod a,b="; cin >>a>>b;
cout <<" vvod c,d="; cin >>c>>d;
f=fun1(2*a,b);
cout <<" f= 2a+b="<<f <<endl<<" f= c-d="<<fun1(c,-d)<<endl;
cout <<" f= 2a+b-c="<<fun1(f,-c) <<endl;
}

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


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

Задание 3. Классы в C++. Инкапсуляция. Наследование. Полиморфизм.



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

2)      Напишите программу, реализующую Вашу задачу. При этом:


a)      Спроектируйте класс:

  • Опишите нужные поля (члены-данные класса);
  • Напишите конструктор;
  • Напишите метод (методы), выводящий на экран значения полей (членов-данных класса);
  • Напишите методы (члены-функции) класса, нужные для реализации задачи;
  • Напишите дружественную функцию, описанную в задаче.

b)      Описание класса сделайте в заголовочном файле, описание методов и функцию main- в двух других файлах.

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

d)      В функции  main определите несколько объектов (экземпляров класса). Продемонстрируйте решение задачи, во-первых, только с помощью вызова различных методов объекта (объектов) и, во-вторых, с помощью друга класса.
 

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

Готовьтесь к аттестационному тесту

Согласно графику учебного процесса, с 14 по 20 октября проводится аттестация.
На оценку 1 нужно защитить одну задачу и сдать тест по темам Данные. Операторы в С/С++.

Примеры тестовых заданий:

№1
программа
#include <math.h>;
void main()
{  int a=100;
   printf("%d",a);
}
Ответы
  • написана верно
  • содержит ошибку (не присоединена нужная библиотека)
  • содержит ошибку (неправильно записано имя библиотеки)
  • содержит ошибку (не описана главная функция)
  • содержит ошибку (неправильно описана переменная)
  • содержит ошибку (неверно написан оператор вывода)


пятница, 4 октября 2013 г.

Публикация программы (вопроса)

Для публикации своей программы или вопроса:

1.Зарегистрируйтесь в Google (создайте аккаунт). Как это делается, смотрите в видео:




2.Войдите в свой аккаунт на google.com, нажмите Войти, введите логин и пароль. Если Вы вошли, в верхнем правом углу страницы увидите своё имя.

3.Перейдите на нужную страницу блога. Внизу введите комментарий (свою программу).

4.Проверьте, чтобы в поле рядом с " " стоял Ваш логин, если его нет (например, потому, что зарегистрирована только почта на Gmail), нажмите на "Просмотр", система предложит Вам дополнить аккаунт или покажет, как будет выглядеть Ваш пост (комментарий).

4.Нажмите "Публикация" и ждите. Вам ответят.

5.Если в посте есть ошибки, которые Вы хотите исправить, нажмите "Изменить".

суббота, 28 сентября 2013 г.

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

На панели справа Вы найдете ссылку на страницу " Консультации по задачам".
На данной странице в комментариях можно выложить текст своей программы и вопрос по ней, а также перед защитой посоветоваться о том, действительно ли программа соответствует предъявляемым требованиям (очень рекомендуется).
Разработка программы - это не просто! Тут помощник нужен, Гомо сапиенс!


Ссылка на страницу  " Консультации по задачам".

четверг, 26 сентября 2013 г.

Задание 1: Типичные ошибки и пробелы в знаниях

Первые защиты задач показали:
  • студенты не понимают смысла написанного в формате. Разберитесь, в чем разница в %d, %6d, %f, %.2f, %5.2f и т.д. 
  • не знают смысла параметров в скобках оператора ввода с клавиатуры - см. лекции (в том числе смысл записи &a - ссылка на переменную а) ;
  • в цикле должны стоять действия, которые действительно должны повторяться. Например, расчет коэффициента, который вычисляется один раз и больше не изменяется, в цикл помещать не надо.

среда, 25 сентября 2013 г.

Чудесный баг!

Пирогову А.А.:     удивительные явления при работе Вашей программы связаны с написанием оператора ввода с клавиатуры.
Уберите в формате пробелы (совсем!) и всё будет выполняться правильно:
scanf("%d%d",&a,&b);

вторник, 24 сентября 2013 г.

Задание 2. Функции в С/С++



Задание

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

задачи смотрите здесь
контрольные вопросы смотреть здесь 

Указания

Задание 1. Введение в ЯП С/С++

Начинаем работу!
Первая публикация - указания к решению задачи №1


Задание 1.    ООП. Консольное приложение в СП Visual C++

Задание


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

  

Указания: