Professional Documents
Culture Documents
Tipos de dados
Pascal
char integer * (-32768 a 32767) shortint * longint * real byte word boolean unsigned int (unsigned um modificador de tipo) unsigned long int (unsigned um modificador de tipo) double extended string (vetor de caracteres) double long double char[] (char nomeString[tamanho])
C
char int (-2.147.483.648 a 2.147.483.647) short int (short um modificador de tipo) long int (long um modificador de tipo) float unsigned char (unsigned um modificador de tipo)
* Na prtica os tipo int de C so maiores em abrangncia que os do Pascal. Ex.: integer de Pascal na verdade tem o tamanho do short int de C.
C
#include <stdio.h> int main(){ /* seu programa */ }
Exemplo em Pascal
program soma; uses crt; var soma: integer; a,b: integer; begin a:=2; b:=3; soma:=a+b; end.
Exemplo em C
#include <stdio.h> int main(){ int soma; int a,b; a=2; b=3; soma=a+b; }
Declarao de variveis
Em Pascal apenas se pode declarar variveis antes do incio do programa principal, ou no incio de funes e procedimentos.
program soma; uses crt; function soma(a,b:integer):integer; var s: integer; begin s:=a+b; soma:=s; end; var s1,s2,x,y: integer; begin s1:=soma(2,3); x:=4; y:=5; if (x<y) then s2:=soma(x,y); end.
C possui o conceito de blocos. A cada incio de bloco pode-se declarar variveis. As variveis tem escopo do bloco.
#include <stdio.h> int soma(int a, int b){ int s; s=a+b; return s; } int main(){ int s1,x,y; s1=soma(2,3); x=4; y=5; if (x<y){ int s2; s2=soma(x,y); } }
Constantes
Pascal
program constante; uses crt; const PI = 3.1415926; var raio: real;
C
#include <stdio.h> #define PI 3.1415926 int main(){ float raio; //seu programa }
Operadores aritmticos
Pascal + * / mod div C + * / (para diviso de float) % / (para diviso de int)
Comandos de atribuio
Pascal: identificador de varivel := expresso;
a:=b+c;
Operadores lgicos
Pascal > >= < <= = <> C > >= < <= == !=
Expresses lgicas
Pascal and or not C && || !
Entrada/sada de dados
O conjunto de procedimentos e funes pr-definidos em Pascal fixo e inclui as funes read, readln, write e writeln, para realizar E/S.
program soma; uses crt; var soma,a,b: integer; begin writeln(Digite 2 numeros:); readln(a); readln(b); soma:=a+b; write(Soma eh: , soma); end.
Em C deve-se usar funes ou procedimentos de uma biblioteca especfica para E/S. A biblioteca mais comum a stdio.h.
#include <stdio.h> int main(){ int soma,a,b; printf(Digite 2 numeros:\n); scanf(%d,&a); //%d %f %c %s scanf(%d,&b); soma=a+b; printf(Soma eh: %d,soma); }
Funes e procedimentos
Funes em pascal so escritas com a palavra chave function e procedimentos com a palavra chave procedure.
program soma; function soma(a,b:integer):integer; var s: integer; begin s:=a+b; soma:=s; end; procedure imprimeInt(i:integer); begin write(i); end; var s1: integer; begin s1:=soma(2,3); imprimeInt(s1); end.
Em C tudo uma funo (incluindo o programa principal) com um tipo de retorno. Para procedimentos usa-se o tipo void (sem retorno).
#include <stdio.h> int soma(int a, int b){ int s; s=a+b; return s; } void (int i){ printf(Inteiro: %d,i); } int main(){ int s1; s1=soma(2,3); imprimeInt(s1); }
Estruturas repetio
var i: integer; i:=1; while (i<=10) do begin {comandos a repetir} i:=i+1; end; var i: integer; i:=1; repeat {no tem begin...end} {comandos a repetir} i:=i+1; until i=10; int i = 1; while (i<=10){ //comandos a repetir i++; //i=i+1; }
Vetores e Matrizes
Pascal
var vetInt: array[1..10] of integer; var matReal: array[1..10,1..10] of real; Pode-se usar estruturas de repetio para percorrer o vetor ou matriz
a:=vetInt[i]; b:=matReal[i][j];
C
Pode-se ter vetor e matrizes de qualquer tipo bsico ou de tipos definidos
int vetInt[10]; float matFloat[10][10]; Racional vetRac[10]; Pode-se usar estruturas de repetio para percorrer o vetor ou matriz
a=vetInt[i]; b=matFloat[i][j];
Strings
Pascal
Tipo de dados string Funciona como um vetor
var strNome: string; strNome[i]: retorna o caracter da posio i Pode-se usar estruturas de repetio para percorrer a string Existem funes para tratamento de string
C
No existe tipo string Vetor de caracteres
char strNome[20]; strNome[i]: retorna o caracter da posio i Pode-se usar estruturas de repetio para percorrer a string Existem funes para tratamento de string
Ponteiros
program testaPonteiro; var x: integer; a,b: ^integer; begin x := 10; a := @x; b := a; b^ := a^ + 10; writeln('Resultado = ',a^); end. #include <stdio.h> int main(){ int x; int *a, *b; x=10; a=&x; b=a; *b=*a+10; printf(%d,*a); }
x 20
C: ponteiro explcito
Passagem por valor na funo soma: sem ponteiros Passagem por referncia no procedimento troca: com ponteiros #include <stdio.h> int soma(int a, int b){ return (a+b); } void troca(int *a, int *b){ int aux; aux=*a; *a=*b; *b=aux; } int main(){ int s1,x,y; x=2; y=3; s1=soma(2,3); troca(&x,&y); }