mt-course
Оценивание (ИС)Оценивание (Тех.Зрение)Оценивание (КТ)
materials
materials
  • About
  • Для новичков
    • Основы C++
    • IDE/Compilers
    • Антипаттерны и способы улучшения кода
      • 0. Освобождение ресурсов
      • 1. Чтение данных из файла
      • 2. Открытие файлов
      • 3. Объявление переменных
      • 4. Выделение памяти
      • 5. Необдуманный код
      • 6. Глубокие if
      • 7. Длинные if
      • 8. Non-void функции
      • 9. Создание массивов
      • 10. Проверка формата файла
    • Git/GitHub
      • Git CLI
      • Git GUI
      • Git Web
      • Git в среде разработке
        • Visual Studio
        • CLion
        • Qt Creator
        • Visual Studio Code
      • CLion + GitHub
      • Работа с GitHub Actions
  • Настройки OpenMP/C++ threads
    • OpenMP
    • Сборка с OpenMP
    • C++ threads
  • Настройки CUDA и HIP
    • Установка CUDA SDK
    • Установка HIP SDK
    • Настройка проектов CUDA
    • Настройка проектов HIP
  • Настройки OpenCL
    • OpenCL
    • Проверка и установка платформы
    • Настройка проектов
    • Профилирование
      • Тестовый стенд
      • Профилирование через rcprof
      • Инструкция по профилированию в CodeXL
Powered by GitBook
On this page
  1. Для новичков

Основы C++

PreviousAboutNextIDE/Compilers

Last updated 3 months ago

Синтаксис языка и полезные функции можно посмотреть на следующем сайте:

Темы, которые полезно изучить на базовом уровне, чтобы сделать лабораторные:

  1. Работа с файлами: чтение данных из файла, запись в файл.

  2. Типы данных: целые, с плавающей точкой, строки, структуры, операторы.

  3. Массивы данных и работа с памятью: статическое и динамическое выделение памяти, хранение массивов в памяти.

  4. Ветвление, циклы: if, for, while.

  5. Директивы компилятора: как их писать и как они работают.

Если вы умеете программировать на С/C++, то никто вас не ограничивает в выборе используемых конструкций и функций (рекомендация не увлекаться построением абстракций, лабораторные простые и про скорость, а не архитектурное решение). Но если вы давно не писали или вообще видите эти языки первый раз, то достаточно использовать самые простые типы и конструкции, главное - чтобы вы понимали, как работает ваш код и как стоит его распараллелить.

Для тех, кто не знает С/C++ ниже представлен фрагмент кода, в котором показано, как читать из файла, создавать массивы данных, проходиться по нему и что-то записывать в выходной файл с освобождением памяти программы.

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <omp.h>

int main(int argc, char *argv[])
{
    FILE *fin = fopen("example_input", "rb");
    int n;
    fscanf(fin, "%i", &n);
    fclose(fin);  
    
    float tstart = omp_get_wtime();
    int sum = 0;
    #pragma omp parallel for
    for (int i = 0; i < n; ++i)
    {
      #pragma omp atomic
      sum += i;
    }
    float tend = omp_get_wtime();
    
    FILE *fout = fopen("example_output", "wb");
    fprintf(fout, "%i\n", sum);
    fclose(fout);

    printf("Time (sec): %f", tend - tstart);
    
    return 0;
}
cppreference.com
Yandex
Основы С++ (Yandex Handbook)