avatar
+1.13
14 подписчиков, 10 топиков

Программирование на C. Часть 2

В прошлом уроке мы написали Hello, World на Си и поняли, что это круто. А сегодня мы будем рассматривать саму суть любой программы — переменные. А их в Си over9000 много видов, но сегодня мы рассмотрим пока только численные.
Читать дальше →

Программирование на C. Часть 1

Единственный способ выучить новый язык программирования по мнению многих — это писать на нем программы. При изучении любого языка первой, как правило, предлагают написать программу, выдающую надпись 'Hello, World'
Читать дальше →

Уроки по C++. Урок 0. Настройка рабочей системы.

Здравствуйте! Я решил написать некоторое количество уроков по C++. Весь код, приведённый мной в этой теме должен гарантированно работать в Linux. Сам я, на момент написания этого топика, использую операционную систему Ubuntu 13.04 и пишу и тестирую всё на ней.
Для Windows придётся вносить незначительные переменные, а именно подключать в начале программы заголовочный файл conio.h, так как Windows терминал (более известный, как командная строка) сразу после выполнения вашей программы закроется, а произойдёт это, если программа не совершает титанический труд очень быстро. Вы даже не успеете разглядеть, что она выведет. Поэтому на платформе Windows используйте функцию getch(), которая станет доступна, после подключения conio.h.
В качестве компилятора я использую g++, а как редактор кода — Geany.
Обязательно читайте книги по программированию. Рекомендую начинать с книги ВВ Подбельского «Стандартный C++».
Начнём с азов, а именно с программы Hello World.
В Geany (можете использовать любой редактор с подсветкой синтаксиса) сохраните его в каталоге my_first_programm под именем hello.cpp. Наберите в нём такой код:

    /*hello.cpp
    * Это моя первая программа, которая не делает ничего полезного, но выводит надпись Hello world!
    * Каждую программу лучше всего начинать с комментария, для чего она служит. Звёздочка в начале этой строки не обязательна, просто для более красивого отображения кода. Это многострочный комментарий. Компилятор его игнорирует, он нужен именно Вам, а не компьютеру.
    */
     
    #include <iostream>//Подключается заголовочный файл потоков ввода/вывода
     
    int main ()//объявляется точка входа в программу
    {//Открывается блок функции main
        std::cout << "Hello world!" << std::endl;//Выводится текст Hello world! std::endl объявляет переход на новую строку.
        return 0;//Так уж принято, что программа должна вернуть какое-либо целое цифровое значение операционной системе. 0 возвращают, если всё прошло успешно.
    }//Закрывается блок функции main
    

Пользователям Windows надо написать так:

    /*hello.cpp
    * Это моя первая программа, которая не делает ничего полезного, но выводит надпись Hello world!
    * Каждую программу лучше всего начинать с комментария, для чего она служит. Звёздочка в начале этой строки не обязательна, просто для более красивого отображения кода. Это многострочный комментарий. Компилятор его игнорирует, он нужен именно Вам, а не компьютеру.
    */
     
    #include <iostream>//Подключается заголовочный файл потоков ввода/вывода
    #include < conio.h>
     
    int main ()//объявляется точка входа в программу
    {//Открывается блок функции main
        std::cout << "Hello world!" << std::endl;//Выводится текст Hello world! std::endl объявляет переход на новую строку. Символ ; ставится после каждого оператора, не являщегося блоком.
        getch();//Ждём нажатия на любую клавишу
        return 0;//Так уж принято, что программа должна вернуть какое-либо целое цифровое значение операционной системе. 0 возвращают, если всё прошло успешно.
    }//Закрывается блок функции main
    

Сохраните файл. Перейдите в терминале в каталог my_first_programm при помощи команды cd. Если вы не знаете команд терминала в linux, то срочно читайте
man man

На английском, так как без него программировать очень туго, особенно в Unix.
Пользователи Windows могут почитать справку по командной строке и её командам в Windows. Но английский также желателен и им.
Считаю, что вы находитесь в каталоге с файлом hello.cpp, в терминале выполняете команду
g++ hello.cpp -o hello

Должен скомпилироваться бинарный файл hello (задан ключом -o hello)
Запустите его командой
./hello

Должно отобразиться сообщение Hello world!

Напишем теперь более полезную программу, считающую сумму двух целых чисел:
//summa.cpp
    #include <iostream>
     
    int main ()
    {
        int a, b;//Объявляем 2 переменные типа int, т.е. целые числа в диапазоне от -2147483648 до 2147483647
        std::cout << "Введите 2 целых числа через пробел" << std::endl;
        std::cin >> a >> b; //Считываем подряд две переменные a и b
        std::cout << a << "+" << b << "=" << a+b << std::endl;//текст при выводе надо заключать в "", а переменные нет.
        return 0;
    }

Так ка Windows не поддерживает UTF8 в командной строке, а соответственно кириллица выведется кракозябрами, то пользователи этой операционной системы должны написать код так:
//summa.cpp
    #include <iostream>
    #include < conio.h>
    #include <clocale>//Для поддержки русского языка при выводе
     
    int main ()
    {
        setlocale(LC_ALL, "russian");//Устанавливаем русскую локаль
        int a, b;//Объявляем 2 переменные типа int, т.е. целые числа в диапазоне от -2147483648 до 2147483647
        std::cout << "Введите 2 целых числа через пробел" << std::endl;
        std::cin >> a >> b; //Считываем подряд две переменные a и b
        std::cout << a << "+" << b << "=" << a+b << std::endl;//текст при выводе надо заключать в "", а переменные нет.
        getch();
        return 0;
    }

И, наконец, напишем более сложную программу, с условным оператором if
Его структура такова:
if(логическое выражение)
{
какие-то операторы,
}
else
{
какие-то операторы,
}

Логическое выражение должно принимать численные значения. В бинарной логике — это 1 (ИСТИНА) и 0 (ЛОЖЬ), но C++ будет трактовать любое число, отличное от 0, как истину. Не путайте знак присваивания a=7 со знаком равенства a==7. Первое выражение даст истину и приравняет переменную a к значению 7. Внутренний механизм его действия будет примерно таков:
1) Приравнять a к 7
2) Дальше с точки зрения компьютера это будет выглядеть как
if(7)
3)Сравнить 7 с 0
4)Так как 7 не равно 0, то значит выражение истинно и необходимо выполнить код в блоке if
Фигурные скобки после if или else не обязательны, если надо выполнить всего 1 оператор, но крайне желательны, чтоб вы не допустили ошибки.
Блок else не является обязательным. В случае, если логическое выражение вернёт истину, выполнятся только те операторы, которые заключены в блоке if, в противном случае те, что заключены в блоке else.
//numbers.cpp
#include <iostream>
 
int main()
{
    float a;
    std::cout << "Введите число\n";// символ \n является управляющим. Он переводит курсор на новую строку. Это пришло в C++ из языка C. Так тоже можно писать.
    std::cin>>a;
    if(a>0)//если a больше 0
    {
        std::cout<< a << ">" << 0<< std::endl;//0 - число, а не текст, его можно и не брать в кавычки
    }
    else
    {
        if(a!=0)//если a не равно 0
        {
            std::cout<< a << "<" << 0<< std::endl;
        }
        else
            std::cout<< a <<" это "<< 0 << std::endl;//Так можно, так как у нас один оператор после else, но лучше так не делать.
    }
    return 0;
}

Домашнее задание:
Написать 4 программы
1)Пользователь вводит с клавиатуры 2 целых числа, надо посчитать их разность.
2)Пользователь вводит с клавиатуры 3 целых числа a b и c. Найти значение x формулы x=2*a+4*b-9*c и вывести число x на экран.
3)Пользователь вводит с клавиатуры по вашему запросу целые числа a, b и c в квадратном уравнении (напомню формулу) a*x2+b*x+c=0. Найти x и написать решение. Т.е. прямо как в тетрадке в школе писали (а может кто из читателей и пишет ;-) ) по всем правилам оформления. Для того, чтобы сделать доступной функцию получения корня, необходимо подключить заголовочный файл math.h. Функция называется sqrt, используется так: y=sqrt(x); (Y равен корень квадратный от X). x передаётся в функцию в качестве аргумента. y храните в переменной типа double, так как может получиться дробное число. Подробнее о типах будет рассказано позже.
4)Пользователь вводит с клавиатуры 2 целых числа, расположить их в порядке возрастания и вывести на экран.

Уроки Python, часть 6 - модули

Всем привет. Мы почти закончили обучение основам питона и сегодня узнаем об еще одной интересной штуке — о модулях.Затем будет еще одни урок с различными полезными функциями, потом мини обзор всего пройденного в одном коде, а дальше… ООП! Да, объектно ориентированное программирование! Вот так быстро мы двигаемся.

Читать дальше →

Уроки по Python, часть 5 - функции


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

Читать дальше →

Уроки по Python, часть 4, строки, списки, словари

Приветствую всех! Вы еще не забыли, что здесь происходит? Если нет, то давайте окунемся в замечательный мир Python! Тема сегодняшнего урока — списки, словари и строки. Перед началом чтения советую повторить материалы третьего урока, особенно про цикл for, т.к. мы будем широко его применять.

Не дай помереть с голоду, опубликуй свою статью.

Читать дальше →

Уроки по Python, часть 3, циклы

Всем доброго дня. Сегодня я разошелся и написал целых 2 урока по отличному языку программирования Python. Вот небольшое оглавление по моим урокам:

  1. Урок 1, основы: dafter.ru/duf/python/46.html
  2. Урок 2, логика: dafter.ru/duf/python/52.html
  3. Урок 3: а сейчас что читаем?
  4. Урок 4: dafter.ru/duf/programming/58.html
  5. Урок 5, функции: dafter.ru/duf/programming/74.html
  6. Урок 6, модули: dafter.ru/duf/programming/87.html

Итак, сегодня мы поговорим о циклах. Это [b]очень[/b] важная тема, циклы широко применяются в дальнейшем, поэтому прочитайте урок внимательно.

Читать дальше →

Уроки по Python, часть 2, логика

Приветствую! Это тот самый долгожданный урок по замечательному языку программирования Python. Сегодня мы разберем:

  1. Логические выражения
  2. Оператор if
  3. Оператор else
  4. Оператор elif
Приступим!

Логические выражения

Наверняка все мы помним, как в начальной школе сравнивали числа: 5<8, это правда; 5>2, тоже правда; 5<4, а вот это ложь. Также и в языке Python, только операторов здесь немного больше. Вот список:

x == 8 # x равен 8
x != 3 # x не равен 3
x > 5 # x больше 5
x < 5 # x меньше 5
x >= 7 # x больше или равен 7
x <= 6 # x меньше или равен 6

Это простые выражения.

Также можно использовать сложные выражения. На их выходе мы получаем либо True (правда), либо False (ложь). Чтобы использовать сложные выражения, нужно знать еще несколько операторов, а именно and и or. Думаю, их значение понятно, и и или соответственно. Итак, небольшой пример:

x = 6
y = 13
x == 6 and y < 15 #  x равен 8 и y меньше 15
x > 6 and y < 15 #  x больше 8 и y меньше 15
x != 0 or y >15 #  x не равен 0 или y больше 15
x < 0 or y >15 #  x меньше 0 или y больше 15

Чтобы получить правду с оператором or, необходимо, чтобы результаты хотя бы одного простого выражения был истинным. Ложным выражение становится тогда, когда ложны все составляющие его простые выражения.

Чтобы получить истину при использовании оператора and, необходимо, чтобы результаты обоих простых выражений, которые связывает данный оператор, были истинными. Если хотя бы в одном случае результатом будет False, то и все сложное выражение будет False. Строки тоже можно сравнивать, попробуйте сами это сделать.

Думаю, понятно, если вы что-то не поняли, то спрашивайте. Иначе не получится выполнить домашнее задание :-\

Условные операторы

Обычно в наших программах все было понятно — за таким-то действием идет второе, за вторым третье и т.д. И ничего не могло этому помешать (ну кроме ошибок ;) ). Теперь вы сможете использовать условный оператор [b]if[/b], что поможет создавать условия. Конструкция выглядит так:

if переменная условие вторая_переменная:
что_выполнить_если_выражение_выше_правда

Обратите внимание, что после первой строки обязательно должно быть двоеточие и отступ в 4 пробела!
Пример простого условия:

#Условие
g=7
c=8
if c == g:
    print('Hooray!')

#А вы не забыли про логические операторы? 
t=5
b=2
j=7
if t > b and t < j:
    print('It is magic')


«Но ведь условия не всегда правдивы!», скажете вы. И будете правы — для этого существует конструкция if-else. Вот пример, после которого вы все поймете.


h=int(input('Enter... ')) #Мы не знаем, какое число введет пользователь
if h == 4: #Если 4, то...
    print('All right')
elif h < 6: #Если у вас не одно условие, то второе можно задать с помощью elif
    print('Empty')
else: #Как видите, else без аргументов
    print('You are fool') #Тоже 4 отступа!


Если ни одно условие выше не True, то тогда выполняется блок else. Если хоть одно условие выше правда, то блок else просто пропускается, а правдивое условие выполняется. Я использовал elif — если первое условие не выполняется, то смотри дальше, если опять false, то дальше, до else. Вот так сделать не получится:

dogs=4
if dogs == 3:
    print('Dogs are beautiful')
if dogs > 6:  #Ошибка! Используйте elif
    print('OK')
else: 
    dogs=6
    print(dogs)


Можно делать вложенные инструкции :P:

cats=5
if cats < 7:
    print('And')
    if cats == 6:
        print('Cats!!!')
    else:
        print('Funny cats were lost')
else:
    cats=3

Будьте аккуратнее с пробелами — каждый новый уровень, 4 новых пробела. Да, в том же Java блоки помечаются { и }. Но отступы все равно чаще всего делают, хотя они никак не влияют на процесс выполнения программы — это делают только ради чистоты и читаемости кода.

Домашнее задание

1. Напишите 5 сложных выражений (использовать or и and)
2. Напишите скрипт, который спрашивает у пользователя какие либо данные. Если они совпадают (допустим, с переменной b), то выведите ему сообщение, что он прошел тест. Иначе, напишите, что он не прошел его.
3. Напишите скрипт, где используются вложенные условия, а в условиях есть операторы or или end.

-----Предыдущий урок----- -----Следующий урок -----

Уроки по Python, часть 1, основы

Здравствуйте! Как я и обещал, начинаю публиковать уроки по Python. Я начал делать это скорее для себя, чтобы лучше разобраться или просто повторить пройденный материал. Хочу сразу оговориться, что уроки предназначены для новичков в программировании, гуру ничего полезного в первых уроках не найдут.

Итак, первая часть будет посвящена переменным, типам данных, вводу и выводу данных. Приступим.

Читать дальше →