Начинаем программировать на с++ с нуля, полного и абсолютного

ЛИРИЧЕСКОЕ ВСТУПЛЕНИЕ.
есть на ФКНе такой предмет: ЯСиТП (язык си и теория программирования). иситовцы изучают его на третьем курсе и особых проблем с ним, как правило, не имеют. а несчастные студенты с мкн вынуждены именно с него начать изучение программирования - с первых недель пребывания в универе. все бы ничего - если студент в школе хоть немного учил информатику и хорошо знаком с паскалем - выучит синтаксис и дальше будет загоняться матаном и дискретой. а если не учил и не знаком? то есть даже совсем?
тогда ваше дело труба\дрянь\плохо.
первое: на лекциях Хлебостроева не спать. нет труднее задачи, чем не прикорнуть под его размеренный голос на четвертой паре, но... все зависит от вас.
второе: начните читать книжку, например http://www.ph4s.ru/bookprogramir_1.html там найдете книгу Богатырева "руководство полного идиота по программированию" или что-то другое по вкусу.
третье и пожалуй самое главное: ПРАКТИКА. о чем я и поведу речь.
прежде чем пытаться что-либо писать дома, надо установить правильную студию. по опыту почти всего мкн2012 года набора вижул студио 2010 с++ экспресс - нерабочая. то что ИДЕАЛЬНО написано на компах в универе, она читает с ошибкой без возможности исправления. почему - не наше дело, мы ищем вижуал студио 2010 (2012) ултимайт (Visual Studio Ultimate 2012). например здесь:http://www.microsoft.com/visualstudio/ru... . устанавливаем пробную версию, после чего можно уже приступать к практике.

(примечание1:
файл - дополн.параметры сохранения - кирилица doc. тогда консоль будет нормально читать русские буквы.

ПРИМЕЧАНИЕ2: для того чтобы получить полноценную программу из представленного кода необходимо создать новый проэкт в вижуал студио, выбрать пункт "пустой проэкт", указать имя проэкта, в папке "файлы исходного кода" правой клавишей мыши добавить новый элемент "файл с++", скопировать в образовавшееся окно мой код и скомпилировать (клавиши контрол+ F5), после чего попробовать написать что-то подобное самостоятельно.)

ПРАКТИКА.
программирование классически начинается с написания элементарной программы "привет мир!".
на форуме есть несколько тем об этой программе на разных языках, кроме с++, поэтому вот код:

#include "stdio.h"
#include "conio.h"


int main(int argc, char* argv[])
{
	printf("Hello, World!\n");
}

полезно написать так же пару тройку простейших программ такого типа ( например эта выводит результат уравнения с известными заранее данными):

// tytytyty.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"


int _tmain(int argc, _TCHAR* argv[])
{
	int x , y , z;
	
	
	x = 9;
	y = 4;
	z = x*y;

	printf("%d", z);
}

затем посложнее(эта программа считывает два вводимых значения и дает результат уравнения с введенными значениями):

#include "stdio.h"


void main()
{
	int x , y , z;
	scanf("%d, %d", &x, &y);
	z = x*y;
	
	printf("%d", z);
}


следующая программа, заданная преподом после "привет мир!", у меня выглядела так:
условие: дан квадрат и вписанный в него круг. найти половину площади квадрата, оставшуюся за пределами круга, если будет известна сторона квадрата.
решение:

#include "stdio.h"
#include "math.h"

#define PI 3.1415926535897932384626433832795


void main()
{
	double x;

	printf("введите значение стороны квадрата x = ");
	scanf("%lf", &x);

	double y = x / 2;
	double f = x * x;
	double z = PI * y * y;
	double s =  (f - z) / 2;

	printf("%lf\n", s);
}

как вариант с использованием библиотеки констант:

#define _USE_MATH_DEFINES

#include "stdio.h"
#include "math.h"


void main()
{
	double x;

	printf("x = ");
	scanf("%lf", &x);

	double y = x / 2;
	double f = x * x;
	double z = M_PI * y * y;
	double s =  (f - z) / 2;

	printf("%lf\n", s);
}

программа номер пять из таск два. условие: решить квадратное уравнение с задаваемыми коэфицентами.
реализация:

#include "stdio.h"
#include "math.h"
#include "conio.h"


int main()
{
	float x , x1, sq, a, b, c;

	printf("Vvedite znachenija a, b, c: ");
	scanf("%f, %f, %f", &a, &b, &c);

	if (a == 0) {
		x = - c / b;
		printf("%f", x);
	}
	else {
		float k;
		k = b * b - 4 * a * c;

		if (k < 0) {
			printf("Kornei net!");
		}
		else if (k == 0) {
			x = - b / (2 * a);
			printf("%f", x);
		}
		else {
			sq = sqrt(k);
			x = (-b + sq) / (2 * a);
			x1 = (-b - sq) / (2 * a);
			printf("%f, %f", x, x1);
		}
	}
	getch();
	return 0;
}

(ВНИМАНИЕ!! при указании библиотек вместо знаков больше \ меньше везде указаны кавычки)

ПОСЛЕСЛОВИЕ: позднее будут добавляться остальные задачи.

baton's picture

я надеюсь все понимают, что программа в данном случае состоит из:
1) подключения библиотек (#include например)
2) тела программы
3) завления переменных, их типа, возможно - значений
4) действий с этими переменными, функций, циклов и т.д.
5) вывода результатов, завершения программы...

так же почему то после #include не отображаются названия библиотек.
везде, где написаны два #include и пустота, там запись должна быть такой:
#include stdio.h
#include math.h
(math.h и stdio.h ограничены с обоих сторон знаками "больше\меньше")
если будете использовать код, не забудьте исправить.

humanmashine's picture

Я начинал кодить с C/C++ (Правда до этого был только паскаль в школе - но это не в счёт). Ничего ужасного в этом нет. Читаем Страуструпа - очень полезно, а для тех кому тяжко - надо искать что-то по-легче.
А так, то что я начинал с С++ - это даже плюс, остальные языки потом - плёвое дело)))) Да и этот язык приучает писать программы грамотно, так как в нём неграмотность карается багами и дырками и мыслить программно.

vedro-compota's picture

Читаем Страуструпа -

Скорее он для тех, кто хочет постичь "дзен" си++
а если не хочешь, а хочешь просто узреть пример как осуществить наследование классов (для начала базовый пример) - то это просто ужасный учебник.
Он больше похож на описание языка , чем на учебник в прямом смысле этого слова.

_____________
матфак вгу и остальная классика =)