Sei sulla pagina 1di 36

Robert Chatley

Linguagem Kenya
1 -A Linguagem Kenya - Histrico Toda linguagem de programao precisa de um nome. Como o nome JAVA diz respeito a uma cidade produtora de caf, o autor da linguagem KENYA escolheu este nome, que tambm um nome de caf, por achar mais light do que o JAVA e, desta forma serviria como uma introduo antes de enfrentar a dificuldade do JAVA. Kenya uma linguagem de programao para ensinar programao. O ambiente Kenya converte automaticamente um cdigo escrito em Kenya para Java. Kenya foi projetada e desenvolvida por Robert Chatley com ajuda de Susan Eisenbach. A maioria do trabalho no desenvolvimento da verso2 foi feita por Alan Chan. Ela est sendo mantida por Christoper Anderson. O logotipo de autoria de Astok Argent-katwala.

2 Ambiente Kenya
Kenya roda nas plataformas Windows e Linux e necessrio que a linguagem Java esteja instalado em sua mquina, pois foi escrito em Java.

3- Inicializando Kenya
Aps instalar a linguagem Kenya, crie um atalho na rea de trabalho do arquivo run.bat para que seja inicializada e aberta a janela principal, onde encontraremos o editor, com numerao de linhas e uma barra de ferramentas como explica tambm abaixo.

4 - A Estrutura de um Programa
O conjunto de instrues do programa principal dever estar compreendido na seguinte estrutura: Void main() { } Todo programa escrito na linguagem Kenya tem a extenso .K Quando pedimos para interpretar algum programa, a funo main(principal) localizada, pois a partir dela que as funes, inclusive as que voc criou, sero chamadas. A palavra void que antecede main significa que no existir nenhum tipo de retorno. Todos os comandos sero finalizados com ; (ponto e vrgula). A linguagem case sensitive, isto , diferencia letras maisculas de minsculas, portanto ateno com as sintaxes.

5 Comentrios
So explicaes colocadas em pontos estratgicos, visando dar maior clareza em determinados trechos e que no so visualizadas na execuo. // Usado para uma nica linha /**/ Usado para envolver um conjunto de linhas

6 As Funes de Sada
A linguagem Kenya apresenta duas funes para mostrarmos os resultados na tela: 1 - print(); A funo pint() no faz retorno de carro, isto , no desloca o cursor para a Primeira coluna da linha seguinte. Os argumentos devero ficar entre parnteses e as Strings(conjunto de caracteres) devero ficar entre aspas, mas se for um nico caracter, ficar entre Plicas(aspas simples). Exemplo 1:

Exemplo 2:

2 - A funo println(); Esta funo faz retorno de carro, isto , desloca o cursor para a primeira coluna da linha seguinte. Exemplo 1:

Visualize as sadas dos seguintes programas: void main() void main() { println(UNESA); { println(UNESA); print(Programao I); print(Kenya ); println(Kenya Java); println(- Java); } print(Programacao I); } Caracteres usados com as funes de sada(seqncia de escape): \n Desloca o cursor para a primeira coluna da linha seguinte \t \\ Desloca o cursor para o incio da prxima zona. Cada zona tem 8 colunas e so pr-fixadas: 1 9 17 25 33 41 49 57 73 (Windows) Mostra a contra-barra na tela

Observao: Embora sejam dois caracteres, eles so entendidos com um, logo viro 4

Entre aspas simples. + Quando tivermos vrios elementos para serem impressos, deveremos usar o operador + (mais) para concaten-los

Exemplo usando \n:

Exemplo usando \t:

Exemplo usando \\ e +:

7 - Tipos Primitivos de Dados


A linguagem Kenya tem os seguintes tipos de dados primitivos: boolean - Tipo de dado lgico que s pode assumir dois valores: true e false char - Tipo de dado que permite um caracter entre plicas: S`, @` , etc. 5

double - Tipo de dado numrico do tipo ponto flutuante; 3.0, -8.76, etc. (7 dgitos no mximo na parte inteira, e at16 na parte fracionria) int Tipo de dado numrico inteiros: 23, -1234, etc. (10 dgitos no mximo) String Tipo de dado formado por um conjunto de caracteres entre aspas: CURSO DE ENGENHARIA DE PRODUO, UNESA, etc.

8 Operadores, Funes e expresses


8.1 - Operadores Bsicos Operador + * / % ^ Significado Adio Subtrao Multiplicao Diviso Resto da Diviso (inteiro ou real) Potenciao Radiciao -> radicando ^(1.0/indice) Exemplo 2+3 14 - 5 4*3 20 /3 ou 20 / 3.5 30 % 4 ou 30 % 4.5 2^5 256 ^(1.0/2)

Observaes: O operador de / trabalha da seguinte maneira: se o dividendo e o divisor forem inteiros ento o quociente ser inteiro. Se voc desejar uma diviso real, um dos operandos dever se tornar real, acrescentando .0 (ponto zero) se os dois forem constantes. Exemplo1:

8.2 - Funes Matemticas Exp(...) Log(...) Sqrt(...)


Calcula a potncia do nmero neperiano Calcula o logaritmo na base neperiana Para se calcular o logaritmo em qualquer base: log( logaritmando ) / log(base) Calcula a raiz quadrada Exp(2) e=2.718281824459045 Log(8) Log(64) / log(8) Sqrt(34)

Para as funes sin, cos e tan voc precisar converter graus para radianos entre parnteses: Nome da funo (ang * 3.14159265 / 180) sin(...) cos(...) tan(...) Calcula o seno cujo ngulo est em rd Sin(30 * 3.14159265 / 180) Calcula o co-seno cujo ngulo est em rd cos(30 * 3.14159265 / 180) Calcula o tangente cujo ngulo est em rd tan(30 * 3.14159265 / 180)

Para as funes asin, acos e atan voc precisar converter graus, pois o resultado dado em radianos : Nome da funo (v alor) / 3.14159265 * 180 asin(...) Calcula o ngulo cujo seno dado Asin(0.5) / 3.14159265 * 180 acos(...) Calcula o ngulo cujo co-seno dado Acos(0.5) / 3.14159265 * 180 atan(...) Calcula o ngulo cujo tangente dada Atan(0.5) / 3.14159265 * 180

As trs funes abaixo fazem um arredondamento de formas diferentes round(...) Faz um arredondamento matemtico Roun(3.5) floor(...) Arredonda para baixo Floor(3.5) ceil(...) Arredonda para cima Ceil(3.5) random(...) Gera um nmero aleatrio entre 0 e 1 Random( ) no tem argumento abs(...) Retorna o nmero sem sinal Abs(-8)

Exemplo1:

Exemplo2:

Exemplo3: Faremos agora um estudo mais detalhado para que saibamos como usar a funo random(), tendo em vista que ela gera um nmero aleatrio entre 0 e 1 e, na maioria das vezes, no ser o intervalo desejado. Teremos que levar em considerao as trs funes de arredondamento para cada caso, combinando com a funo random() e criando uma expresso ora s com o valor final, ora com o nmero de elementos do intervalo e o valor inicial do intervalo. Caso 1: O intervalo desejado de 0 at n

Consideraes: No se preocupe com alguns comandos usados, pois o objetivo era fazer com que fossem gerados vrios nmeros no intervalo desejado. Usamos round(...) porque esta funo faz arredondamento matemtico e teramos a possibilidade de aparecer tanto o 0 como o 6. Se random(...) gerasse um nmero muito prximo de 0, mesmo multiplicado por 6, round(...) levaria para 0 e se gerasse 0,999999999999, mesmo multiplicado por 6, mas round(...) levaria para 6.

Caso 2: O intervalo desejado de 1 at n

Consideraes: No se preocupe com alguns comandos usados, pois o objetivo era fazer com que fossem gerados vrios nmeros no intervalo desejado. Usamos ceil(...) porque esta funo sempre arredonda para cima e no teramos a possibilidade de aparecer o 0. Se random() gerasse um nmero muito prximo de 0, ceil(...) levaria para 1.

Caso 3: O intervalo desejado de n1 at n2

Consideraes: No se preocupe com alguns comandos usados, pois o objetivo era fazer com que fossem gerados vrios nmeros no intervalo desejado. O primeiro passo descobrir quantos nmeros tem o intervalo: (n2 n1)+1. No nosso exemplo: (9 4) + 1 = 6. O segundo passo verificar o limite inferior do intervalo. No nosso exemplo : 4. Usamos floor(...) porque esta funo sempre arredonda para baixo. Qualquer nmero gerado por random() que multiplicado por 6 for menor que 1, floor(...) levar para o que somado a 4, dar 4. Se gerado 0,99999999999, multiplicado por 6, no dar o nmero 6, logo floor(...) levar para 5 que somado a 4, dar 9. 8.3 - Operadores Relacionais 9

Operadores == != < > <= >=

Significado igual diferente menor maior menor ou igual maior ou igual

Exemplo 2 + 2 == 4 ou a` == b` S` != s` 5<6 3*2>5 2 <= 5 7 >= 3 + 2

A resposta de uma expresso que usa operadores relacionais ser: true (V) ou False (F) Exemplo1:

Consideraes: Os operadores relacionais podem ser usados com qualquer um dos cinco tipos de dados. Quando os dados so dos tipos Char ou String, a comparao feita tendo em vista o cdigo ASCII dos caracteres. (algarismos 0-9: 48-57, letras maisculas: 65-90, letras maisculas: 97-122. etc). 8.4 - Expresses lgicas Operadores && ou and II ou or ! Ou not xor true false Significado E( todas as expresses verdadeiras) Ou (pelo menos uma verdadeira) No (nega a expresso) Exclusivo or(uma ou outra verdadeira) verdadeiro falso Exemplo 2 + 2 == 4 ou a` == b` S`!= s` 5<6 3*2>5 2 <= 5 7 >= 3 + 2

Exemplo1:

10

9 - Usando Variveis As variveis so lugares na MP(Memria Principal) e so criadas para armazenar dados que sero manipulados no programa, logo, como a linguagem Kenya trabalha com tipos de dados, elas podero ser: booleanas, caracter, real de preciso dupla, inteira e strings. Elas precisam ser declaradas antes de serem usadas. S pode declarar uma varivel por vez. O nome da varivel dever comear por uma letra e s poder ter letra ou algarismos a partir do segundo caracter. Toda varivel dever ser declarada de acordo com o tipo de dado que ir armazenar. Como declarar uma varivel Tipo int double char String boolean nome da varivel; idade; alt; sexo; nome; resp;

Segundo a filosofia Java, as variveis podem ser declaradas em qualquer ponto do programa desde que sigam o segundo critrio. As variveis precisam ser inicializadas, isto , no podero ser manipuladas se no tiverem um valor. 9.1 Comando de atribuio Atribui um valor a uma varivel. Sintaxe: nome da varivel = contedo; Idade = 15; Alt = 1.76; Sexo = m`; Nome = Pedro Henrique; Resp = true; permitido declarar e inicializar ao mesmo tempo uma varivel.

11

Alguns exemplos de atribuies: cont = 0; //atribui 0 varivel cont cont = cont + 1 ; /* somado 1 ao contedo de cont e o valor final volta a ser armazenado em cont */ 10 - Definies de Tipos pelo Usurio

x = a + b; /* soma o contedo de a com o contedo de b e armazena em x */ soma = soma + num; /* os valores de soma e num so somados e o resultado armazenado em soma */

Na linguagem Kenya possvel definir uma classe(registro ou estrutura em outras linguagens) para encapsular um grupo de variveis que tm algo em comum (atributos de um objeto. Diriam os programadores das linguagens orientadas a objetos). A classe na linguage Kenya um struc(C) ou Record(Pascal). A classe declarada antes do main(). Declarando uma classe: Classe nome da classe { declarao das variveis; } Exemplo: Nome da classe: Pessoa Variveis(Atributos): nome e perodo Classe Pessoa { String nome; int periodo; }

12

Uma vez declarada a classe antes do main(), voc estar habilitado para declarar Variveis com este tipo. Classe pessoa { String nome; int periodo; } Void main() { Pessoa aluno;

Para acessar os campos das classes, use o operador; aluno.nome = readString(); aluno.periodo = readInt();

11 - As Funes de Entrada A linguagem Kenya disponibiliza quatro funes para entrada de dados (exceto para Boolean() via teclado de acordo com o tipo que est sendo esperado. readInt() entrada de dados para varivel numrica tipo int readDouble() entrada de dados para varivel numrica tipo double readString() entrada de dados para varivel numrica tipo string readChar() entrada de dados para varivel numrica tipo char 1- Aps a varivel ter sido declarado, usando o comando de atribuio: Nome da varivel = nomefuncao() idade = readInt(); alt = readDouble(); sexo = readChar(); // sexo = read() nome = readString(); 13

Observaes: 1- na entrada de dados do tipo String, s sero armazenados os caracteres que aparecem antes do primeiro espao. Esta forma tende a ser mais usada, pois sempre imprimimos alguma mensagem antes para ajudar o usurio. 2- Na entrada de dados do tipo char, no deveremos usar a funo readchar() se antes dela tiver havido qualquer tipo de entrada, pois ela retorna o caracter de retorno de carro e no funciona corretamente. A soluo seria usar a funo: Read(). 2 - Na declarao: Tipo Int Double Char String Exemplo 1: nome da varivel = nomefuncao() idade = readInt(); alt = readDouble(); sexo = readChar(); nome = readString();

12 Comandos Condicionais Na programao, um dos pontos importantes capacidade do programa tomar uma deciso. 12.1 Instruo if A estrutura if ... else uma estrutura de controle do Kenya muito fcil de ser usada. Aps o teste, o fluxo poder seguir dois caminhos, isto , se o teste resultar em uma verdade, ser executado o comando ou bloco de comandos que se encontra aps o fecha 14

parnteses do teste, caso contrrio, se existir, ser executado o comando ou bloco de comandos que se encontra aps o comando else. Sintaxe do comando: if (expresso booleana ) { bloco de comandos; } else { bloco de comandos; }

Consideraes: A expresso booleana formada por operandos e operadores relacionais e lgicos. O valor de retorno true ou false. O comando else no precisa estar presente embora, na maioria das vezes, estar. A expresso avaliada e se o retorno for true ento executar o bloco de comandos que se encontra logo abaixo e ignorar todo o bloco do else. Se for false, executar s o bloco de else. Exemplo 1:

Exemplo 2:

15

Note que h parnteses em volta da condio e, ao contrrio de Java, else if no uma sintaxe vlida em Kenya. As chaves devem estar sempre presentes. 12.1.1 Encadeamento de ifs Muitas vezes em nossos programas encontramos situaes que dependendo do valor de uma varivel, o fluxo do programa poder tomar vrios rumos e, nestes casos, faremos uso de encadeamento de ifs (tambm chamado de aninhamento, pois if est dentro de outro if. Esta soluo atende a todos os tipos de variveis e necessrio total domnio do seu uso. Exemplo 1:

12.2 Instruo switch 16

A estrutura switch ...case, tambm conhecida como alternativa de mltiplas escolhas. uma estrutura que simplifica nossos programas no uso de deciso de mltiplos blocos quando a expresso de controle (a condio) envolve tipos int ou char. Execuo: A expresso avaliada e o fluxo desviado para o conjunto cujo rtulo igual ao resultado da expresso. O bloco abaixo do rtulo executado. Se o valor da expresso no for igual a nenhum rtulo, o bloco do default executado. Voc no obrigado a colocar o rtulo do default. Por que usar break? Normalmente, em outras linguagens de programao, aps a avaliao da expresso e a execuo do bloco correspondente, o fluxo do programa passa para a prxima instruo, ignorando todos os outros rtulos. Na linguagem Kenya isto no acontece e poder trazer srias conseqncias em seus programas. O uso do break forar a sada do comando switch e a execuo do prximo comando. O uso da instruo swith, quando possvel. Proporciona maior clareza ao programa, pois diminui o nmero de ifs. A sintaxe do comando: Switch (varivel int ou char) { case op1 : { bloco de comandos; break; } case op2 : { bloco de comandos; break; } case opn : { bloco de comandos; break;

Consideraes: O comando break necessrio para a sada imediata do caso. Se ele no existir, ir executar comandos dos outros blocos at achar break ou at final. Voc pode achar isto uma deficincia da estrutura, mas na verdade pode ser vista tambm como uma vantagem como ser mostrada nos exemplos abaixo. Mesmo que um caso no tenha nenhum comando, voc precisa colocar o par de chaves. 17

Exemplo 1:

13 As Estruturas de Repetio A linguagem Kenya disponibiliza duas estruturas de repetio: for e while, evitando que o programador tenha que repetir linhas idnticas s porque deseja que um trecho acontea seguidamente vrias vezes. Em todas as estruturas estar presente pelo menos uma expresso para controlar a repetio. 13.1 A Estrutura do for A estrutura do for a mais simples estrutura de repetio e usada para repetir um ou vrios comandos tantas vezes quanto desejamos. a estrutura mais indicada quando o nmero de repeties for conhecido embora, while tambm possa ser usada. O controle do nmero de repeties feito por uma varivel chamada de varivel contadora e s interrompido quando a varivel ultrapassa o valor limite. A linguagem Kenya apresenta duas sintaxes para esta estrutura: uma parecida com Java e outra que parecida com Pascal/Basic. Sintaxe 1: mais simples e parecida com Pascal/Basic for nome da varivel contadora = valor inicial to valor { bloco de comandos; } valor final step

valor inicial uma expresso de inicializao da varivel contadora. Valor final uma expresso que limita o valor da varivel contadora. Step palavra que antecede o valor do incremento da varivel contadora. bloco de comando um conjunto de instrues a ser executado. 18

int i; for i = 1 to 10 { println( i ); }

int i; for i = 2 to 10 step 2 { println( i ); }

A contagem, aqui mantida em i, podem aumentar ou diminuir com o passo dado. Se os passos no so especificados ento ele definido como sendo 1. ou for decreasing nome da varivel contadora = valor inicial to valor { bloco de comandos; } valor final step

decreasing a palavra que informa que o valor do step negativo. Valor final uma expresso que limita o valor da varivel contadora. Step palavra que antecede o valor do incremento da varivel contadora. bloco de comando um conjunto de instrues a ser executado. int i; for decreasing i = 10 to 2 { println( i ); }

Exemplo 1:

Exemplo 3: A estrutura dor for apresenta a mesma filosofia de uma Progresso Aritmtica(PA), pois temos o valor do primeiro termo (valor inicial), o valor do ltimo termo (valor final), o valor da razo (step valor) e o nmero de termos da srie (nmero de repeties).

19

Exemplo 2:

Sintaxe 2: parecida com Java

for ( varivel = inicializao ; condio ; varivel++ ou varivel -{ bloco de comandos; } inicializao uma expresso que atribui um valor varivel, somente ocorre uma vez. condio uma expresso lgica de controle de repetio que envolve a varivel. varivel++ ou varivelincrementa ou decrementa de 1 a varivel. bloco de comandos um conjunto de instrues a ser executado. permitido nesta sintaxe o uso dos operadores ++ e a diferena desta sintaxe com a linguagem Java que a varivel s pode ser incrementada de 1 ou decrementada de 1.

int i; for ( i = 1 ; i = 10 ; i++ ) { println( i ); } Int i; for ( i = 10; i > 0 ; i ) { println( i ); }

20

Exemplo 1:

13.2 A Estrutura do while A estrutura while uma estrutura poderosa da programao. Muitos programadores fazem uso somente desta estrutura. Ela testa primeiro a condio e poder nem executar o bloco caso a condio seja falso. Logo, a estrutura do while repete enquanto a condio for verdadeira. Sintaxe: while ( condio ) { bloco de comandos; }

a condio uma expresso relacional/lgica que controla a repetio. a varivel presente na condio precisa ter um valor atribudo ou lido para que a condio possa ser avaliada corretamente. a varivel presente na condio precisa ter seu valor alterado antes de fechar a estrutura para que no entre em loop. vamos observar como fica na prtica o uso desta estrutura int i = 1; while ( i <= 10 ) { println( i ); i = i + 1; } a=1 while(a< = 5) a=readInt(); while(!=0) 21

{pintln(a); a=a+1; } Exemplo 1:

{println(a); a=readInt(); } Exemplo 2:

Observao: Quantas vezes temos problemas que pedem para lermos at o fim do arquivo, isto , at quando no tivermos mais dados. A linguagem Kenya disponibiliza um indicador de fim de arquivo que se usado com while ir atender s nossas necessidades. EOF() retorna true se fim do arquivo foi achado, isto , se foi pressionado EOF() ou false, caso contrrio. Exemplo 1:

22

Observao: Experimente entrar com nomes.

14 Funes
14.1 Consideraes Funo um programa com atribuies especficas, simplificando o entendimento do programa principal, proporcionando menores chances de erro e de complexidade. A linguagem Kenya permite o uso de funes. As funes atravs da passagem dos parmetros e do seu nome permitem que sejam retornadas (ou no) valores rotina chamadora e desta forma esses valores podero ser impressos, atribudos a uma varivel, podem servir em operaes aritmticas, modificar o valor passado, entre outras. Por que usamos funes: Podemos dividir e estruturar um programa em partes logicamente coerentes; Podemos testar os trechos em separados; O programador poder criar funes que atendam suas necessidades e com isto criar sua prpria biblioteca, tornando sua programao mais eficiente uma vez que poder fazer uso destas funes em outros programas com a vantagem de j terem sido testadas. O programa fica mais legvel. O uso de funes evita que trechos com a mesma finalidade apaream em vrios locais do programa, diminuindo tambm o cdigo fonte. 14.2 Prottipo de uma funo Toda funo tem um prottipo, isto , informaes sobre o tipo de retorno da funo e tipos dos parmetros. As funes podero ser localizadas antes ou depois da funo principal (main()) na linguagem Kenya. Declarao de uma funo: Tipo Int, doubl, char, void, String e boolean Exemplos: int triplo( int d ) void ast() void resul( char r ) boolean resul( char r ) String resul(char r ) 14.3 Chamada da Funo Identificador Nome da funo (lista de parmetros) ( tipo1 nome1, tipo2 nome2)

23

No devemos ficar preocupados com isso ir acontecer, pois j fizemos uso de vrias funes internas (funes pr-definidas da linguagem Kenya) e, da mesma forma, chamaremos as funes feitas por ns. Quando uma funo chamada, o fluxo de controle desviado para a funo, no momento em que ela ativada no programa principal. Ao terminar a execuo dos comandos da funo, o fluxo de controle retorna ao comando seguinte aquele onde ela foi ativada, exatamente com na figura abaixo:

int triplo(int d) { ... return ...; } void main() { ... < chamada da funo triplo> ... } int triplo(int d) { ... return ...; }

14.4 A Estrutura da Funo Uma funo um bloco contendo incio e fim, sendo identificada por um nome, pelo qual ser referenciada em qualquer parte e em qualquer momento do programa. A funo serve para executar tarefas menores, ordenar, entre outras. Aps executar estas tarefas menores, a funo retorna, ou no, um determinado valor para a funo chamadora. Quando a funo no retorna nada(nulo) usaremos o tipo void, pois sugerido pelo comit de padronoizao ANSI. Dentro da funo, podem ser declaradas variveis. Sintaxe da funo: <tipo de funo> nome da funo (declarao dos parmetros) { <declarao das variveis> // se existirem comandos que formam o corpo da funo return <valor>; /* ou return; ou nada */ } tipo de funo nome da funo parmetros Declarao dos parmetros { Variveis locais : tipo de dado que a funo dar retorno. Pode ser int, double, char, String, boolean ou void : segue as mesmas regras de declarao de variveis : nome das variveis, seguem as mesmas regras de declarao de variveis : declaraes de variveis da funo (tipo e nome) : incio da funo : declarao de variveis que sero utilizadas dentro da funo (tipo e nome) 24

Corpo da funo Return...; }

: seqncia de comandos : o que vai ser retornado para o programa ou no existe : fim da execuo

14.5 Localizao da Funo Ns adotaremos antes da funo principal, mas elas podero ser colocadas depois da funo principal (main).

... funcao1 { ... } ... funcao2(...) { ... } ...funcao3 (...) { ... } void main() { ... }

Apresentaremos vrios exemplos para o uso de funes em nossos programas, mas importante que voc pratique muito e solte sua imaginao para criar suas prprias funes. No pule etapas. Faa todas as listas logo aps o contedo ter sido aprendido. A programao uma atividade solitria, mas muito gratificante. Acredite nisto e invista. Exemplo 1: Funo que no retorna nada e no tem parmetros.

25

Exemplo 2: Funo que no retorna nada e tem parmetro

Exemplo 3: Funo que no retorna nada e tem dois parmetros

Exemplo 4: Funo que retorna o ltimo algarismo de um nmero.

26

27

Exemplo 5: Programa com Menu e funes

28

15 - Array
15.1 Consideraes Apesar de voc ter feito uso de estruturas de repetio que lhe permitiram a entrada de vrios dados, ainda no foi possvel o armazenamento de todos estes dados, pois lhe faltava conhecer a estrutura da matriz. Uma matriz(array) um arranjo de elementos armazenados na MP todos com o mesmo nome. Seguindo a filosofia Java, a array no um ponteiro como em algumas linguagens, so mais seguros, desta forma voc no poder indexar fora da faixa e nem declarar um array com tamanho pr-definido como em outras linguagens. Como a linguagem Kenya, embora no sela orientada a objetos, um subconjunto da linguagem Java, precisaremos fazer de um comando (a linguagem Java chama de construtor) chamado new para criar array. Vrios so os caminhos para declarar matrizes na linguagem Kenya, mas lembrese de que o primeiro elemento da matriz sempre comear por 0 (zero, ou seja linha ou coluna). 15.2.1 Criando uma matriz de uma dimenso (vetor) Tipo [ ] nomeDaMatriz = new tipo[... ]; Tipo: int, double, char, String ou boolean [ ]: nada entre colchetes nomeDaMatriz: obedecendo s mesmas regras das variveis simples new: construtor tipo[ ]: o mesmo tipo colocado no lado esquerdo da declarao, seguido do par de colchetes com o tamanho do vetor 15.2.2 Criando uma matriz de uma dimenso(vetor) Tipo [ ] nomeDaMatriz = new tipo[...][...] Tipo: int, double, char, String ou boolean [ ]: nada entre colchetes nomeDaMatriz: obedecendo s mesmas regras das variveis simples new: construtor tipo[...][...]: o mesmo tipo colocado no lado esquerdo da declarao, seguido de dois pares de colchetes com o nmero de linhas e o nmero de colunas. Exemplos: 1- int [ ] idade = new int[10]; //cria um vetor de 10 elementos indexados de 0 at 9 2- double [ ][ ] mat = new mat[4][4]; //cria uma matriz de 4linhas(0-3) e 4 colunas(0-3)

29

Imagine assim:

0 1 2 3 4 5 6 7 8 9

0 0 1 2 3

Um programa com matrizes implica em vrios trechos para que possa funcionar corretamente. Estes trechos so independentes.

15.3 Armazenando e lendo matriz de uma dimenso (vetor) TRECHO DE ENTRADA DE DADOS normalmente, uma ESTRUTURA DE REPETIO se for a estrutura do for, dever ter o valor final igual a ltima posio do vetor. Se for a estrutura do while, dever ter uma varivel que ser incrementada e nunca poder assumir um valor maior do que a ltima posio do vetor. for(L=0; L < nmero de elementos; L++ { print(...); nomeDoVetor[L] = read...; } O trecho acima poder ser incrementado com outros comandos. Nunca dever ter um comando print ( ou println) tendo como argumento, o nomeDovetor[L]. Poder ter: estrutura de teste, atribuio, outro for, etc. TRECHO DE SADA normalmente, uma ESTRUTURA DE REPETIO se for a estrutura do for, dever ter o valor final igual a ltima posio do vetor. Se for a estrutura do while, dever ter uma varivel que ser incrementada e nunca poder assumir um valor maior do que a ltima posio do vetor. 30

println(\n\nTITULO\n); for(L=0; <nmero de elementos; L++ { println(nomeDoVetor [L]; }

o trecho acima poder ser incrementado de outros comandos. nunca dever ter um comando read... tendo como argumento o nomeDoVetor [L]. poder ter: estrutura de teste, atribuio, outro for, etc. Exemplo 1:

Exemplo 2:

31

Quando se tm dados para mais de um vetor relativos a um objeto, os trechos de entrada so separados? NO DEVEM SER (exemplo1). Quando se tm dados para mais de um vetor que no tm nada em comum, os trechos de entrada so separados? DEVEM SER (exemplo 2). 15.4 Trecho de Ordenao Compare o elemento que est na 1 posio com todos os seguintes a ele. Quando for necessrio, troque de lugar, fazendo uso da varivel aux. Repita esta operao at que tenha feito todas as comparaes. for (L=0; L <totalDeElementos 1; L++) { for( C = L + 1; c <totalDeElementos; C++) { if (nomeDaMatriz[L] = nomeDaMatriz [C]; { aux = nomeDaMatriz [L] nomeDaMatriz [L] = nomeDaMatriz [C] nomeDaMatriz [C] = aux; } } } Observao: Se precisamos ordenar um vetor e se tivermos outros vetores dependentes dele, precisaremos fazer vrios trechos de troca. Isto , repetir o trecho que se encontra no retngulo mais interno. Exemplo 3: 32

15.5 Armazenando e lendo matriz de duas dimenses TRECHO DE ENTRADA DE DADOS normalmente, duas ESTRUTURAS DE REPETIO se for estrutura do for, o primeiro ter o valor igual a ltima posio linha da matriz e o segundo, a ltima posio-coluna da matriz (entrada por linha). se for a estrutura do while, dever ter duas variveis: uma para controlar as linhas e a outra, as colunas. for(L=0; l < nmero de linhas; L++) { for(C=0; C < nmero de linhas; C++) { print(...); nome DaMatriz [L] [C] = read...;} }

trocando no trecho acima as posies dos for, a entrada ser por coluna. O trecho acima poder ser incrementado com outros comandos. Nunca dever ter um comando print( ou println ) tendo como argumento, o nomeDaMatriz[ L ] [ C ]. Poder ter: estrutura teste, atribuio, outro for, etc. TRECHO DE SADA normalmente, duas ESTRUTURAS DE REPETIO se for estrutura do for, o primeiro ter o valor igual a ltima posio linha da matriz e o segundo, a ltima posio-coluna da matriz (entrada por linha). se for a estrutura do while, dever ter duas variveis: uma para controlar as linhas e a outra, as colunas. for ( L=0; L < nmero de linhas; L++) { for (C=0; C < nmero de linhas; C++) { print( nomeDaMatriz [ L ] [ C ] + \t); } println( ); }

o trecho poder ser incrementado de outros comandos. nunca dever ter um comando read..., tendo como argumento o nomeDaMatriz[L][C]. poder ter: estrutura de teste, atribuio, outro for, etc. devido s limitaes da linguagem, a sada dever ser sempre linha. Exemplo 1:

33

Exemplo 2:

34

Lista de exerccios

35

BIBLIOGRAFIA 1. CHATLEY, R. Guia do usurio da Linguagem Kenya. Internet. 2. CHATLEY, R. Tese Internet.

36

Potrebbero piacerti anche