извращения на с++

Discussion in 'Машинное отделение' started by krey, 24 Oct 2007.

  1. TopicStarter Overlay

    krey Михаил Кройтор

    • Команда форума
    Member Since:
    10.04.2006
    Message Count:
    3.709
    Likes Received:
    50
    Репутация:
    1
    Location:
    Кишинев
    Оффлайн
    я занимаюсь повторным использованием программного кода. одним из старейших способов повторного использования есть макроопределения. способ действительно мощный, но у него такое количество минусов, что лучше им не пользоваться - поэтому от макросов в новых языках отказываются. посмотрите до чего можно дойти на С++!
    Code:
    #include "instructions.h"
    
    INITIALIZE
    
    DECLAREVARS
        INTEGER variable, sum;
    
    MAINBLOCK
    BEGIN
        WRITE 
            SCREEN("enter a number: ")
        ENDWRITE
        
        INPUT(variable)
        sum = 0;
        CICLE(1, variable)
        BEGIN
            sum = sum + COUNT;
        END
        
        WRITE 
            SCREEN("result: ") 
            SCREEN(sum) 
            ENDLINE
        ENDWRITE
    END
  2. Chemer Максим

    • Участник
    Member Since:
    14.09.2006
    Message Count:
    1.674
    Likes Received:
    13
    Репутация:
    0
    Location:
    Запорожье
    Оффлайн
    Гдето на каком-то форуме, видел на макросах под си язык "ПРЕВЕД", причем тему развили листов на пять. Народу "ПРЕВЕД" понравилсо. Типа того:
    Code:
    //
    
    // Превед.cpp : Defines the entry point for the console application.
    
    //
    
    
    
    #include <iostream>
    
    #include <locale.h>
    
    
    
    //—————————————————————————————————
    
    // The PREVED Language Kernel area. Do not touch! :)
    
    
    
    #if !defined (_MSC_VER) || _MSC_VER < 1400
    
    
    
    #error Wrong compiler! Use MSVS 8.0
    
    #endif
    
    
    
    #define НАЧЕЛ      {
    
    
    
    #define КОНЧЕЛ     ;}
    
    #define ТИПА       int
    
    #define ВДРУГ      if (
    
    
    
    #define ТАДА       )
    
    #define НИХРИНА    else
    
    #define ВЗАД       return
    
    
    
    #define КАГДИЛА    (
    
    #define ЙО         ;
    
    #define ЖЖОШ(p,n)  for (; (p) <= (n); (p)++)
    
    
    
    #define БАЗАР      std::cout << 
    
    #define СЛЫШЬ      << 
    
    #define СТОЙ       system ("echo. & pause");
    
    
    
    #define БЛИН       _wsetlocale (LC_ALL, L"Russian_Russia.ACP");
    
    
    
    #define ВРОДЕ      try 
    
    
    
    #define ИБАНУЦЦО   throw
    
    #define АПСТЕНУ    catch (const char* __чё__)
    
    
    
    #define ПРЕВЕД     ТИПА main КАГДИЛА ТАДА
    
    #define МЕДВЕД     ВЗАД 0; КОНЧЕЛ
    
    
    
    // End of area
    
    //—————————————————————————————————
    
    
    
    ТИПА КРУТО КАГДИЛА ТИПА фигня ТАДА
    
    
    
        НАЧЕЛ
    
        БАЗАР "ВАЩЕ " ЙО
    
        ВДРУГ фигня == 8 ТАДА ИБАНУЦЦО "мля! " ЙО
    
    
    
        ВЗАД 0
    
        КОНЧЕЛ
    
    
    
    ПРЕВЕД
    
        НАЧЕЛ
    
        БЛИН
    
    
    
        ВРОДЕ НАЧЕЛ
    
    
    
        ТИПА фишка = 0 ЙО
    
    
    
        ЖЖОШ (фишка, 10)
    
            НАЧЕЛ
    
            БАЗАР фишка СЛЫШЬ " "; 
    
            ВДРУГ фишка >= 5 ТАДА КРУТО (фишка) ЙО
    
    
    
            КОНЧЕЛ
    
    
    
        КОНЧЕЛ АПСТЕНУ НАЧЕЛ
    
            БАЗАР "ИБАНУЦЦО invoked: " СЛЫШЬ __чё__;
    
    
    
        КОНЧЕЛ
    
    
    
        СТОЙ
    
    МЕДВЕД

Share This Page