Давайте знакомиться с программированием

Главная / Давайте знакомиться с программированием

Думаете куда поступать?
Хотите научиться программировать и работать с микроконтроллерами?
Приглашаю Вас на очное отделение Высшей школы электроники и компьютерных наук в Южно-Уральский государственный университет.
На специальностях
15.03.04 Автоматизация технологических процессов и производств
27.03.04 Управление в технических системах
я обучаю студентов программированию и работе с микроконтроллерами с 1 по 4 курс очного бакалавриата.
Ознакомиться с планом приема.


Программирование — процесс создания компьютерных программ с помощью языков программирования, реализация одного или нескольких взаимосвязанных алгоритмов на некотором языке программирования.

Язык программирования — формальная знаковая система, предназначенная для описания алгоритмов в форме программы, которая удобна для исполнителя (например, компьютера).
Языки программирования делятся на

Машинно-независимые языки позволяют быстро писать довольно сложные программы.

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

Алгоритмизация — процесс систематического составления алгоритмов для решения поставленных прикладных задач.

Алгоритм — точный набор инструкций, описывающих порядок действий некоторого исполнителя для достижения результата, решения некоторой задачи за конечное число шагов. Основные свойства алгоритмов:

  • Понятность для исполнителя — исполнитель алгоритма должен понимать, как его выполнять. Иными словами, имея алгоритм и произвольный вариант исходных данных, исполнитель должен знать, как надо действовать для выполнения этого алгоритма.
  • Дискретность (прерывность, раздельность) — алгоритм должен представлять процесс решения задачи как последовательное выполнение простых (или ранее определенных) шагов (этапов).
  • Определенность — каждое правило алгоритма должно быть четким, однозначным и не оставлять места для произвола. Благодаря этому свойству выполнение алгоритма носит механический характер и не требует никаких дополнительных указаний или сведений о решаемой задаче.
  • Результативность (или конечность) состоит в том, что за конечное число шагов алгоритм либо должен приводить к решению задачи, либо после конечного числа шагов останавливаться из-за невозможности получить решение с выдачей соответствующего сообщения, либо неограниченно продолжаться в течение времени, отведенного для исполнения алгоритма, с выдачей промежуточных результатов.
  • Массовость означает, что алгоритм решения задачи разрабатывается в общем виде, т.е. он должен быть применим для некоторого класса задач, различающихся лишь исходными данными. При этом исходные данные могут выбираться из некоторой области, которая называется областью применимости алгоритма.

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

Существующие парадигмы программирования:

  • императивное программирование – описывает процесс вычисления в виде инструкций, изменяющих состояние программы;
  • декларативное программирование – программа генерируется по ее описанию (HTML-страница);
  • структурное программирование – представление программы в виде иерархической структуры блоков;
  • функциональное программирование – заключается в выполнении ряда функций;
  • объектно-ориентированное программирование – основными концепциями являются понятия объектов и классов.

Комментариев к записи: 23

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

  • Елена, я на Ubuntu учусь программировать на Си. Вобщем дело в том что без отладчика никуда, а про отладчик gdb ничего систематезированного нету ни книг, ни статей, ни видео на ютубе. Вы не планируете его разбирать в своих статьях?) Я кстати слежу за вашим сайтом, разбираю примеры, алгоритмизации, задачи) все очень классно)

  • Огромное спасибо за ваш сайт. Решил освежить знания по алгоритмам сортировки. Хотя много лет не писал на C++, сейчас я программирую на Golang но все очень понятно и структурировано. Однозначно в закладки!

  • Алексей
    Здравствуйте, помогите пожалуйста с листингом, мне нужно обеспечить приём от пользователя три строки, (первая и третья строки – это правильные рациональные или десятичные дроби вида «1/3» или «0,5», вторая строка – это знак арифметической операции вида «+», «-», «*», «/» либо операции сравнения «<», «>», «=», «!=», «>=», «<=»),далее программа должна выполнять требуемую операцию над полученными операндами, и выводить результат на экран.Также должно обеспечиваться сокращение дроби при необходимости. Если оба операнда арифметической операции являются рациональными дробями, результатом тоже должна быть рациональная дробь. Вот такое задание у меня, а вот на чём я завис:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    #include <iostream>
    #include <Windows.h>
    #include <locale>

    using namespace std;

    int main()
    {
        setlocale(LC_ALL, "");
        SetConsoleOutputCP(1251);
        int c = 0;
        float a,b,d;
        cout<<"Введите первый аргумент: ";
        cin>>a;
        cout<<"Введите действие(1-'+',2-'-',3-'*',4-'/',5-'<',6-'>',7-'='): ";
        cin>>c;
        cout<<"Введите второй аргумент: ";
        cin>>b;
        switch (c)
        {
        case 1:
            {
                d = a + b;
                cout<<"Результат="<<d<< endl;
                break;
            }
        case 2:
            {
                d = a - b;
                cout<<"Результат="<<d<< endl;
                break;
            }
        case 3:
            {
                d = a * b;
                cout<<"Результат="<<d<< endl;
                break;
            }
        case 4:
            {
                d = a / b;
                cout<<"Результат="<<d<< endl;
                break;
            }
        case 5:
            {
                if(a<b)
                    cout<<"Истина:"<<a<<"<"<<b<< endl;
                else
                    cout<<"Ложь:"<<a<<">"<<b<< endl;
                break;
            }
        case 6:
            {
                if(a>b)
                    cout<<"Истина:"<<a<<">"<<b<< endl;
                else
                    cout<<"Ложь:"<<a<<"<"<<b<< endl;
                break;
            }
        case 7:
            {
                if(a!=b)
                    cout<<"Ложь:"<<a<<"!="<<b<< endl;
                else
                    cout<<"Истина:"<<a<<"="<<b<< endl;
                break;
            }
        }
        return 0;
    }

    • Елена Вставская
      Считывать операнды надо как строку и анализировать, есть ли в ней дробь.

  • Здравствуйте Елена, в поисках последовательного и внятного изложения материалов о программировании на Си, набрел на ваш сайт. Вся каша в голове из кусков и отрывков найденных на просторах интернета начала приобретать смысл после ознакомления с материалами сайта. Так же радует, что вы отвечаете на все вопросы пользователей вашего сайта. Может и мне поможете. Разбирая в учебных целях программу на Си столкнулся с непонятным мне началом программы. Гугл не смог мне объяснить, что это за функция. void recoding(void) { }

    • Елена Вставская
      Это какая-то пользовательская функция, которая не принимает никаких данных, не возвращает никакого значения и ничего пока не делает.

      • Спасибо, значит в стандартных библиотеках такой функции нет. А где на вашем сайте можно прочитать про перекодировки переменных и для чего это нужно. Ну то есть я тупо перевел слово "recoding", или меня понесло не в ту степь.

      • Кажется понял,прочитал раздел "Функция". Это значит какой то товарищ написал кусок кода на Си, поместил этот код в тело функции, которую обозвал "recoding"
        1
        2
        3
        4
        5
        6
        7
        void recoding(void) {

         digit_out[0]=indication/100%10;
         digit_out[1]=indication/10%10;
         digit_out[2]=indication%10;

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

      • николай
        Добрый день! Помогите пожалуйста с контрольной работой по языкам программирования.

        • Елена Вставская
          На заказ задачи не решаю. Сама преподаватель, и не люблю, когда студенты приносят заказанные решения. На вопросы могу ответить.

  • Алексей
    Здраствуйте, уважаемая Елена! Меня зовут Алексей, и я с большим удовольствием читаю некоторые ваши пояснения к работе с С++, начал самообучение путем поисков статей и всякого рода работ с микроконтроллерами. Понимаю, что на это всё нужны годы а может и целая жизнь, но интерес к творчеству присутствует огромный, в связи с этим назрел вопрос. Может, и бестолковый, но всё же. Вопрос касается компилированных прошивок,конкретно в HEX. Возможно ли из машинного кода декомпилировать обратно в текстовую команду, и если да, то как это можно сделать. Читал много разных сайтов. Люди прямо в компилированной прошивке могут её отредактировать, переписать и т.д. Каким образом они понимают, что в той или иной строчке записанно? то есть функционал той или иной строки..... И для примера... встретил две разные прошивки, которые заканчиваются одинаковыми символами...не могли бы вы подсказать что зашифрованно в этой строке :00000001FF? Заранее огромная благодарность вам за ваши труды!

    • Елена Вставская
      Здравствуйте, Алексей! Да, по коду прошивки возможно дизассемблировать код. Но для этого необходимо изучить документацию на микроконтроллер, для которого этот hex получен. Каждая команда имеет свой шестнадцатеричный код, который и генерируется при формировании hex файла. Обратная операция - зная код, можно определить команду. Но для того, чтобы расшифровать, что в строке, нужно знать как минимум тип микроконтроллера. А лучше ещё и перечень ассемблерных команд с кодами для него.

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

  • Здравствуйте, уважаемый Администратор сайта prog-cpp.ru Меня зовут Николай, я периодически посещаю Ваш сайт и являюсь участником партнерской программы – ProfLinks.ru Пользуясь моментом, хотел бы предложить Вам воспользоваться продвижением Вашего сайта prog-cpp.ru при помощи размещения 900 "живых" ссылок с тИЦ от 10 за 150 руб. В данной услуге проводится размещение ссылок только на качественных сайтах с тИЦ от 10. Услуга включает подробный отчет. Более подробно о данной услуге Вы можете узнать на странице: http://proflinks.ru/page/5 Сервис ProfLinks.ru работает уже более 3 лет и зарекомендовал себя как качественный сервис. Также имеется тариф «Пробный» за 40 руб. В случае, если Вас заинтересовало мое предложение, то при регистрации в сервисе воспользуйтесь моей реф. (партнерской) ссылкой: http://proflinks.ru/registration/564 Буду Вам очень благодарен. ------ Заранее прошу прощения, что отвлек Вас от Важных дел. С уважением, Николай

    • Елена Вставская
      К сожалению, не могу позволить себе оплачивать продвижение, т.к. сайт ничего не продаёт.

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

  • Николай
    Язык C# использует .net библиотеки, т.е. скомпилированная команда просто вызываете те или иные функции, которые  хранятся в dll файлах.

  • Здравствуйте,спасибо за столь познавательные уроки. Пожалуйста объясните как приложение/оболочка/ОС под которую пишется программа на каком-либо языке программирования распознаёт команды написанной программы-знает что при этой команде нужно сделать именно это действие? Например, я написал исходный код на языке Си/С++, потом компилятор из него сделал машинный код (exe файл), я запустил его, и ОС выполнила команды, определённые действия, например написала "Hello World". Откуда ОС знает (может быть, это где-то в ней прописано) что при этих командах нужно вывести на экран текст "Hello World"? Возможно это странный вопрос но я никак не могу это понять. Помогите пожалуйста и спасибо за уроки.

    • Елена Вставская
      Машинный код - это не что иное как набор команд, которые необходимо последовательно выполнить. Посмотрите этот раздел сайта. Там описаны структура и форматы машинных команд и принципы построения вычислительной машины.

    • Изучать нужно начинать не языки программирования, а computer science (компьютерную науку, информатика). Там описан процесс хранения информации (числа, текст, звук, изображение) в компьютере, и как компьютер работает в принципе. Языки программирования - это часть computer science, инструмент для работы с данными посредством написания алгоритмов, моделирования и т.д. Хвататься за язык программирования, не имея малейшего представления о computer science, - глупость, путь в никуда.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *