Tampilkan postingan dengan label algoritma. Tampilkan semua postingan
Tampilkan postingan dengan label algoritma. Tampilkan semua postingan

Senin, 30 Mei 2011

turbo pascal 1.5 - deret kelipatan x yang kurang dari y


program deretkelipatanxyangkurangdariy;
uses wincrt;

var
     x,y,i:integer;

begin
     write('X     = ');readln(x);
     write('Y     = ');readln(y);
     write('Deret = ');
     i:=x;
     while x<y do
     begin
          write(x,' ');
          x:=x+i;
     end;
end.

Rabu, 11 Mei 2011

turbo pascal 1.5 - larik 1

program larikduadimensi;
uses wincrt;
type
    tipenama=array[1..100] of string;
    tipenilai=array[1..100] of integer;

var
     i,n,maks,min,jum:integer;
     nama:tipenama;
     nilai:tipenilai;
     nama1,nama2:string;
     ratarata:real;
begin
     write('berapa jumlah data yang ingin diinputkan : ');readln(n);
     clrscr;
     writeln('======================================================');
     writeln('   no          nama                     nilai akhir   ');
     writeln('======================================================');

     for i:=1 to n do
     writeln('   ',i:2,'   ..........................         .....    ');

     writeln('======================================================');
     writeln('nilai terbesar  :          oleh ');
     writeln('nilai terendah  :          oleh ');
     writeln('nilai rata-rata : ');

     jum:=0;
     maks:=0;
     min:=100;
     for i:=1 to n do
     begin
          gotoxy(9,3+i);writeln('                          ');
          gotoxy(9,3+i);readln(nama[i]);
          gotoxy(44,3+i);writeln('     ');
          gotoxy(45,3+i);readln(nilai[i]);
          if maks             begin
             maks:=nilai[i];
             nama1:=nama[i];
             end;
          if min&gt;nilai[i] then
             begin
             min:=nilai[i];
             nama2:=nama[i];
             end;
          jum:=jum+nilai[i];
     end;
     ratarata:=jum/n;
     gotoxy(20,5+n);writeln(maks);
     gotoxy(33,5+n);writeln(nama1);
     gotoxy(20,6+n);writeln(min);
     gotoxy(33,6+n);writeln(nama2);
     gotoxy(20,7+n);writeln(ratarata:0:2);

end.


Sabtu, 07 Mei 2011

turbo pascal 1.5 - perulangan bersarang 5


program segitigabintang; {program menampilkan karakter bintang menjadi piramyd sebanyak N baris}
uses wincrt;

var
     i,j,N :integer;

begin
     write('berapa jumlah baris bintang : '); readln(N);
     writeln;

     for i:=1 to N do
     write(' ');
     write('*');
     writeln;


     for i:=N downto 2 do
     begin
          for j:=i downto 2 do
          begin
               write(' ');
          end;

          for j:=i to N do
          begin
               write('*');
          end;

          write('*');

          for j:=i to N do
          begin
               write('*');
          end;
          writeln;
     end;

end.

turbo pascal 1.5 - perulangan faktorial


program faktorial; {program menghitung nilai faktorial dari inputan N}
uses wincrt;

var
     i,N,jumlah :integer;

begin
jumlah:=1;
     write('inputkan suatu nilai    : '); readln(N);
     write('faktorial dari ',N,' adalah : ');
     write('1');
     for i:=2 to N do
     begin
          write(' x ',i);
          jumlah:=jumlah*i;
     end;
     write(' = ',jumlah);

end.

turbo pascal 1.5 - perulangan bersarang 4

program segitigabintang;  {program menampilkan karakter bintang sebanyak N baris}
uses wincrt;

var
     i,j,N :integer;

begin
     write(' berapa jumlah baris bintang : '); readln(N);
     writeln;

     for i:=n downto 1 do
     begin
          for j:=1 to i do
          begin
               write(' ');
          end;

          for j:=i to N do
          begin
               write('*');
          end;
          writeln;
     end;

end.

turbo pascal 1.5 - perulangan bersarang 3

program segitigabintang; {program menampilkan karakter bintang sebanyak N baris}
uses wincrt;

var
     i,j,N :integer;

begin
     write(' berapa jumlah baris bintang : '); readln(N);
     writeln;

     for i:=n downto 1 do
     begin
          for j:=i to n do
          begin
               write(' ');
          end;

          for j:=1 to i do
          begin
               write('*');
          end;
          writeln;
     end;

end.

turbo pascal 1.5 - perulangan bersarang 2


program segitigabintang; {program menampilkan karakter bintang sebanyak N baris}
uses wincrt;

var
     i,j,N :integer;

begin
     write('berapa jumlah baris bintang : '); readln(N);
     writeln;

     for i:=n downto 1 do
     begin
          for j:=1 to i do
          begin
               write('*');
          end;
          writeln;
     end;

end.

turbo pascal 1.5 - perulangan bersarang



program segitigabintang; {program menampilkan karakter bintang sebanyak N baris}
uses wincrt;

var
     i,j,N :integer;

begin
     write('berapa jumlah baris bintang : '); readln(N);
     writeln;

     for i:=1 to N do
     begin
          for j:=1 to i do
          begin
               write('*');
          end;
          writeln;
     end;

end.

Microprosesor AVR Studio 4 - Contoh Program 3

Operasi Logika dan Pergeseran



.include"8535def.inc"
.org 0x0000
rjmp utama

utama:

ldi r16,low(RAMEND)
out spl,r16
ldi r16,high(RAMEND)
out sph,r16

ldi r16,0xff
out ddra,r16
ldi r16,0x00
out ddrc,r16

ulang:
    in r16,pinc

    mov r17,r16
    swap r17
    lsl r17
    lsl r17
    lsl r17
    andi r17,0b10000000

    mov r18,r16
    swap r18
    lsl r18
    andi r18,0b01000000

    mov r19,r16
    swap r19
    lsr r19
    andi r19,0b00100000

    mov r20,r16
    lsl r20
    andi r20,0b00010000

    mov r21,r16
    lsr r21
    andi r21,0b00001000

    mov r22,r16
    swap r22
    lsl r22
    andi r22,0b00000100

    mov r23,r16
    swap r23
    lsr r23
    andi r23,0b00000010

    mov r24,r16
    swap r24
    lsr r24
    lsr r24
    lsr r24
    andi r24,0b00000001

    or r17,r18
    or r17,r19
    or r17,r20
    or r17,r21
    or r17,r22
    or r17,r23
    or r17,r24
    out porta,r17

rjmp ulang



KETERANGAN
Jika Saklar PinC0 ditekan maka Led di PortA7 menyala
Jika Saklar PinC1 ditekan maka Led di PortA6 menyala
Jika Saklar PinC2 ditekan maka Led di PortA5 menyala
Jika Saklar PinC3 ditekan maka Led di PortA4 menyala
Jika Saklar PinC4 ditekan maka Led di PortA3 menyala
Jika Saklar PinC5 ditekan maka Led di PortA2 menyala
Jika Saklar PinC6 ditekan maka Led di PortA1 menyala
Jika Saklar PinC7 ditekan maka Led di PortA0 menyala

Selasa, 26 April 2011

Microprosesor AVR Studio 4 - Contoh Program 2

PROGRAM MENYALAKAN LED DARI LSB KE MSB HINGGA SEMUA LED MENYALA, DAN SETERUSNYA

.include"8535def.inc"
.org 0x0000
rjmp mulai

mulai:

ser r16                ; set register 16 jadi logika 1 semua
out porta, r16
clc                ; carry di set jadi 0

ldi r17,0x01
ldi r18,0x09            ; untuk perulangan


ulangi:
    cp r18, r17        ; bandingkan r18 dengan r17
    brlo mulai        ; juka r18 < r17, maka jump ke mulai (di set kondisi awal)

    out porta, r16        ; salin r16 ke port a (nilai r16 yang menjadikan led menyala)
    lsl r16            ; geser logika 0 ke lsb, dan msb masuk ke carry

    dec r18            ; perulangan berkurang 1

rjmp ulangi            ; jump ke ulangi

akhir:
rjmp akhir


PROGRAM MENYALAKAN LED DARI MSB KE LSB HINGGA SEMUA LED MENYALA, DAN SETERUSNYA

.include"8535def.inc"
.org 0x0000
rjmp mulai

mulai:

out porta, r16
clc                ; carry di set jadi 0

ldi r17,0x01
ldi r18,0x09            ; untuk perulangan
ser r16                ; set register 16 jadi logika 1 semua
out porta, r16
clc                ; carry di set jadi 0

ldi r17,0x01
ldi r18,0x09            ; untuk perulangan


ulangi:
    cp r18, r17        ; bandingkan r18 dengan r17
    brlo mulai        ; juka r18 < r17, maka jump ke mulai (di set kondisi awal)

    out porta, r16        ; salin r16 ke port a (nilai r16 yang menjadikan led menyala)
    lsr r16            ; geser logika 0 ke lsb, dan msb masuk ke carry

    dec r18            ; perulangan berkurang 1

rjmp ulangi            ; jump ke ulangi

akhir:
rjmp akhir


PROGRAM MEMATIKAN LED DARI LSB DAN BERPINDAH HINGGA KE MSB, DAN SETERUSNYA

.include"8535def.inc"
.org 0x0000
rjmp mulai

mulai:

ldi r16, 0x00            ; set register 16 jadi logika 0 semua
out porta, r16            ; menyalin r16 kle porta (berarti semua porta dalam keadanaan menyala)
sec                ; set carry menjadi berlogika 1
ulangi:

    out porta, r16        ; salin r16 ke port a (nilai r16 yang menjadikan led menyala)
    rol r16            ; rotasi logika nilai carry ke lsb, dan msb masuk ke carry
    dec r18            ; perulangan berkurang 1

rjmp ulangi            ; jump ke ulangi

akhir:
rjmp akhir


PROGRAM MEMATIKAN LED DARI MSB DAN BERPINDAH KE LSB, DAN SETERUSNYA

.include"8535def.inc"
.org 0x0000
rjmp mulai

mulai:

ldi r16, 0x00            ; set register 16 jadi logika 0 semua
out porta, r16            ; menyalin r16 kle porta (berarti semua porta dalam keadanaan menyala)
sec                ; set carry menjadi berlogika 1
ulangi:

    out porta, r16        ; salin r16 ke port a (nilai r16 yang menjadikan led menyala)
    roR r16            ; rotasi logika nilai carry ke lsb, dan msb masuk ke carry
    dec r18            ; perulangan berkurang 1

rjmp ulangi            ; jump ke ulangi

akhir:
rjmp akhir

PROGRAM MENYALAKAN LED DARI LSB DAN BERPINDAH HINGGA KE MSB DAN SETERUSNYA

.include"8535def.inc"
.org 0x0000
rjmp mulai

mulai:

ldi r16, 0xFF            ; set register 16 jadi logika 1 semua
out porta, r16            ; menyalin r16 kle porta (berarti semua porta dalam keadanaan menyala)
clc                ; set carry menjadi berlogika 1

ulangi:
    out porta, r16        ; salin r16 ke port a (nilai r16 yang menjadikan led menyala)
    roL r16            ; rotasi logika nilai carry ke lsb, dan msb masuk ke carry
    dec r18            ; perulangan berkurang 1

rjmp ulangi            ; jump ke ulangi

akhir:
rjmp akhir


PROGRAM MENYALAKAN LED DARI MSB DAN BERPINDAH HINGGA KE LSB DAN SETERUSNYA

.include"8535def.inc"
.org 0x0000
rjmp mulai

mulai:

ldi r16, 0xFF            ; set register 16 jadi logika 1 semua
out porta, r16            ; menyalin r16 kle porta (berarti semua porta dalam keadanaan menyala)
clc                ; set carry menjadi berlogika 1
ulangi:

    out porta, r16        ; salin r16 ke port a (nilai r16 yang menjadikan led menyala)
    roR r16            ; rotasi logika nilai carry ke lsb, dan msb masuk ke carry
    dec r18            ; perulangan berkurang 1

rjmp ulangi            ; jump ke ulangi

akhir:
rjmp akhir

Microprosesor AVR Studio 4 - Contoh Program

.include"8535def.inc"
.org 0x0000
rjmp pertama

pertama:
ldi r16,0xff
ldi r17,0x00
out portb,r17
out portc,r16
out portd,r17

in r18,porta
cp r18,r16
breq set1

cp r18,r17
breq set2

set3:
in r19,porta
cp r19,r16
breq set1
cp r19, r17
breq set2
in r18,porta
out portd, r18
rjmp set3

set1:
out portd,r17
out portb,r18
in r18,porta
cp r18,r16
brne pertama
rjmp set1

set2:
out portd,r17
out portc,r18
in r18,porta
cp r18,r17
brne pertama

rjmp set2

akhir:
rjmp akhir


Penjelasan.
  1. input dengan melihat keadaan PortA, apakah keadaannya high semua, low semua, atau tidak kedua duanya.
  2. jika PortA dalam keadaan High semua, maka kondisi di PortA akan disalin ke PortB
  3. jika PortA dalam keadaan Low semua, maka kondisi di PortA akan disalin ke PortC
  4. jika keadaan pada no.2 dan no.3 tidak terpenuhi, maka kondisi di PortA akan disalin ke PortD

  • karena PortB akan diberikan nilai PortA yang berlogika High, maka sebelumnya kondisi default untuk PortB adalah Low
  • karena PortC akan diberikan nilai PortA yang berlogika Low, maka sebelumnya kondisi default untuk PortC adalah High
  • untuk PortD, diberikan kondisi default Low.