Основы C++

Основы С++ (Yandex Handbook)

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

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

  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;
}

Last updated