Baixe o app para aproveitar ainda mais
Prévia do material em texto
DCC107 Laboratório de Programação II Comparativo Pseudolinguagem X Linguagem C Pseudolinguagem C inteiro int int long real float double lógico log int caráter caracter car char Tipos de dados 2 Pseudolinguagem C Adição + + Subtração - - Multiplicação * * Divisão / / Divisão inteira div / Resto da divisão mod % Operadores aritméticos 3 Pseudolinguagem C Menor < < Maior > > Menor ou igual ≤ <= Maior ou igual ≥ >= Igual = == Diferente ≠ != Operadores de comparação 4 Pseudolinguagem C Conjunção e ∧ && Disjunção ou ∨ || Disjunção exclusiva xou ⊕ Negação não ¬ ! Operadores lógicos 5 Pseudolinguagem C var ← expressão; var = expressão; Comando de atribuição 6 Pseudolinguagem C Exponenciação X ** N pow(X, N) Raiz quadrada raiz(X) sqrt(X) Módulo abs(X) abs(X) Algumas funções matemáticas 7 Pseudolinguagem C Entrada leia scanf Saída imprima printf Entrada e saída 8 Pseudolinguagem C Alternativa simples se condição então C; fim-se; if (condição) { C; } Estruturas de controle 9 Pseudolinguagem C Alternativa dupla se condição então C1; senão C2; fim-se; if (condição) { C1; } else { C2; } Estruturas de controle 10 Pseudolinguagem C Alternativa múltipla escolha escolha expressão caso V1: C1; caso V2: C2; ... caso Vn: Cn; senão: Cn+1; fim-escolha; switch(expressão) { case V1: C1; break; case V2: C2; break; ... case Vn: Cn; break; default: Cn+1; } Estruturas de controle 11 Pseudolinguagem C Repetição com teste no início enquanto condição faça C; fim-enquanto; while(condição) { C; } Estruturas de controle 12 Pseudolinguagem C Repetição com teste no final repita C; até condição; do { C; } while(condição); Estruturas de controle 13 ATENÇÃO: Esta condição é a negação desta condição Ex.: até X < 10 while(X >= 10) Pseudolinguagem C Repetição com variável de controle para V de I até L passo P faça C; fim-para; for(V=I;V<=L;V=V+P) { C; } Estruturas de controle 14 Pseudolinguagem C procedimento nome (parâmetros) início declaração de variáveis; C1; C2; ... Cn; fim-procedimento; void nome(parâmetros) { declaração de variáveis; C1; C2; ... Cn; } Procedimentos e funções 15 • Procedimento: declaração Pseudolinguagem C função nome (parâmetros) : tipo início declaração de variáveis; C1; C2; ... Cn; nome ← expressão; fim-função; tipo nome(parâmetros) { declaração de variáveis; C1; C2; ... Cn; return expressão; } Procedimentos e funções 16 • Função: declaração A chamada a procedimentos e funções é realizada da mesma forma em pseudolinguagem e em C. Procedimento: nome (argumentos); Função: ... nome (argumentos) ... A função deve sempre ser chamada do lado direito da atribuição, sozinha ou dentro de alguma expressão Procedimentos e funções 17 Pseudolinguagem C Vetor nome: vet [I..N] tipo; tipo nome[N]; Matriz nome: mat[I..N, J..M] tipo; tipo nome[N][M]; Vetores e matrizes (arrays) 18 Em pseudolinguagem, existe índice inicial e final (ex.: mat[-2..7, 4..9]) Em C, o índice inicial é sempre 0 e o índice final é N-1 Estruturas ou registros 19 Pseudolinguagem C nome_var: reg (tipo1: campo1, ... , tipon: campon); struct nome_struct { tipo1: campo1; ... tipon: campon; }; struct nome_struct nome_var; Definição de novos tipos 20 Pseudolinguagem C tipo nome_tipo = definição; typedef definição nome_tipo; Exemplos tipo valormes = vet [0..11] real; typedef float[12] valormes; tipo X = vet [1..6] int; typedef int[6] X; tipo INSC = reg (int: D, car: T); struct s_insc { int D; int T; }; typedef struct s_insc INSC; Definição de novos tipos 21 Pseudolinguagem C tipo nome_tipo = definição; typedef definição nome_tipo; Exemplos tipo CADEIA = seq car; typedef char[TAM] CADEIA; tipo R = ref int; typedef int* R; tipo RC = ref CADEIA; typedef CADEIA* RC; No caso da cadeia de caracteres, em C é preciso definir um tamanho máximo pra cadeia. Para definir cadeias de tamanho variável, precisamos usar alocação dinâmica de memória (malloc e free) Exemplo 22 Pseudolinguagem tipo CADASTRO = vet [1..1000] PESSOA; tipo PESSOA = reg (NOME: sobrenome, int: idade, END: endereco); tipo NOME = vet [1..30] car; tipo END = vet [1..40] car; tipo RCAD = ref CADASTRO; Declaração de uma variável RCAD: cad; Como traduzir pra C?? Em C, a ordem de definição dos tipos importa Um tipo deve sempre ser definido antes de sua utilização na definição de um outro tipo Começamos definindo os tipos que dependem somente de tipos primitivos (int, char, float...) A seguir, usamos os novos tipos para definir os tipos mais complexos Exemplo 23 Exemplo 24 Pseudolinguagem tipo CADASTRO = vet [1..1000] PESSOA; tipo PESSOA = reg (NOME: sobrenome, int: idade, END: endereco); tipo NOME = vet [1..30] car; tipo END = vet [1..40] car; tipo RCAD = ref CADASTRO; Declaração de uma variável RCAD: cad; cad é do tipo RCAD: uma referência para CADASTRO Exemplo 25 Pseudolinguagem tipo CADASTRO = vet [1..1000] PESSOA; tipo PESSOA = reg (NOME: sobrenome, int: idade, END: endereco); tipo NOME = vet [1..30] car; tipo END = vet [1..40] car; tipo RCAD = ref CADASTRO; Declaração de uma variável RCAD: cad; CADASTRO, por sua vez, é um vetor do tipo PESSOA Exemplo 26 Pseudolinguagem tipo CADASTRO = vet [1..1000] PESSOA; tipo PESSOA = reg (NOME: sobrenome, int: idade, END: endereco); tipo NOME = vet [1..30] car; tipo END = vet [1..40] car; tipo RCAD = ref CADASTRO; Declaração de uma variável RCAD: cad; PESSOA, por sua vez, é um registro com 3 campos • um do tipo NOME • um do tipo int (TIPO PRIMITIVO) • um do tipo END Exemplo 27 Pseudolinguagem tipo CADASTRO = vet [1..1000] PESSOA; tipo PESSOA = reg (NOME: sobrenome, int: idade, END: endereco); tipo NOME = vet [1..30] car; tipo END = vet [1..40] car; tipo RCAD = ref CADASTRO; Declaração de uma variável RCAD: cad; NOME é um vetor de caracteres (TIPO PRIMITIVO) Exemplo 28 Pseudolinguagem tipo CADASTRO = vet [1..1000] PESSOA; tipo PESSOA = reg (NOME: sobrenome, int: idade, END: endereco); tipo NOME = vet [1..30] car; tipo END = vet [1..40] car; tipo RCAD = ref CADASTRO; Declaração de uma variável RCAD: cad; END também é um vetor de caracteres (TIPO PRIMITIVO) NOME e END são os primeiros a serem definidos Não dependem de nenhum tipo estruturado A seguir definimos PESSOA, que depende de NOME e END Finalmente, definimos CADASTRO, que depende de PESSOA, e em seguida RCAD, que depende de CADASTRO Exemplo 29 Exemplo 30 C typedef char[30] NOME; typedef char[40] END; typedef struct s_pessoa { NOME sobrenome; int idade; END endereco; } PESSOA; typedef PESSOA[1000] CADASTRO; typedef CADASTRO* RCAD; Declaração de uma variável RCAD cad;
Compartilhar