Kihagyás

6. előadás

//                   --- Oh hey! that's me!
//                   vvv
Rc<RefCell<Arc<Mutex<Box<dyn Any>>>>>

Programtranszformációk

Az algoritmus ekvivalens átalakítása, melynek célja a helyesség megtartása mellett

  • hatékonyabbra írás
  • egyszerűsítés
  • megvalósíthatóság

Párhuzamos értékadás

Több változót tudunk definiálni egyszerre, egy sorban

```pseudo ??? a,b,c = b,c,a

### Ciklusok összevonása

> Azonos lépésszámú ciklusok összevonhatóak, ha függetlenek egymástól

```cs
int s = 0;
for(int i = 0; i < 10; i++)
{
    s++;
}
int p = 1;
for(int i = 0; i < 10; i++)
{
    p *= i;
}

Ez ugyan az, mint:

int s = 0;
int p = 1;
for(int i = 0; i < 10; i++)
{
    s++;
    p *= i;
}

Elágazások összevonása

Azonos feltételű elágazások összevonhatóak, ha függetlenek egymástól.

Függvény behelyettesítése

Függvényhívás helyére egy egyszerű függvény képlete behelyettesíthető.

Utasítás kiemelése ciklusból

A ciklus magjából a ciklustól független utasítások kiemelhetők.

float[] hi = {1,2,3,4,5,6,7,8,9,10};
float r = 10;
float s = 0;
for(int i = 0; i < 10; i++){
    s += hi[i]*r*r*pi;
}

u.a.

float[] hi = {1,2,3,4,5,6,7,8,9,10};
float r = 10;
float s = 0;
float rpi = r*r*pi;
for(int i = 0; i < 10; i++){
    s += hi[i]*rpi;
}