Сейчас в чате 0
никого нет
|
MoRS: С++
MoRS

02 авг 2006 19:16
Изменен 05 окт 2018 05:30
Редактировать
Ссылка на этот пост
|
Кому есть что сюда писать - пишите
UPD [Tёмный]:
сорри, что влезаю в топикстарт,
но, возможно, это следует разместить в начале.
Перспективно ли изучать C++?
 #ASKSHIFU №59
|
Fph0EniX

08 авг 2006 21:15
Редактировать
Ссылка на этот пост
|
Исходы на VC++ есть нормальные? Чтобы для начала сгодились... давно хочу заняться изучением сего... например, исходник оконной проги "Таблица умножения"... чтобы понять, как организуется работа с элементами управления в MFC или в API
|
Tёмный

23 сен 2017 11:50
Редактировать
Ссылка на этот пост
|
да, кстати,
я хотел бы, чтобы вы мне подсказывали и про кодестайл, как правильно по фэншую.
просто нам препод сказал, что кодестайл вы как-нибудь сами типа,
а на первых порах, чтобы было наглядно, мы с вами будем писать вообще вот так:
span style="color: #666666;">"Hello, World\n");
}
|
Tёмный

06 окт 2017 20:00
Изменен 29 дек 2017 23:31
Редактировать
Ссылка на этот пост
|
Начал смотреть годный, на мой взгляд, курс лекций.
Полностью погрузиться в тему пока не могу, увы. 2-3 лекции + немного практики в неделю. Больше пока никак.
Закину ссылки сюда, чтоб не потерялось.
Да и, вдруг, кому пригодится.
Информатика на С++
Курс лекций. 2016 г.
лектор: Хирьянов Тимофей Фёдорович (2016)
 курс видеолекций
Информатика второго года, ФМХФ - семестр 3, лекция 1
 Содержание
Темы, рассмотренные на лекции:
- История языков программирования С и С++
- Hello World на языке С++
- Функции в С++
- Типы целых чисел языка С++
- Представление целых чисел в памяти ПК
- Арифметические операции в С++
- Битовые операции в С++
- Обмен переменных значениями через XOR
- Оператор ветвления if в С++
- Оператор цикла while в С++
- Оператор цикла for в С++
- Оператор ветвления switch в С++
 Видео
Информатика второго года, ФМХФ - семестр 3, лекция 2
 Содержание
Темы, рассмотренные на лекции:
- Модель памяти приложения
- Локальные и глобальные переменные
- static локальные переменные
- Указатели в С++
- Адресная арифметика в С++
- Преобразование типа указателя в С++
- Передача параметра по указателю в Си
- Массивы в С++
- Определение и инициализация массива в С++
- Ссылки в С++
 Видео
Информатика второго года, ФМХФ - семестр 3, лекция 3
 Содержание
Темы, рассмотренные на лекции:
- Работа с динамической памятью в Си и С++
- Системные вызовы malloc() и free()
- Операторы new и delete
- Двумерные массивы в С++
- Массивы указателей в С++
- Динамические двумерные массивы в С++
- Передача массива в функцию и возврат из функции в С++
 Видео
Информатика второго года, ФМХФ - семестр 3, лекция 4
 Содержание
Темы, рассмотренные на лекции:
- Структуры и указатели в С++
- Модульное программирование на С++
- Принцип раздельной компиляции
- Стражи включения заголовочных файлов
- extern переменные
 Видео
Информатика второго года, ФМХФ - семестр 3, лекция 5
 Содержание
Темы, рассмотренные на лекции:
- Введение в ООП на С++
- Пространства имен в С++
- Перегрузка функций в С++
- Аргументы функции по умолчанию в С++
 Видео
Информатика второго года, ФМХФ - семестр 3, лекция 6
 Содержание
Темы, рассмотренные на лекции:
- Инкапсуляция. Понятие класса в С++
- Спецификаторы доступа к полям классов в С++
- Конструктор и деструктор в С++
- Указатель на объект
- Указатель this
 Видео
Информатика второго года, ФМХФ - семестр 3, лекция 7
 Содержание
Темы, рассмотренные на лекции:
- static члены класса в С++
- Присваивание объектов в С++
- Передача объектов функциям
- Возврат объекта как значения функции
- Дружественные функции класса
- Перегрузка операторов в С++
 Видео
Информатика второго года, ФМХФ - семестр 3, лекция 8
 Содержание
Темы, рассмотренные на лекции:
- Наследование в C++
- Перегрузка методов в С++
- Перегрузка конструкторов в С++
- Инициализация экземпляра вложенного класса в С++
- Управление доступом к базовому классу
- Защищенные члены класса
 Видео
Информатика второго года, ФМХФ - семестр 3, лекция 9
 Содержание
Темы, рассмотренные на лекции:
- Виртуальные функции в С++
- Подстановочный критерий Барбары Лисков
 Видео
Информатика второго года, ФМХФ - семестр 3, лекция 10
 Содержание
Темы, рассмотренные на лекции:
- Обобщенное программирование: шаблоны С++
- Инстанцирование
- Шаблоны функций
- Шаблоны классов
- Параметры шаблонов
- std::pair
 Видео
Информатика второго года, ФМХФ - семестр 3, лекция 11
 Содержание
Темы, рассмотренные на лекции:
- контейнеры и итераторы
- std::vector
- std::list
- std::set
Видео
 Видео
Информатика второго года, ФМХФ - семестр 3, лекция 12
 Содержание
Темы, рассмотренные на лекции:
- Алгоритмы STL
- Ассоциативный контейнер map
 Видео
Информатика второго года, ФМХФ - семестр 3, лекция 13
 Содержание
Темы, рассмотренные на лекции:
- Работа с файлами в С++. Файловые потоки
- Перегрузка оператора вывода в поток для иерархии классов
- Введение в шаблоны проектирования. Singletone. Abstract factory.
- Разбор строк в С++. stringstream
 Видео
Информатика второго года, ФМХФ - семестр 3, лекция 14
 Содержание
Темы, рассмотренные на лекции:
- Введение в параллельные и распределенные системы.
- race condition
- Нити std::thread
- std::mutex
- deadlock
 Видео
|
Tёмный

06 окт 2017 21:02
Изменен 12 окт 2017 22:47
Редактировать
Ссылка на этот пост
|
"культурный" хело ворд.
в качестве краткого примера-памятки мультифайлового програмирования
(краткая выдержка из наигоднейшей публикации на OpenNet.ru Программирование в Linux с нуля, по которой я, собсно, и делал первые шажки)
сделано на "чистом" Си, без плюсов
в одну дирректорию лепим файлы:
hello.c
hello.h
main.c
Makefile
/* hello.c */
#include <stdio.h>
"Hello World\n");
}
/* hello.h */
/* main.c */
#include "hello.h"
# Makefile for Hello World project
hello: main.o hello.o
gcc -o hello main.o hello.o
main.o: main.c
gcc -c main.c
hello.o: hello.c
gcc -c hello.c
clean:
rm -f *.o hello
далее в консольке (кое-что лишнее, и служит чисто для демонстрации)
сборка и запуск
bash $ ls
hello.c hello.h main.c Makefile
$ make
gcc -c main.c
gcc -c hello.c
gcc -o hello main.o hello.o
$ ls
hello hello.c hello.h hello.o main.c main.o Makefile
$ ./hello
Hello World
посмотреть объектный файл
bash $ nm main.o
0000000000000000 T main
U print_hello
очистить проект
bash $ make clean
rm -f *.o hello
$ ls
hello.c hello.h main.c Makefile
|
Tёмный

29 ноя 2017 09:26
Изменен 11 дек 2017 09:56
Редактировать
Ссылка на этот пост
|
Задачка
Создать новый проект (по подробным инструкциям) в котором будет реализован класс очереди (Queue).
Запустить программу на выполнение. Убедиться, что она работает, ведёт себя правильно.
 Element.h
/*file Element.h*/
#pragma once
// Element(void); //лишнее?
// ~Element(void); //лишнее?
 Queue.h
/*file Queue.h*/
#pragma once
#include "Element.h"
 Queue.cpp
/*file Queue.cpp*/
#include "Queue.h"
#include <iostream>
"Element " << e->value << " added to queue""Element " << e->value << " removed from queue""Queue is empty"", "
 main-queue.cpp
/*file main-queue.cpp*/
#include "Element.h"
#include "Queue.h"
//#include <conio.h>
/*Сonio.h (console input-output) — заголовочный файл, используемый в старых компиляторах, работающих в операционных системах MS-DOS, для создания текстового интерфейса пользователя. Тем не менее, он не является частью языка программирования Си, стандартной библиотеки языка Си, ISO C или требуемой стандартом POSIX.
Этот заголовочный файл объявляет несколько библиотечных функций для работы с «консольным вводом и выводом» программы. Большинство компиляторов языка Си, предназначенных для DOS, Windows 3.x, Phar Lap, DOSX, OS/2 или Win32 имели этот файл и обеспечивали сопутствующие библиотечные функции в библиотеке Си по умолчанию. Большинство компиляторов языка Си, предназначенных для UNIX и Linux, не имеют этого файла и не обеспечивают сопутствующих библиотечных функций.*/
//void main () //nix компилятор хочет инт
//а не войд. Почему?
{
Element e1, e2, e3, e4, e5; //создаём объекты класса Element (элнменты)
e1.value = 10; //присваиваем значение value
e2.value = 20; //созданным элементам
e3.value = 30;
e4.value = 40;
e5.value = 50;
Queue q; //создаём объект q класса Очередь
q.Put(&e2); //"складываем" в объект q (в очередь)
q.Put(&e3); //элементы
q.Put(&e1); //
q.Put(&e5); //(! в "произвольном порядке" ! )
//печатаем (выводим на экран) значения элементов в очереди
q.Get(); //вытаскиваем элемент из очереди
q.Get(); //ещё вытаскиваем элемент из очереди
//снова печатаем значения оставшихся элементов в очереди
// _getch(); //для шиндовс: ожидать нажатия кнопки
// return 0; //работает и без него. Тогда зачем?
}
 Makefile
# Makefile for Laba-01 LIFO-FIFO (Queue&Stack:queue) project
queueapp: main-queue.o Queue.o
g++ -o queueapp main-queue.o Queue.o
main-queue.o: main-queue.cpp
g++ -c main-queue.cpp
Queue.o: Queue.cpp
g++ -c Queue.cpp
clean:
rm -f *.o queueapp
Вроде работает.
Вроде работает как просили.
Делал "по инструкции" из методички.
Замечания есть? Может что-то не так, или улучшить?
upd: ps комменты разъехались. в исходнике ровным столбцом идут. а тут не получилось выровнять, даже пробелами.
ну и ладно, не суть важно.
upd1: к предыдущему ps, оно не только тут разъезжается. Следует ещё раз переосмыслить форматирование табами и пробелами. |
Tёмный

29 ноя 2017 10:21
Редактировать
Ссылка на этот пост
|
... а вот тут у меня пока не получилось.
понимаю, что как-то совсем просто должно быть,
а вот как именно - чёт туплю, не соображу.
Задачка ...
15. Создайте новый проект, в котором будет реализован класс стека (Stack)
вместо класса очереди. Создайте основную программу и покажите, что
класс работает.
16. Выполните индивидуальное задание.
...
Индивидуальные задания:
1. Реализуйте в классе Stack метод, который выводит на экран сумму всех
элементов стека.
...
3. Реализуйте в классе Stack метод, который выводит на экран
произведение всех элементов.
...
9. Реализуйте в классе Stack метод, который выводит сумму всех
нечетных элементов стека.
...
 Element.h
/*file Element.h*/
#pragma once
// Element(void);
// ~Element(void);
 Stack.h
/*file Stack.h*/
#pragma once
#include "Element.h"
 Stack.cpp
/*file Stack.cpp*/
#include "Stack.h"
#include <iostream>
"Element " << e->value << " added to Stack" << " [count= " << count << " ]""Element " << e->value << " removed from Stack" << " [count= " << count << " ]""Stack is empty"", ""Stack is empty""[Инд.задание 1] Сумма всех элементов равна ""Stack is empty""[Инд.задание 3] Произведение всех элементов равно "//написать метод для суммы нечётных элементов
"Stack is empty"//
//
//
//
//
//
"[Инд.задание 9] Сумма нечётных элементов равна " << summnechet << endl;
}
 main-stack.cpp
/*main-stack.cpp*/
#include "Element.h"
#include "Stack.h"
//#include <conio.h> //см. коммент в очереди (устаревший для дос и шиндовс)
//void main () //main-stack.cpp:8:12: error: ‘::main’ must return ‘int’
//в *nix компилятор хочет инт, а не войд
{
Element e1, e2, e3, e4, e5; //создаём объекты класса Element (элнменты)
e1.value = 10; //присваиваем значение value
e2.value = 20; //созданным элементам
e3.value = 30;
e4.value = 40;
e5.value = 50;
Stack s; //создаём объект s класса Стэк
s.Put(&e2); //"складываем" в объект s (в стыэк)
s.Put(&e3); //элементы
s.Put(&e1); //
s.Put(&e5); //(! в "произвольном порядке" ! )
s.Put(&e4); //
//печатаем (выводим на экран) значения элементов в стэке
s.SummAll(); //считаем и печатаем сумму всех элементов в стэке
s.MultAll(); //считаем и печатаем произведение всех элементов в стэке
s.SummNechet(); //считаем и печатем сумму нечетных элементов в стэке
s.Get(); //вытаскиваем элемент из стэка
s.Get(); //ещё вытаскиваем элемент из стэка
//снова печатаем значения оставшихся элементов в стэке
s.SummAll(); //считаем и печатаем сумму всех элементов в стэке
s.MultAll(); //считаем и печатаем произведение всех элементов в стэке
s.SummNechet(); //считаем и печатем сумму нечетных элементов в стэке
// _getch(); //для шиндовс: ожидать нажатия кнопки
// return 0; //работает и без него, хотя мэйн должен возвращать инт.
}
 Makefile
# Makefile for Laba-01 LIFO-FIFO (Queue&Stack:stack) project
stackapp: main-stack.o Stack.o
g++ -o stackapp main-stack.o Stack.o
main-stack.o: main-stack.cpp
g++ -c main-stack.cpp
Stack.o: Stack.cpp
g++ -c Stack.cpp
clean:
rm -f *.o stackapp
Сумму и произведение всех элементов - это элементарно как бы, это чуток допиленный метод принт.
А вот как обратиться к некоторым избранным элементам полученного стека - чёта не соображу ((( |
Tёмный

29 ноя 2017 11:00
Редактировать
Ссылка на этот пост
|
например, если я тупо топорно в лоб пытаюсь сделать "следующий следующий"
то он выдаёт ошибку
$ ./stackapp
Element 20 added to Stack [count= 1 ]
Element 30 added to Stack [count= 2 ]
Element 10 added to Stack [count= 3 ]
Element 50 added to Stack [count= 4 ]
Element 40 added to Stack [count= 5 ]
20, 30, 10, 50, 40,
[Инд.задание 1] Сумма всех элементов равна 150
[Инд.задание 3] Произведение всех элементов равно 12000000
Ошибка сегментирования
|
Tёмный

29 ноя 2017 11:09
Изменен 29 ноя 2017 11:21
Редактировать
Ссылка на этот пост
|
кстати, параллельный вопрос: где посмотреть исходники стандартных (и не очень) библиотек с/с++ ?
например, хочется посмотреть внутрь библиотеки <stack>,
говорят, там есть метод peek() помощью которого можно обратиться к N элементу стека (от вершины).
вот хотел посмотреть как обратиться к нужному элементу.
это по-сути всё что мне надо. дальше можно будет циклом пройтись по нужным мне элементам.
UPD
в
/usr/include/c++/
но я не асилил = )
|
Tёмный

02 дек 2017 11:32
Изменен 02 дек 2017 11:33
Редактировать
Ссылка на этот пост
|
вопрос не столько про с/с++, сколько про мэйк (make)
я покидал все сырцы из предыдущих двух "проектов" Queue и Stack в один каталог, и сделал один общий Makefile
делаю ли я правильно? ничего глаз не режет? быть может, стоит ещё как-нибудь облагородить?
|
Tёмный

29 дек 2017 13:53
Изменен 30 дек 2017 19:07
Редактировать
Ссылка на этот пост
|
нид хелп! = )
в пост призываются *nix`оиды.
какие аналоги в никсах для виндвой функции GetTickCount() ?
В проге нужно замерить время выполнения некоторого процесса/задачи. В данном случае - сортировки массивов разными способами.
В примере это реализовано так:
...
#include <windows.h>
...
//генерируем массив рандомных интов
//засекаем время старта
...
//сортировка массива
//засекаем время окончания
"\n Время ==> " << t3; //сообщаем сколько времени затратили
...
как это _правильно_ повторить в linux без виндовой приблуды?
я пока сделал вот так, но мне кажется я сделал не то (
...
#include <sys/times.h>
...
//генерируем массив рандомных интов
//сортировка массива
"t = " << t << endl;
...
хельпь... хельпь ми плись!
UPD
нашел на форуме opennet.ru ещё такой вариант, сделать свой GetTickCount с блэкджеком и шлюхами
#include <sys/time.h>
вроде работает
|
phasma

05 окт 2018 05:30
Редактировать
Ссылка на этот пост
|
> например, хочется посмотреть внутрь библиотеки <stack>,
Это STL и читать без подготовки его сложно. Базовые структуры данных лучше у Седжвика почитать. |
Наверх>Страницы 1
|