Ybadoo - Soluções em Software Livre
Tutoriais
Compiladores

Desenvolva um programa na linguagem de programação SIMPLE, que apresente a média de 2 * k, sendo k = 1, 2, ..., n. O número de termos será fornecido pelo usuário, devendo ser um valor inteiro e positivo. Por exemplo, caso o número de termos fornecido pelo usuário seja 5, o programa deverá apresentar como resposta o valor 6, ou seja, ((2 * 1) + (2 * 2) + (2 * 3) + (2 * 4) + (2 * 5)) / 5. Caso o usuário forneça um valor inválido para o número de termos, o programa deverá apresentar como resposta o valor -1. Posteriormente, apresente a identificação de todos os tokens utilizados na elaboração do programa.

10 input n
15 if n > 0 goto 30
20 let m = -1
25 goto 65
30 let s = 0
35 let i = 1
40 if i > n goto 60
45 let s = s + 2 * i
50 let i = i + 1
55 goto 40
60 let m = s / n
65 print m
70 end
Tabela de símbolos
CódigoValor CódigoValor CódigoValor
0010 01n 0215
030 0430 0520
06m 071 0825
0965 10s 1135
12i 1340 1460
1545 162 1750
1855 1970   
[51, 00, (01, 01)] // 10
[62, , (01, 04)] // input
[41, 01, (01, 10)] // n
[10, , (01, 11)] // ENTER
[51, 02, (02, 01)] // 15
[66, , (02, 04)] // if
[41, 01, (02, 07)] // n
[33, , (02, 09)] // >
[51, 03, (02, 11)] // 0
[65, , (02, 13)] // goto
[51, 04, (02, 18)] // 30
[10, , (02, 20)] // ENTER
[51, 05, (03, 01)] // 20
[63, , (03, 04)] // let
[41, 06, (03, 08)] // m
[11, , (03, 10)] // =
[22, , (03, 12)] // -
[51, 07, (03, 13)] // 1
[10, , (03, 14)] // ENTER
[51, 08, (04, 01)] // 25
[65, , (04, 04)] // goto
[51, 09, (04, 09)] // 70
[10, , (04, 11)] // ENTER
[51, 04, (05, 01)] // 30
[63, , (05, 04)] // let
[41, 10, (05, 08)] // s
[11, , (05, 10)] // =
[51, 03, (05, 12)] // 0
[10, , (05, 13)] // ENTER
[51, 11, (06, 01)] // 35
[63, , (06, 04)] // let
[41, 12, (06, 08)] // i
[11, , (06, 10)] // =
[51, 07, (06, 12)] // 1
[10, , (06, 13)] // ENTER
[51, 13, (07, 01)] // 40
[66, , (07, 04)] // let
[41, 12, (07, 07)] // i
[33, , (07, 09)] // >
[41, 01, (07, 11)] // n
[65, , (07, 13)] // goto
[51, 14, (07, 18)] // 65
[10, , (07, 20)] // ENTER
[51, 15, (08, 01)] // 45
[63, , (08, 04)] // let
[41, 10, (08, 08)] // s
[11, , (08, 10)] // =
[41, 10, (08, 12)] // s
[21, , (08, 14)] // +
[51, 16, (08, 16)] // s
[23, , (08, 18)] // *
[41, 12, (08, 20)] // i
[10, , (08, 21)] // ENTER
[51, 17, (09, 01)] // 50
[63, , (09, 04)] // let
[41, 12, (09, 08)] // i
[11, , (09, 10)] // =
[41, 12, (09, 12)] // i
[21, , (09, 14)] // +
[51, 07, (09, 16)] // 1
[10, , (09, 17)] // ENTER
[51, 18, (10, 01)] // 55
[65, , (10, 04)] // goto
[51, 13, (10, 09)] // 40
[10, , (10, 11)] // ENTER
[51, 14, (11, 01)] // 60
[63, , (11, 04)] // let
[41, 06, (11, 08)] // m
[11, , (11, 10)] // =
[41, 10, (11, 12)] // s
[24, , (11, 14)] // /
[41, 01, (11, 16)] // n
[10, , (11, 17)] // ENTER
[51, 09, (12, 01)] // 65
[64, , (12, 04)] // print
[41, 06, (12, 10)] // m
[10, , (12, 11)] // ENTER
[51, 19, (13, 01)] // 70
[67, , (13, 04)] // end
[03, , (13, 07)] // ETF