Основы C++
Синтаксис языка и полезные функции можно посмотреть на следующем сайте: cppreference.com
Темы, которые полезно изучить на базовом уровне, чтобы сделать лабораторные:
Работа с файлами: чтение данных из файла, запись в файл.
Типы данных: целые, с плавающей точкой, строки, структуры, операторы.
Массивы данных и работа с памятью: статическое и динамическое выделение памяти, хранение массивов в памяти.
Ветвление, циклы:
if
,for
,while
.Директивы компилятора: как их писать и как они работают.
Если вы умеете программировать на С/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