воскресенье, 3 февраля 2013 г.

[Урок 7] Работа с файлами

Теория

Работа с файлами предполагает чтение и запись в файл. Сейчас я покажу функции с помощью которых это осуществляется.

Код

#include <iostream>
#include <stdio.h>


using namespace std;

int main()
{


FILE *file;
char* file_name = "file.txt";
char load_string[50]="Stroka, kotoraya vpishetsya v file";

file = fopen( file_name, "w" ); //создаем файл с именем file.txt для записи

fputs( load_string, file ); // вносим туда строку load_string

fclose(file);//закрываем файл

file = fopen( file_name, "r" ); // открываем файл для чтения
if( file != 0 ) // если файл существует
{
fgets( load_string, 50, file );//получаем 50 символов из файла
cout << load_string; //выводим строку на экран
}
else
{
cout << "404" << endl; //если такого файла нет, то выводим 404
}
fclose(file); //закрываем


return 0;
}


Некие важные вещи


Для работы с файлами понадобится

#include <stdio.h>

Открытый файл описывается структурой FILE. При открытии файла нужно указать режим. В случае ошибки функция возвращает NULL.

FILE *pFile = fopen("Izengardjke.txt", "w");
/* r - чтение, файл должен быть
* w - запись, старое содержимое удаляется, файл создаётся
* a - дополнение в конец файла, файл создаётся
* a+ - чтение и дополнение, содержимое сохраняется.
* читать можно всё (перемещаться по файлу с помощью
* fseek(FILE*, int offset, int origin) или
* rewind(FILE*)), но при попытке записи
* указатель будет перемещаться в конец файла
*/


Запись выглядит так:

char buffer[] = "Hello, World!";
fwrite(buffer, sizeof(char), sizeof(buffer), pFile);


Чтение - так:
fread(&buffer, sizeof(char), sizeof(buffer), pFile);

И не забудьте закрыть файл.
fclose(pFile);


Записываем строку в файл по 10 символов в каждой строчке

#include <iostream>
#include <fstream>

int main()
{
char str[] = "dsfdsf sdf sdfdsf dsg sdhsfjhsfjsfjhsf sg hsfhsfhsha";
int i;

std::ofstream outfile("Text.txt");

for ( i = 0; i < sizeof(str); i++)
{
outfile << str[i];
if( i % 10 == 9)
outfile << std::endl;
}
outfile.close();
}


суббота, 2 февраля 2013 г.

[Урок 6] random

c++ random

Задача: написать программу, которая выводит случайное число в заданном пользователем диапазоне.


Простейший пример на random в с++

#include <iostream>
#include <stdlib.h>
#include <time.h>


//подключаем новые библиотеки для работы с рандомом


using namespace std;

int main ()
{


int s,m,doznach,ot;
cout << "vivesti sluchainoe chisplo ot ";
cin >> ot;
cout << "do ";
cin >> doznach;
cout << "\n";
cout << "vivod: \n";


m=doznach-ot;


srand ( time(NULL) );
//если убрать эту строчку, то рандомное число
//раз за разом будет одно и тоже
s = rand() % m + ot;

cout << s;


return 0;
}

[Урок 5] Массивы

Массивы в С++

Немножко теории


Говоря простым языком массив - это холодильник, т.е. хранилище данных. В этом уроке мы рассмотрим одномерные и двумерные массивы.

Простейший пример на массивы

#include <iostream>

using namespace std;

int main()
{


int arr[5]; //вот так вводится ЦЕЛЫЙ массив

for(int i=0;i<5;i++){

//заполняем массив квадратами чисел

//от 0 до 4

int x;
x=i*i;
arr[i]=x;
}


for(int i=0;i<sizeof(arr)/sizeof(arr[0]);i++){

//выводим на экран заполненный массив

cout <<i << " v kvadrate = ";
cout << arr[i];
cout << "\n";
}


return 0;
}



Попрошу заметить, что счет элементов в массиве идет от 0, так что если вы в цикле i замените на 1 то значение массива arr[0] будет пустым!


Двумерные массивы в С++

Двумерные массивы можно сравнить с обычной таблицей. Синенькую часть кода я опустил.


const int H=10;
const int W=5;
char arr[H][W]; //так вводится двумерный массив

for(int y=0;y<H;y++){  //заполнить первую (вторую, третью...) строчку
for(int x=0;x<W;x++){ //пятью
arr[x][y]='@';               // собаками :DDD
}
}


//вывести таблицу из собак 5 на 10 на экран

for(int y=0;y<H;y++){
for(int x=0;x<W;x++){
cout << "| " << arr[x][y] << " ";
}
cout << "\n"; // переход на новую строчку, иначе будет все в строчку
}

[Урок 4] Классы

Классы в С++

Здесь я обойдусь без теории, приступим сразу к рассмотрению кода.

#include <iostream>
#include <string>

using namespace std;

int main()
{


class Uchenik{ //название класса, зпоминайте синтаксис
public:
int vozrast;
string imya;
string kurs;
string uchitel;
void print(){
cout << "vozrast: " << vozrast;
cout <<"\n";
cout << "imya: "<< imya;
cout << "\n";
cout << "kurs: "<< kurs;
cout << "\n";
cout << "uchitel: "<< uchitel;
cout << "\n";
}
};


Uchenik one; //заполняем первого ученика
Uchenik two;
//второй ученик

one.vozrast=16;
one.imya="Kostya";
one.kurs="C++";
one.uchitel="Slava191";

two.vozrast=16;
two.imya="PaRRot";
two.kurs="C++";
two.uchitel="Slava191";

two.print();
//данная конструкция выведет нам второго ученик

return 0;
}


Думаю никакой сложности в понимании у вас не возникло. Главное запомните синтаксис.

пятница, 1 февраля 2013 г.

[Урок 3] Циклы в С++

Теория циклов

Циклы - это повторение действий.
Делятся на 3 виды: for while repeat


Простая программа на циклы в C++

Цикл FOR

#include <iostream>

using namespace std;

int main()
{


int n; //целая перменная

cin >>n;

for(int a=1;a<=n;a++){
// цикл выведет все числа от 1 до n
cout<<a;
if(a<n){

//а этот условный оператор разделяет числа запятыми
//и добавляет точку в конце прогрессии
cout<<", ";
}
else{
cout<<".";
}
}


return 0;
}



Цикл while в С++


Я далее буду опускать синею часть программа, чтобы не загромождать посты. В отличие от for, while более гибкий цикл - в этом вы убедитесь на практике при дальнейшем изучении. Код выполняет туже функцию и что и выше написанный. Все изменения выделены красненьким цветом.


int n, a;
cin >>n;

a=1;
while(a<=n){
cout<<a;
if(a<n){
cout<<", ";
}
else{
cout<<".";
}
a++;
}



Цикл repeat в С++

Цикла repeat в С++ нет, но есть аналог do


do
{
//loop-body
} while (условие_делать_пока_истина);


но если очень хочется то для прикола можно заменить через defline, но в этом нету смысла.


#define REPEAT do {
#define UNTIL(X) } while (!(X))
int main() {
int x=1000;
REPEAT
x--;
UNTIL(x>0);
return x;
}


[Урок 2] Условный оператор

Немножко теории

Если выполняются условия то делаются такие действия, а если нет то другие.

если (a>b) то

действие 1

иначе

действие 2

Вот и вся теория, в некоторых книжках это изложено страниц так на 100))

И вот еще немножко из теории

х && у -  x и y
x || y - или
x!= y - x не равен y

Простейшая программа на условный оператор С++

 За основу возьмем наш ранее написанный калькулятор. Сделаем его так сказать более продвинутым.


#include <iostream>

using namespace std;

int main()
{



int a, b, sum, razn, umn; //целые переменные
float delenie; //дробная

string deistvie; //строка

cout << "A=";
cin >> a;
cout <<"B=";
cin >> b;


cout <<"\n";
cout <<"Deistvie:";
cin >> deistvie;
cout <<"\n";




sum=a+b;
razn=a-b;
umn=a*b;
delenie=a/b;


if(deistvie=="+"){
cout <<"A+B="<< sum;
}
if(deistvie=="-"){
cout <<"A-B="<< razn;
}
if(deistvie=="*"){
cout <<"A*B="<< umn;
}
if(deistvie=="/"){
cout <<"A/B=" << delenie;
}

else{
cout<<"Net takoi operacii";
}
return 0;
}


switch в с++


Тот же самый if else, только с другим синтаксисом, который может быть удобен в иных условиях.


switch (c) //принимаем переменную
{
  case 'A': // если значение переменной А то
   //ваши операции

break;
case 'a':
  //ваши операции

break;
  default: // если не то и не то
   // ваши операции
}




[Урок 1] Переменные и выражение. Примитивный калькулятор на С++

Вы уж извините, но я особо не пишу много ненужного текста и теории. Это все вы может прочитать в 400 страничных книгах, не знаю как вы но я за всю свою жизнь не читал 400 страниц). Так что, если решили изучать С++ по моим урокам, то привыкайте к моему методу работы. А он прост: код с комментариями, то что этот код делает и совсем немножко теории. И вот важная пояснение:


#include <iostream>

using namespace std;

int main()
{
   

Код программы тут!!!
Все что в синих строчках стирать нельзя!!!


return 0;
}


Виды переменных в С++

int а = 1; // целая переменная а
const char С = 'С' ; // символьная константа С
char s, sf = 'f' ; // инициализация относится только к sf
char t (54);
float с = 0.22, x(3), sum;


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


int a; // 1, 2, 100, 50 
float x; //1.5, 3.423

Выражения в C++


Пишем первую программу, которая складывает, умножает, вычитает 2 цифры, некий примитивный калькулятор.


#include <iostream>

using namespace std;

int main()
{
   

int a, b, sum, razn, umn; //целые переменные
float delenie; //дробная

cout << "A=";
cin >> a;
cout <<"B=";
cin >> b;

sum=a+b;

razn=a-b;
umn=a*b;
delenie=a/b;

cout <<"A+B="<< sum;


//Сами сделаете - и *

cout << "\n";

cout <<"A/B=" << delenie;


return 0;
}

А теперь важные моменты по программе, как вы видите появился какой-то непонятный cin >> так вот cin это ввод переменной. \n означает перенос строки.


ДЗ

Предлагаю попробывать вам написать программу считающую корни квадратного уравнения.


[Урок 0] Компиляторы C++ и первая программа "Hellow World"

На мой взгляд Code::Blocks лучший компилятор C++ как для начинающих, так и для тех кто занимается этим на более серьезном уровне. Скачать его можно по ссылке или с официального сайта программы.

Куда тыкать чтобы начать кодить?

А тут все просто, но все же у новичков могут возникнуть трудности. Итак, в верхнем меню находим File >> New >> Project... >> Console application выбираем С++, в открывшемся окне вводим имя проекта, ниже указываем папку, жмем Next >, в следующем окне никаких галочек не убираем, просто жмем Finish. Отлично! Появилось серое окно, но куда же писать код? Смотрим в левом меню Workspace >> Название вашего проекта >> Sources >> main.cpp. Именно в main.cpp мы и будем писать свой первый код. Как видим там у нас уже что-то написано:

#include <iostream>

using namespace std;

int main()
{
cout << "Hello world!" << endl;
return 0;
}

Это что-то есть самая первая программа на вывод текста. Запускаем ее нажатием клавиши F9. Готово!