Выражения и их типы в C(Си)

👁 57 просмотров
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...

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

Арифметические операторы

Операция (выражение)Оператор
Присваивание=
Сложение+
Вычитание
Унарный минус
Унарный плюс+
Умножение*
Деление/
Операция модуль%
Инкремент префиксный++a
Инкремент постфиксныйa++
Декремент префиксныйa
Декремент постфиксныйa

Логические операторы

Операция (выражение)Оператор
Логическое отрицание, НЕ!
Логическое умножение, И&&
Логическое сложение, ИЛИ||

Побитовые операторы

Операция (выражение)Оператор
Побитовая инверсия~
Побитовое И&
Побитовое ИЛИ (or)|
Побитовое исключающее ИЛИ (xor)^
Побитовый сдвиг влево<<
Побитовый сдвиг вправо>>

Операторы сравнения

Операция (выражение)Оператор
Равенство==
Неравенство!=
Больше>
Меньше<
Больше или равно >=
Меньше или равно<=

Составное присваивание

Операция (выражение)Оператор
Сложение, совмещённое с присваиванием+=
Вычитание, совмещённое с присваиванием-=
Умножение, совмещённое с присваиванием*=
Деление, совмещённое с присваиванием/=
Вычисление остатка от деления, совмещённое с присваиванием%=
Побитовое «И» (AND), совмещённое с присваиванием&=
Побитовое «ИЛИ» (or), совмещённое с присваиванием|=
Побитовое «исключающее ИЛИ» (xor), совмещённое с присваиванием^=
Побитовый сдвиг влево, совмещённый с присваиванием<<=
Побитовый сдвиг вправо, совмещённый с присваиванием>>=

Константы в C(Си)

👁 58 просмотров
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...

Константы в Си можно определить 2 базовыми способами

  1. через препроцессор: #define MYCONST ‘A’;
  2. через ключевое слово: const char MYCONST ‘A’.

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

Путаница связана главным образом с заблуждением о том, что #define объявляет константу. Это неверно.

define — макроподстановка, предназначенная для обработки препроцессором.

Настоящая константа в C записывается как:

const int alpha = 3;
const char beta[]="beta";

Разница состоит в том, что макроподстановку препроцессор чисто механически воткнет во все места в исходном тексте, где она встречается.

В то же время, константу обрабатывает компилятор, на более высоком, «умном» уровне. Обратите внимание, что у настоящей константы есть тип — это означает, что глупая ошибка вроде «число вместо строки» просто не откомпилируется. А вот с макроподстановкой такой номер может не пройти.

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

Ввод и вывод данных в C(Си)

👁 47 просмотров
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...

Ввод и вывод данных — это один из основных этапов цикле жизни приложения. Т.е., на всем протяжении, пока приложение работает он принимает некоторые данные и выдает результат вычисления и наша задача — это придумать некоторый алгоритм на языке C(Си), который обработает эти данные так, как нам нужно и выдаст результат. Для простого консольного приложения на языке C(Си) можно воспользоваться 2 соответствующими функциями из стандартного заголовочного файла stdio.h

  1. printf() — функция вывода на консоль в форматированном виде;
  2. scanf() — функция чтения с клавиатуры в форматированном виде;

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

#include 

char message[20];
int main(int args, char * vargs[])
{
   scanf("%s", &message[0]);
   printf("My first app with %s \n", message);
}

В данном код мы определяем переменную, которая будет хранить вводимую строку и после ввода эта строка будет склеена с текстом в printf() и будет выведена на экран. Результат будет следующим

Результат ввода и вывода данных в программу

Жизненный цикл базового приложения на C(Си)

👁 69 просмотров
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...

Код на C(Си) можно разделить на 3 части, которые, в последующем, собирается в один

  1. код из стандартных заголовочных файлов языка;
  2. код за пределами функции main, в том числе и виде пользовательских файлов, которые потом подключаются в основной файл через команды препроцессора;
  3. код внутри функции main, который является точкой входа в любом приложении на языке C(Си).

Короче говоря, точка входа — это необходимое условие приложения, чтобы оно запустилось. Приложение может быть и без точки входа, но тогда это уже будет библиотекой. Ниже приведен минимальный исходный код приложения на C(Си)

#include 
char message[] = "Hello, World";
int main(int args, char * vargs[])
{
   printf("My first app with %s \n", message);
}

Работа данного кода в консоли будет выглядеть, так, как ниже

Работа приложения main

В данном коде мы сначала подключаем стандартный заголовочный файл stdio.h, далее определяем переменную message со строкой приветствия и в функции main выводим посредством функции printf, который определен в стандартном заголовочном файле stdio для взаимодействия с экраном в виде форматированного склеивания параметров в общую строку вывода. Это значит, что там, где %s будет вставлен текст из переменной, которая задается вторым параметром.

Краткий курс C(Си)

👁 56 просмотров
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...

Данный список тем программирования на языке C(Си) больше предназначен для быстрого освежения знаний по этому языку. Компиляция и выполнение программы будут выполнены на GCC в системе Linux(Ubuntu), но это не является проблемой изучения и для другой ОС, так как язык C(Си) стандартизирован.

  1. Компиляция и запуск исходного кода на C(Си) в Linux
  2. Жизненный цикл базового приложения на C(Си)
  3. Ввод и вывод данных в C(Си)
  4. Переменные и их типы в C(Си)
  5. Константы в C(Си)
  6. Выражения и их типы в C(Си)
  7. Массивы в C(Си)
  8. Функции в C(Си)
  9. Условные операторы ветвления в C(Си)
  10. Циклические операторы итераций в C(Си)
  11. Указатели и ссылки в C(Си)
  12. Структуры в C(Си)
  13. Команды препроцессора в C(Си)
  14. Включение исходных файлов в C(Си)
  15. Файл сборки MakeFile в C(Си)

Аналог MessageBox в Qt

👁 248 просмотров
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...

Чтобы использовать всплывающее окно QMessageBox сначала нужно подключить заголовочный файл кодом:

#include<QMessageBox>

Вариант 1. Дальше уже использовать класс QMessageBox для вывода окна кодом:

QMessageBox msgBox;
msgBox.setText("Hello Here");
msgBox.exec();

Вариант 2. Есть, также встроенные типы сообщений, которые можно вывести классом QMessageBox, которые вызываются посредством вызова статических функций данного класса, это:

QMessageBox::warning(0,"Warning", "Warning message text");
QMessageBox::information(0, "Information", "Information message text");
QMessageBox::critical(0, "Critical", "Critical message text");

Вариант 3. Есть, также возможность обработать , нажатые ответы на окне QMessageBox, как в этом примере:

QMessageBox msgBox;
// Заголовок сообщения
msgBox.setText("Testing.."); 
// Тип иконки сообщения
msgBox.setIcon(QMessageBox::Information); 
// Основное сообщение Message Box
msgBox.setInformativeText("Just show infornation."); 
// Добавление реагирования на софт клавиши
msgBox.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel); 
// На какой кнопке фокусироваться по умолчанию
msgBox.setDefaultButton(QMessageBox::Ok); 
/* Запускаем QMessageBox. После выполнения, в ret будет лежать значение кнопки, на которую нажали - это необходимо для дальнейшей обработки событий*/
int ret = msgBox.exec(); 
// Собственно вот этот case и отвечает за обработку событий
switch (ret) {   
    case QMessageBox::Save:
     // Сюда пишем обработку события Cancel
        break;
     case QMessageBox::Ok:
     // Сюда пишем обработку события Ok 
        break;
    default:
     // Сюда пишем обработку события по умолчанию
        break;
}

 

How to get and save screenshot in Qt

👁 139 просмотров
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...

We can to get screen of device or screen of running app.

Code for get screen of device and save in .png format:

    QPixmap p;
    QScreen *screen = QGuiApplication::primaryScreen();
    if (screen)
       p = screen->grabWindow(0);//(0, 0, 0, 100, 20);//WinId, X, Y, width, height
    QImage qImage = p.toImage();
    qImage.save("screen.png");

Code for get screen of running app and save in .png format:

    QPixmap p = this->grab();
    QImage qImage = p.toImage();
    qImage.save("screen.png");