Escolar Documentos
Profissional Documentos
Cultura Documentos
Computadores
1
Programa da Disciplina
Ø Organização básica de computadores
Ø Algoritmos
Ø Introdução a linguagem de programação estruturada
Ø Tipos de dados, identificadores, constantes e variáveis
Ø Comandos de entrada/saída e operadores
Ø Estruturas de decisão (if, switch)
Ø Estruturas de repetição (for, while, do-while)
Ø Avaliação P1
Ø Vetores e matrizes
Ø Strings e estruturas
Ø Modularização de programas
Ø Ponteiros e alocação dinâmica de memória
Ø Avaliação P2
2
Sumário
Introdução a linguagem de programação estruturada
3
Algoritmos → Programas
Linguagem de
Como transformar algoritmos em programas?
Programação
4
Tipos de Linguagem de Programação
Linguagem de máquina: conjunto de instruções que podem ser interpretadas e
executadas diretamente pela CPU - utiliza códigos binários (0 e 1).
Linguagem de programação de alto nível (C, Java, Python): precisa ser compilada
ou interpretada para ser executada pela máquina – mais próxima da linguagem
natural (if, while, for).
5
Programa “Hello World”
Linguagem de máquina
Linguagem de baixo
nível (Assembly)
6
https://crg.eti.br/post/assembly-assembler-e-linguagem-de-maquina/
Paradigmas de Linguagem de Programação
Programação Estruturada
DADOS FUNÇÕES
ATRIBUTOS MÉTODOS
(DADOS) (FUNÇÕES)
7
C - C++ - C#
“C - Linguagem estruturada, considerada por muitos a melhor linguagem de
programação existente. Ela foi usada para desenvolver os SO's mais conhecidos como: o
Unix, Linux e Windows. Essa linguagem é robusta, pois permite trabalhar diretamente
com os endereços de memória (ponteiros), o que possibilita aos programadores
experientes o desenvolvimento de programas com um ótimo gerenciamento de memória.
C++ - Linguagem que permite programação estruturada e orientada a objetos. Ela é uma
evolução do C. Tem todas as vantagens do C e possibilita a criação de objetos. Hoje o
Windows e outros softwares da Microsoft são escritos em C++.
Fonte: https://social.msdn.microsoft.com/Forums/vstudio/pt-BR/49daf64b-7070-4ed4-aa20-8989ab500743/diferena-entre-a-linguagem-c-e-a-c?forum=vsvbasicpt
8
Exemplo de código
em C - C++ - C#
9
Compiladores e Interpretadores
Compiladores (Linguagens compiladas: C, C++, Delphi, etc)
10
Processo de Geração de um Arquivo Executável
11
Linguagem de Programação C
13
Características da
Linguagem C ANSI / ISO / IEC - C
15
1. // Meu primeiro programa em C
2. #include <stdio.h>
int main()
Introdução à Linguagem C
3.
4. {
5. printf ("Hello World");
6. return 0;
7. }
ØUm programa em C é um arquivo texto, chamado código-fonte, que contém a
tradução de um algoritmo para a linguagem C.
ØTodas as instruções devem estar dentro das “{}” que iniciam e encerram a função
principal do programa: main(), são executadas na ordem em que são escritas e são
encerradas com “;”.
ØComentários de uma única linha iniciam-se com //. Comentários de múltiplas linhas
devem estar entre /* e */.
16
Primeiro Programa em C
Ø Editor de texto
Para compilar o programa:
Ø Compilador
$ gcc <nome do arquivo código-fonte> -o
<nome do arquivo executável> Ø Linkeditor
Para executar o programa: Ø Depurador
$ ./<nome do arquivo executável>
Exemplos de IDEs para C/C++:
Alguns compiladores online: Ideone.com, Dev C++, Code: :Blocks, C++ Builder e Visual
Codepad, Codechef, JSFiddle, Jdoodle, Studio C++.
OnlineGDB, GCC Explorer.
18
Tipos de Erros em Programas
20
Programação Estruturada
As instruções são executadas uma após a outra. Não existe desvio na sequência das instruções.
Cada instrução é executada uma única vez. A ordem das instruções é importante.
21
Tipos de Dados
A linguagem C possui cinco tipos de dados primitivos (pré-definidos). O tipo de
dado determina o espaço de memória que deve ser alocado (as especificações de
cada tipo dependem do computador e do compilador utilizado).
São identificadores associados a valor fixo e inalterável, ou seja, valor que não sofre
modificação ao longo da execução do programa. Recomenda-se utilizar letras
maiúsculas para declarar constantes.
24
Diretiva “define” e Comando “const”
Diretiva “define” #include <stdio.h>
Sintaxe: #define <nome_da_constante> <valor> #define PI 3.14
int main()
Ø O pré-processador substitui todas as ocorrências do identificador ao longo {
do programa pelo seu valor antes da compilação; ...
Ø Não usa espaço da memória RAM; comp = 2 * PI * raio;
Ø A declaração da constante deve ser feita no início do programa; return 0;
Ø Facilita a manutenção do código e torna o programa mais legível. }
#include <stdio.h>
Comando “const” int main()
Sintaxe: const <tipo_de_dado> < nome_da_constante > = <valor>; {
const float PI = 3.14;
Ø Declara uma constante para um tipo de dado específico; ...
Ø Usa espaço na memória RAM; comp = 2 * PI * raio;
Ø O programa não compila se houver no código novo comando de atribuição return 0;
para a constante (assignment of read-only variable). }
25
Constantes com printf ()
1. #include <stdio.h>
2. int main()
3. {
4. printf ("A instrução A foi repetida 3 vezes. \n");
5. printf ("A instrução %c %s %d vezes.\n",'A',"foi repetida",3);
6. return 0;
7. }
26
Operador const - Simulando e Verificando a
Memória
1. #include <stdio.h>
2. int main()
Memória
3. { endereço const conteúdo
4. const int x = 10; 0x7ffcc25158ec x 10
28
Declaração de variáveis Atribuição a variáveis
Declarar uma variável significa reservar um Atribuir um valor à uma variável significa fornecer a
espaço de memória (endereço) para ela tal valor para que seja armazenado na memória.
armazenar seu valor de acordo com o tipo de Uma atribuição só será válida se o valor atribuído for
dado definido na instrução de declaração. do mesmo tipo de dado da variável.
Exemplos Exemplos
• char letra; • letra = ‘a’;
• int num; • num = 1;
• float valor; • valor = 2.45;
• double rendimento; • rend = 0.287651;
• int num1, num2; • num1 = 10, num2 = 20;
Observação: Uma única instrução pode conter tanto a declaração quanto a atribuição a variáveis.
Exemplo: int num = 1; 29
A importância do Nome das Variáveis
30
Variável com printf ()
1. #include <stdio.h>
2. int main()
3. {
4. int x;
5. x = 10;
6. printf ("Valor de x = %d", x);
7. return 0;
8. }
31
Variável – Simulando a Memória (1/2)
1. #include <stdio.h>
2. int main()
3. { Memória
4. int x; endereço variável conteúdo
5. x = 10; 0x7ffcd229bc5c x
6. return 0;
7. }
32
Variável – Simulando a Memória (2/2)
1. #include <stdio.h>
2. int main()
3. { Memória
4. int x; endereço variável conteúdo
5. x = 10; 0x7ffcd229bc5c x 10
6. return 0;
7. }
33
Variável - Verificando a Memória
1. #include <stdio.h>
2. int main()
3. {
4. int x;
5. printf (" Endereço de x = %p \n", &x);
6. printf (" Conteúdo de x = %d \n\n", x);
7. x = 10;
8. printf (" Endereço de x = %p \n", &x);
9. printf (" Conteúdo de x = %d \n", x);
10. return 0;
11. }
34
Ponto Flutuante – Float e Double (1/2)
Os tipos de dados float e double são usados para armazenar números
reais. Eles são representados de forma similar à notação científica.
Supondo 4 bytes:
3 bytes 1 byte
+ ,2810000 8
Sinal Mantissa Expoente
35
Ponto Flutuante – Float e Double (2/2)
#include <stdio.h> #include <stdio.h> #include <stdio.h> #include <stdio.h>
int main() int main() int main() int main()
{ { { {
float a = 100.73; float a = 1000.73; float a = 10000.73; float a = 10000000.73;
float b = 100.0; float b = 1000.0; float b = 10000.0; float b = 10000000.0;
printf("%f",a - b); printf("%f",a - b); printf("%f",a - b); printf("%f",a - b);
return 0; return 0; return 0; return 0;
} } } }
Exemplos:
• signed int (corresponde ao padrão de utilização do bit de sinal – raramente usado)
• unsigned int (o bit de sinal é usado para representar um valor)
• long int (número inteiro com domínio ampliado)
• short int (número inteiro com domínio reduzido)
• unsigned short int (número inteiro sem sinal e com domínio reduzido)
Observações:
Ø Os modificadores podem prefixar apenas os tipos char, int e double.
Ø Uma única declaração pode combinar até dois modificadores. 37
Modificadores dos Tipos de Dados
O bit mais à esquerda em uma variável do tipo int, denominado bit de sinal, é
normalmente utilizado pelo computador para distinguir entre valores positivos e
negativos (0 = valor positivo e 1 = valor negativo). Usando o modificador unsigned,
informamos ao compilador que somente valores sem sinal serão usados e que,
portanto, não é necessário ter um bit de sinal. Com isso, podemos usar esse bit para
representar valores e, consequentemente, a escala de valores dobra.
O modificador signed indica que os valores devem ser sinalizados; mas, como este é o
caso normal, raramente ele é utilizado. O modificador long faz com que o espaço de
memória reservado para uma variável do tipo int seja duplicado e, consequentemente,
aumenta a capacidade de armazenamento da variável. Já o modificador short, em
algumas máquinas, faz com que esse espaço reduza para a metade.
38
Verificando o Tamanho dos Tipos na
Memória
1. #include <stdio.h> 14. printf (" float: ");
2. int main() 15. printf (" %ld \n", sizeof(float));
3. { 16. printf (" double: ");
4. printf (" char: "); 17. printf (" %ld ", sizeof(double));
5. printf (" %ld ", sizeof(char)); 18. printf (" %ld \n", sizeof(long double));
6. printf (" %ld ", sizeof(signed char)); 19. printf (" void: ");
7. printf (" %ld \n", sizeof(unsigned char)); 20. printf (" %ld \n", sizeof(void));
8. printf (" int: "); 21. return 0;
9. printf (" %ld ", sizeof(int)); 22. }
10. printf (" %ld ", sizeof(signed int));
11. printf (" %ld ", sizeof(unsigned int));
12. printf (" %ld ", sizeof(long int));
13. printf (" %ld \n", sizeof(short int)); 39
Atividades
1) Utilizando o compilador de sua preferência, implemente e teste os códigos dos slides 31, 34,
36 e 39. Apresente um breve comentário sobre os testes (ex: todos os testes realizados com
sucesso, dificuldades encontradas, algo que chamou a atenção nos testes, etc).
Ø SOUZA, M. A. F., GOMES, M. M., SOARES, M. V., CONCILIO, R. Algoritmos e Lógica de Programação, 3a Edição,
São Paulo, Cengage, 2019.
Ø PUGA, S., RISSETTI, G. Lógica de Programação e Estrutura de Dados, 3ª. Edição, Prentice Hall, 2016.
Ø CELES, W., CERQUEIRA, R., RANGEL, J. L. Introdução a Estrutura de dados com Técnicas de Programação em C.
Campus, 2016.
Ø MIZRAHI, V. V. Treinamento em Linguagem C – Curso Completo, 2a Edição, Pearson Makron Books, 2008.