O documento discute as linguagens de programação Java e C. Apresenta características e funcionalidades básicas de cada linguagem, como tipos de dados, estruturas de controle, arrays, funções/métodos e entrada/saída. Realiza também comparações entre os conceitos em cada linguagem.
1. Adriano Marinho Graduando em Computação na UFPB
Raphael Marques Mestrando em Informática na UFPB
2. São as linguagens mais utilizadas no mundo.
C no Desktop e Java na Web
Porque saber as duas?
Mais conhecimento sobre programação.
Nem tudo se resolve numa linguagem só.
Não seja limitado.
R2
3. Java:
Programação Orientada a Objetos
Compilada para Bytecodes
“Interpretada” em tempo de execução pela JVM
Write once! Run Anywere!
A JVM TEM O PODER!
R3
4. C:
Programação Estruturada
Compilada diretamente para código nativo
VOCÊ TEM O PODER!
A4
6. public class Classe{
public static void main(String[] args){
System.out.println(“Hello World!”);
}
}
R6
7. Use o console (prompt de comando no
Windows) para compilar!
Você deve ter o Java JDK instalado na sua
máquina.
Exemplo:
javac NomeDaClasse.java
java NomeDaClasse
R7
8. Em Java, módulo é descrito por uma classe.
Classes adicionais são carregadas
automaticamente.
Importar outras classes:
import pacote.Classe;
import pacote.*;
import static pacote.Classe.campo
import static pacote.Classe.*;
Classpath:
java –cp biblioteca.jar SuaClasse
R8
9. Use o console (prompt de comando no
Windows) para compilar!
Você deve ter algum compilador C instalado
na sua máquina.
Exemplo:
gcc nomeDoPrograma.c –o nomeDoPrograma
nomeDoPrograma
A9
10. Para isso escrevemos arquivos de cabeçalho
(.h), além dos arquivos .c.
Nos arquivos .h devem ficar:
protótipos das funções, definições de estruturas e
variáveis globais.
gcc main.c Arq1.c Arq2.c -o MeuProg
#include<modulo.h>
A10
12. Modificadores: Exemplos:
short short int
long short
signed signet char
unsigned unsigned long int
A12
13. Em C, um ponteiro contêm um endereço de
memória.
Um ponteiro pode ser utilizado para qualquer
estrutura na memória.
Ponteiros permitem operações aritméticas.
Em Java, uma referência faz referência a um
objeto na memória.
Uma referência só é utilizada com objetos.
Referências NÃO permitem operações aritméticas.
R13
14. C
lixo
Ponteiros com lixo podem causar travamentos do
SO
Java
null
false
0
0.0
R14
16. Usamos System.in.read()
Lê um byte por vez
A classe Scanner
Scanner scan = new Scanner(System.in)
int x = scan.nextInt();
float f = scan.nextFloat();
String token = scan.next();
String linha = scan.nextLine();
R16
19. Usamos scanf(), uma função da biblioteca
stdio.h
Exemplos:
char str [80];
scanf (quot;%squot;,str);
int i;
scanf (quot;%dquot;,&i);
scanf (quot;%xquot;,&i);
scanf (quot;%dquot;,i);
A19
20. Conversão implícita:
Tipos:
▪ Por atribuição;
▪ Alargamento de inteiros;
▪ Compatibilidade de operandos;
Todos os tipos de C são compatíveis entre si!!!
Conversão explícita: type cast.
(int)x
(float)y
A20
21. Conversão implícita:
Onde não houver perda de precisão
Ex:
▪ float f = 5;
▪ double d = f + 1.5;
▪ byte b = 1000;
▪ int x = 1.0;
Conversão explícita: type cast
(int)x
(float)y
R21
23. Em C:
O modificador const
▪ const int PI = 3.1415;
Macros
▪ #define PI 3.1415
Em Java:
O modificador final
▪ final int PI = 3.1415;
R23
24. C:
A condição é um inteiro
▪ false: zero
▪ true: qualquer valor diferente de zero
Ex:
▪ if(x == 5){...}
▪ if(x = 5){...}
▪ if(x == 1){...} → if(x != 0){...} → if(x){...}
A24
25. Java:
A condição é sempre um boolean
▪ int x = 4;
▪ if( x == 4 ){...}
▪ if( x ){...} → apenas se x for boolean
A25
26. Java e C:
if
if-else
while
do-while
switch-case
break
continue
A26
28. for(int i = 0; i < 10; i++){
...
}
int[] numeros = ...
foreach(int n : numeros){
...
}
R28
29.
30. Escreva um programa na sua nova linguagem
que leia um valor de raio e calcule a área e o
perímetro.
Exiba a área e perímetros calculados.
O programa pergunta o raio até que o usuário
digite um valor negativo.
R30
31. Sequência de posições de memória
C não faz controle de limite do array
Representado por um ponteiro.
Estático:
▪ int p[10];
▪ int[] p = int[10];
▪ int p[x];
Dinâmico
▪ int p* = (int*) malloc( sizeof( int ) * tamanho );
▪ free(p);
Tamanho de um array:
sizeof( array ) / sizeof( tipoDoArray)
▪ sizeof( p ) / sizeof( int )
O mais comum é guardar o tamanho do array numa variável.
A31
32. Arrays são objetos.
São acessados pela sua referência.
Ex:
→ referência nula
int[] a;
→ inicialização
int[] a = new int[10];
→ inicialização
int[] a = new int[x];
int[] a = new int[]{1,2,3,4,5}; → inicialização
→ abreviação
int[] a = new {1,2,3,4,5};
→ n de elementos
a.length
→ 3 elemento do array
a[2]
int a[10];
a++;
R32
34. Sobrecarga de métodos:
Java diferencia 2 métodos com o mesmo nome
pela quantidade e tipo de parâmetros.
Ex:
static float metodo(float v1, float v2){...}
static float metodo(float v1){...}
static float metodo(float v1, int v2){...}
static int metodo(float v1, float v2){...}
R34
35. Passagem de parâmetro sempre por cópia.
Objeto como parâmetro
▪ É feita uma copia da referência.
▪ Simula passagem de parâmetro por referência.
R35
36. Funções:
C diferencia funções apenas pelo nome!
Nada de sobrecarga de funções!!!
Ex:
int SomarDoisNumeros (int a, int b){
return a + b;
}
void ImprimirOi(){
printf(“Oi!n”);
}
A36
37. Passagem de parâmetro sempre por cópia.
Ex:
int SomarDoisNumeros (int a, int b)
Passagem de parâmetro por referência.
É emulada utilizando-se ponteiros
Ex:
int SomarDoisNumeros (int *a, int *b){...}
...
int c = SomarDoisNumeros (&a, &b);
A37
38. Strings em C são arrays! (e podem ser alterados)
char str[] = “String”;
char *str = “String”;
termina com ‘0’
“String” → „S‟ , „t‟ , „r‟ , „i‟ , „n‟ , „g‟ , „0‟
Operações (definidas em string.h):
strcpy
strlen
strcmp
strstr
strtkn
A38
39. Classe String
Não precisa de „0‟ no final!!!
Strings não podem ser alteradas!!!
Para isso use StringBuffer.
R39
41. C:
O programador aloca e libera memória.
Não existe gerenciamento automático de
memória.
Java:
O programador aloca memória
O Garbage Collector libera memória quando um
objeto não é mais referenciado.
System.gc() é apenas uma SUGESTÃO.
A41
42.
43. Escreva um programa na sua nova linguagem
que leia N notas do usuário.
Calcule a média das notas e exiba o resultado.
Informe se o aluno foi aprovado, reprovado
ou está na final.
No caso da final, informe quanto ele precisa
tirar na prova final para passar.
A43
44. Erros típicos:
Redeclaração de variáveis/funções;
Avisos de variáveis sem inicialização;
Funções com número de parâmetros incorretos;
Etc;
A44
45. Exceções
Param a execução do programa sem travar o SO.
Exceções de vários tipos:
▪ NullPointerException
▪ ArrayIndexOutOfBoundsException
StackTrace:
Exception in thread quot;main“ ArrayIndexOutOfBoundsException: 500
at Teste.metodo2(Teste.java:4)
at Teste.metodo1(Teste.java:8)
at Teste.main(Teste.java:13)
R45
46. JAVA NÃO É C!!!
Deixe o Garbage Collector trabalhar...
objetoInutil = null;
Declare as variáveis quando for utilizá-las.
R46
47. C NÃO É JAVA!!!
Todo cuidado com ponteiros é pouco!!!
Não esqueça do lixo!!!
Cuidado com o tamanho dos tipos primitivos.
Lembre de liberar memória.
A47
48. C:
Notas de aula do Prof. Ulysses Oliveira
▪ http://www.ulysseso.com/
Biblioteca padrão de C
▪ http://www.utas.edu.au/infosys/info/documentation/C/CStdL
ib.html
Java:
Procure no Google: java api 1.6
▪ http://java.sun.com/javase/6/docs/api/
Procure no Google: tutorial sun
▪ http://java.sun.com/docs/books/tutorial/
A48
49. C: Java:
math.h System
string.h File
time.h Math
Arrays
A49
50. C:
Tenha paciência e cuidado!
Java:
Toda classe começa com letra maiúscula:
▪ Pessoa, Carro, String, System, etc...
O nome do arquivo deve ser IGUAL ao nome da
classe:
▪ class Pessoa → Pessoa.java
R50