Você está na página 1de 62

INTRODUÇÃO À COMPUTAÇÃO

Introdução à Computação
ea
Linguagem de Programação C

Prof. Dirson Santos de Campos


Prof. Ricardo Augusto Pereira Franco

Data: 29/07/2021
Aula Teórica:
16:00 às 17:40h

2
Breve Histórico
❑A busca por soluções de problemas de nosso
cotidiano através da Lógica relatam desde a
antiguidade quando grandes mestres da Grécia
tinham interesse em formular normas do uso
correto da razão.
− Dentre os grandes mestres gregos da lógica Aristóteles
(384 a.C. — 322 a.C.) tem a obra mais expressiva
chamada de Organon que é o é o nome
tradicionalmente dado ao conjunto das obras sobre
lógica de Aristóteles.
3
Breve Histórico
❑Do ponto de vista das contribuições matemática
pode-se destaca-se por volta de 1750 quando o
matemático Leonhard Paul Euler (1707-1783)
introduziu a representação gráfica das relações
entre sentenças.
− Com base neste trabalho de Euler, outro matemático,
Venn, estabeleceu uma forma de representação
gráfica das intersecções e uniões de conjuntos,
conhecido hoje como Diagrama de Venn.
4
Breve Histórico
❑Em 1847, O matemático Augustus De Morgan
(1806 - 1861) escreveu um trabalho Formal
Logic (Lógica Formal) onde estabeleceu uma lei
com seu nome (Lei DeMorgan) que é utilizada
amplamente na Lógica até os dias de hoje.

5
Breve Histórico
❑Paralelamente ao trabalho do matemático
DeMorgan, outro grande matemático conhecido
como George Boole (1815 – 1864) escreveu o
livro An Investigation of the laws of thought
(Uma Investigação das Leis do Pensamento).
− Este livro aborda a “Álgebra de Boole” em que são
definidas as principais relações entre os Operadores
Lógicos.

6
Breve Histórico
❑Vale destacar que a Álgebra de Boole só teve
aplicação realmente prática por volta de 1938,
quando Claude E. Shannon (1916 —2001),
matemático, engenheiro elétrico/eletrônico e
criptógrafo estadunidense, conhecido como "o
pai da Teoria da Informação” provou que a
análise de circuitos de relés pode ser realizada
através da Álgebra de Boole, servindo de base
para a Teoria de Interruptores.
7
Breve Histórico
❑A Teoria de Interruptores é a base dos circuitos
elétricos de corrente alternada.
❑Com a corrente alternada é possível ter uma
frequência elétrica que é uma grandeza
mensurada em Hertz (Hz).
− Homenagem ao físico alemão Heinrich Rudolf Hertz
(1857-1894).
− Esta é a unidade de medida do clock do processador
que é o cérebro do computador, conforme será visto
a frente.
8
Breve Histórico
❑ O físico William Stanley Jr. (1858 - 1916) coloca em
operação a primeira central em corrente alternada
(Westinghouse) em Great Barrington, Massachusetts em
1866.
❑ Com a disponibilidade de energia elétrica de corrente
alternada estável foi possível criar máquinas que usem
processadores com clock (computadores) com base na
Teoria da Computação criada pelo matemático, lógico e
cripto-analista Alan Mathison Turing (1912 - 1954).

9
Breve Histórico
❑Alan Turing foi influente no desenvolvimento da
Ciência da Computação e na formalização do
conceito de algoritmo e computação com a
máquina de Turing, desempenhando um papel
importante na criação do computador moderno.
− Foi também pioneiro na inteligência artificial e na
Ciência da Computação ao criar a máquina de Turing
que é um modelo abstrato de um computador em 1936.
− É conhecido como o pai da computação.

10
Breve Histórico
❑Em 1943 iniciou-se a construção do ENIAC
(Electronic Integrator and
Calculator), de John Adam Presper Eckert
(1919 – 1995) e John William Mauchly (1907-
1980) na Moore School of Eng., Univ. da
Pensilvânia
❑Primeiro computador realmente eletrônico
terminado em 1946
− 18.000 vávulas, 70.000 resistores, 10.000 capacitores,
6.000 chaves - o sistema eletrônico mais complexo do
mundo, 30x3x3 m, consumo de 140 kw
11
Breve Histórico
❑O desenvolvimento continua ... A novidade hoje
será história amanhã ...

12
Conceitos Básicos

13
Motivação para estudar
Lógica de Programação
❑Estudar Lógica é importante para Ciências Exatas
pois a lógica é a base de todo o raciocínio
matemático e de todo raciocínio automatizado.
− Nesta disciplina o enfoque lógico é na Lógica de
Programação.
• A motivação principal para estudar este tipo de lógica é
programar.

14
Conceitos Básicos
Lógica de Programação
❑Lógica de Programação é a técnica de
desenvolver algoritmos para atingir
determinados objetivos dentro de certas regras
baseadas na Lógica Matemática e em outras
teorias básicas da Ciência da Computação e
que depois são adaptados para a Linguagem de
Programação utilizada pelo programador para
construir seu software.

15
Conceitos Básicos
Algoritmo
❑Conjunto de regras e operações bem definidas
e ordenadas, destinadas à solução de um
problema, ou de uma classe de problemas, em
um número finito de etapas
− A criação de um algoritmo é um exercício de
criatividade (conhecimento) e experiência (técnica
e prática)

16
Conceitos Básicos
Programa
❑Um programa é uma formulação concreta de
um algoritmo abstrato, baseado em
representações de dados específicas.
❑Representa uma sequência completa de instruções
(comandos) para solução de um problema a serem
executadas por um computador usando uma
linguagem de programação (exemplo Linguagem
C/C++).

17
Conceitos Básicos
Abstração
❑Operação mental que observa a realidade e captura
apenas os aspectos relevantes para a solução de
um problema em um determinado contexto.
− A tarefa de programar envolve o exercício constante da
abstração da realidade e sua codificação exige a análise
da realidade contextualizada em requisitos, nesta
disciplina funcionais, descritos, geralmente, em um
enunciado de um exercício, codificada em uma linguagem
de programação.

18
Conceitos Básicos
Linguagem de Máquina
❑ É necessário que os programas sejam escritos em
uma linguagem que o computador entenda.
❑ Essa linguagem é chamada Linguagem de
Máquina com um alfabeto {0,1}.
0100 1111 1010 0110
− Linguagem de máquina que é definida pelo projeto de
hardware desse computador.
− É pouco intuitiva para os seres humanos.
− Foram desenvolvidas linguagens de mais alto-nível para
sere humano trabalharem.
19
Conceitos Básicos
Linguagem de Máquina
❑ Do slide anterior concluímos que a
verdadeira (e única) linguagem de
computador é a linguagem de máquina
(binária), mas para a maioria das
pessoas essa linguagem de zeros e uns
é ininteligível.

20
Conceitos Básicos
Linguagens de Programação
❑ Os programadores precisam de um
intermediário entre eles e a máquina.
❑ Uma linguagem que facilite o processo de
programar computadores mas que no final seja
traduzida para a linguagem de máquina.
❑ Uma linguagem de programação permite
desenvolver os conjuntos de instruções que
constituem o programa de computador.

21
Conceitos Básicos
Linguagens de Programação
❑ Existem muitas linguagens de
programação diferentes, cada uma com
seu vocabulário, gramática e comando e
bibliotecas construídos por seu autores.
− Nesta disciplina foi adotada a linguagem C.

22
Conceitos Básicos
Compilador
❑ Um compilador é um programa de
computador (ou um grupo de programas)
que, a partir de um código fonte escrito
em uma linguagem compilada, cria um
programa semanticamente equivalente,
porém escrito em outra linguagem,
código objeto.

23
Conceitos Básicos
Compilador
❑ Classicamente, um compilador traduz um
programa de uma linguagem de
programação, mais facilmente entendida
por um ser humano, para uma linguagem
de máquina, específica para um
processador e sistema operacional.
− Nesta disciplina será utilizado o compilador
do ambiente de desenvolvimento que será
visto nas aulas de laboratório.
24
Conceitos Básicos
Compilador
❑ De fato, toda a linguagem de
programação exige uma ferramenta
como o compilador (ex. linguagem C) ou
um interpretador (ex. linguagem Java).

25
Conceitos Básicos
Compilador
❑ Exemplo de passos de compilação de
uma linguagem em alto nível C (fonte
meuprograma.c) para a linguagem de
máquina .exe (binário ou executável)

26
Introdução a
Linguagem C

27
Histórico da Linguagem C
❑Criada por Denis Ritchie, em 1972, para uso em
um computador DEC PDP-11 em Unix.
❑Foi desenvolvida como uma evolução de
linguagens de programação anteriores
– BCPL (Basic Combined Programming Language de
1966) → B (de 1969) → C (de 1972) → C++ (1998 –
padronização)
− Atualmente a linguagem C encontra-se na
versão/padrão internacional C18 standard revision
(ou ISO/IEC 9899:2018) lançada em junho de 2018.

28
Características da linguagem C
❑ Permite a construção de programas em
diversos sistemas operacionais, mas não é
multiplataforma.
− É compilada.
− É considerada muito rápida.
− É uma linguagem de desenvolvimento software
genérico e também de software básicos como o
desenvolvimento de sistemas operacionais.
Linguagem C é Sensitive Case
❑ Antes de iniciar os estudos sobre a linguagem C, é
muito importante salientar que esta linguagem é
“ sensitive case ” , ou seja, ela faz diferença em
caracteres maiúsculos e minúsculos.
❑ Desta forma abaixo temos a declaração de duas
variáveis diferentes que assumirão valores diferentes:
int i, I;
❑ Outro ponto importante a conhecer da linguagem C é
que todas as linhas devem ser terminadas com o sinal
de ponto e vírgula “;”
30
O que é uma Variável?
❑ Variável é um espaço de memória que o
programa reserva para armazenar dados
de um determinado tipo ou uma estrutura
de dados.
❑ Toda variável deve possuir um tipo e um
identificador (nome) e um tipo.
− Cada tipo define os valores que a variável
pode armazenar;
− Cada tipo ocupa uma certa quantidade de
memória.
31
Regras de nome de variáveis
❑ As regras para formar nomes de variáveis em C
são:
− Quaisquer sequência de letras, digitos, e ’_’, MAS
DEVE COMEÇAR com uma letra ou com ’_’.
− Por exemplo, hora_inicio, tempo, var1 são nomes de
variáveis válidos, enquanto 3horas, total$ e azul-claro
não são nomes válidos;
− Não são permitidos nomes ou palavras reservadas da
linguagem.
− É sempre uma boa idéia ter certas regras (para você
mesmo) para nomear variáveis para tornar o programa
mais legível.

32
Regras de nome de variáveis
❑ As regras para formar nomes de variáveis em
C são:
− Dê nomes significativos as variáveis (mas não muito
longos);
− Use nomes de variáveis do tipo i, j, k somente para
variáveis tipo contadores;
− Pode-se usar letras maiúsculas ou ’_’ para juntar
palavras. Por exemplo, horaInicio ou hora_inicio.
− Use o que você preferir, mas SEJA CONSISTENTE
em sua escolha.

33
Tipos em C/C++
(Nome, Tamanho e Faixa)
Tipo em C/C++ Tamanho  em Bits Faixa de Valores
Char 8 -127 a 127
Unsigned char 8 0 a 255
Signed char 8 -127 a 127
Int 16 -32.767 a 32.767
Unsigned int 16 0 a 65.535
Signed int 16 O mesmo que int
Short int 16 O mesmo que int
Unsigned short int 8 0 a 65.535
Signed short int 8 O mesmo que short int
Long int 32 -2.147.483.647 a 2.147.483.647
Signed long int 32 -2.147.483.647 a 2.147.483.647
Unsigned long int 32 0 a 4.294.967.295
Float 32 Seis dígitos de precisão
Double 64 Dez dígitos de precisão
Long double 128 Dez dígitos de precisão
34
Declaração de variáveis em C
❑ Sintaxe de declaração em C

❑ Observações:
− A linguagem C não exige que as variáveis sejam
declaradas em uma seção especial.
− A declaração deve ser feita no início do programa
principal ou da função ou procedimento.

35
Declaração de variáveis em C
❑ Exemplos:
int i, j, l;
short int si;
unsigned int ui;
double valor, aux;
char LetraDigitada;

36
O que é uma Constante?
❑ Constantes são identificadores que possui
como as variável um nome e um tipo,
porém não podem ter seus valores
alterados durante a execução do
programa.
❑ Para criar uma constante existe o
comando #define que, em geral é
colocado no início do programa-fonte.

37
Exemplo de Constante em C
#define NRO_DE_DIAS_DA_SEMANA 7
#define NRO_DE_HORAS_DO_DIA 24
#define VALOR_DE_PI 3.1415
// Não se coloca ponto-e-vírgula após o valor
int main ()
{
......
}
38
Comando de Atribuição em C
❑ Uma variável podem ter seu conteúdo
alterado por um comando de atribuição.
− Após a atribuição muda de valor.
❑ Atribuir um valor de uma expressão a
uma variável significa calcular o valor
daquela expressão e copiar aquele valor
para uma determinada variável.

39
Comando de Atribuição em C
❑ Sintaxe do comando de atribuição em C

❑ Logo o operador de atribuição em C é


o sinal de igual (=) da matemática.

40
Comando de Atribuição em C
❑ Exemplos
− Declaração e inicialização no mesmo
comando em C
// declara e inicializa com Zero
int NroDeHoras = 0;
// declara e inicializa com 7.50
float PrecoDoQuilo = 7.50;

41
Comando de Atribuição em C
❑ Exemplos
− Considerando que a declaração da variável
foi feita em uma linha anterior, neste caso,
basta inicializar com um comando de
atribuição
/* Atribuindo o valor ‘a’ para a variável do tipo char
nome_letra */
nome_letra = “a”;
/* Atribuindo o valor 3 para a variável inteira a */
a = 3;
Obs.: Pode-se ler uma variável em vez de atribuir um
valor a ela como será visto ainda nesta aula.
42
Comando de Atribuição em C
❑ No exemplo abaixo, a variável soma
recebe o valor calculado da expressão
a+b

43
Comandos de I/O (input/output)
(entrada/saída)
❑ Simplificadamente, comandos de I/O
permitem que o programa interaja com o
usuário solicitando e mostrando dados em
um dispositivo de I/O, por exemplo, uma
tela.
− A entrada de dados tem por função efetuar a leitura de
dados de uma fonte externa, no caso desta disciplina a
fonte externa é o próprio teclado.
− A saída de dados tem por função exibir textos ou
valores de variáveis na tela do computador.
44
Comandos de I/O (input/output)
entrada/saída
❑ Existe vários comandos de entrada de dados
em C.
❑ Os principais comandos são:
– scanf() : entrada formatada;
– gets() : leitura de string;
– getch() : lê caractere e não aguarda o <enter>
– getchar() : lê caractere e aguarda o <enter>
❑ Nesta aula, abordaremos o comando scanf, os
demais comandos serão explorados ao longo
da disciplina.
45
Comandos de I/O
❑ Comandos para saída em C mais
comuns:
– printf(): saída formatada
– putchar(): imprime caractere
– puts(): imprime string
❑ Nesta aula, abordaremos o comando
printf, os demais comandos serão
explorados ao longo da disciplina.

46
Comando SCANF
❑ Realiza a leitura de um texto a partir do teclado
❑ Parâmetros:
− Uma string, indicando os tipos das variáveis que
serão lidas e o formato dessa leitura.
− uma lista de variáveis lidas

Obs.: Aguarda que o usuário digite um valor e


atribui o valor digitado à variável.

47
Comando SCANF
❑ Para executar um comando de entrada de
dados com o comando ou função função
scanf( ) é necessário incluir a biblioteca
stdio.h.
− Existem várias bibliotecas na linguagem C.
− Elas serão vistas à medida que comandos que
necessitem de uma biblioteca específica forem
usados ao longo da disciplina.

48
Comandos SCANF
❑ Sintaxe Geral
scanf ( “ % t ” , & NOME_DA_VARIÁVEL ) ;

– NOME_DA_VARIÁVEL: indica em qual variável o valor lido será


armazenado.
– ‘&’:O operador “address-of" & de C. O operador & retorna o
endereço de memória de uma determinada variável, ou seja,
qual a localização, na memória do computador, da variável
definida.
– %t é um conversor que indica o tipo de informação que deve
ser lida. Deve-se substituir a letra t pelo caracter de acordo com
a tabela no slide a seguir.

49
Comandos SCANF
❑ Exemplos

scanf("%d",&idade);
scanf("%f",&altura);
scanf("%s", &sexo);

Obs.: É necessário “definir” o que irá ser lido via


teclado, ou seja, o tipo de variável lida para cada
tipo existe um formato de leitura da variável.

50
Comandos SCANF
❑ Alguns exemplos de formato de leitura utilizados
pelo comando SCANF
%d Lê um número inteiro da base 10(decimal)
%i Lê um número inteiro
%d Lê um número inteiro da base 10(decimal)
%I Lê um inteiro longo
%u Lê um decimal sem sinal
%f Lê um número de ponto flutuante (real)
%lf Lê um double
%c Lê um único caractere
%s Lê uma cadeia de caracteres (string)
51
Comando PRINTF
❑ Realiza a impressão de informações e/ou
dados na tela.
❑ Parâmetros:
− Uma expressão válida em C ou uma string
estática (entre aspas)

printf(“Mensagem a ser escrita na tela”);

− uma string dinâmica composta de uma expressão


válida em C (entre aspas) e uma lista de
argumento, separadas por vírgulas.

printf(“expressão”, lista argumentos)


52
Comando PRINTF
❑ Logo, a função printf(),da biblioteca stdio.h, é
uma função que permite efetuar a saída de
informações na tela.

53
Comandos Printf
❑ Exemplos de string dinâmicas
Para cada código de controle (%), deve-se
ter um argumento de controle do mesmo tipo:

printf(“Idade de Maria: %d”, 22)

printf(“ Nome : %s”, “Fulano”)

printf(“ Nome::::::: %s. Idade: %d”, “Fulano”, 18)


54
Caracteres de Controle de saída
❑ Além dos caracteres de controle de entrada utilizados em
comando de entrada de dados como o scanf, existem
outros específicos para a impressão de caracteres na tela
de saída como o %%. Alguns estão descrito abaixo.
Código Significado
%u Inteiro decimal sem sinal
%c Caracter
%d Inteiro decimal com sinal
%e Real em notação científica

%f Real em ponto flutuante


%s Cadeia de caracteres
%x Inteiro em base hexadecimal
%o Inteiro em base octal
%% Símbolo de porcentagem
55
Caracteres de Controle de saída
❑ Para a saída de mensagens ou valores em tela, faz-se necessário
conhecer os caracteres de controle utilizados pela linguagem C que
controlam a saída de dados, os principais são:
Código Significado
\b Retrocesso (BS)
\f Alimentação de formulário (FF)
\n Nova linha (LF)
\r Retorno de Carro (CR)
\t Tabulação Horizontal (HT)
\” ”
\’ ’
\0 Nulo
\\ Barra invertida
\v Tabulação Vertical
\a Alerta (beep)

56
Comandos PRINTF com caracteres de
formatação
❑ É possível ainda “formatar” o que irá imprimir na
tela, ou seja, deixar mais “amigável” ao usuário:
printf ("%05d\n",456); |00456|
Completa até 5 casas o inteiro.

printf ("%5.2f\n",456.671); |456.67|


Ponto flutuante de 5 e com 2 casas decimais.

printf ("%10s\n","Ola"); | Ola|


String de tamanho 10.

57
Estrutura básica de um
programa em C
Declaração de bibliotecas, constantes,
Definição de constantes
Chamada de funções funções, se necessário
Função principal (programa principal)

// Aqui é digitado as
//instruções tais como
Corpo do programa
/* Declaração de variáveis
E sequência de comandos
lógicos */
Retorno para o Sistema Operacional

58
Sentenças simples ou instruções ou
comandos
❑ Cada instrução ou comando em C é
chamada, por alguns autores, de sentença.
❑ Sentenças simples são terminadas com um
ponto e vírgula.
− Já vimos em slides anteriores como declarar
variáveis, comando de atribuição e comandos
de entrada e saída.

59
Exemplo de sentença simples
❑ Declaração de variáveis
int x;
❑ Comando de atribuição.
x = 3;

60
Sentenças compostas
❑ Usando chaves, podemos agrupar
sentenças em blocos, chamados de
sentenças compostas que corresponde,
simplificadamente, a um conjunto de linhas
de programação que expressão uma
determinada solução lógica para um
problema descrito em um enunciado de um
exercício, por exemplo.

61
Exemplo de sentença composta
❑ O corpo da função main() é um bloco de
sentenças compostas de instruções ou comandos
válidos na linguagem C.
❑ Exemplo: Atribua o valor 3 a uma variável inteira
e imprima o resultado
{
int i = 3;
printf("%d\n", i);
}
Entre chaves “{“, “}” o bloco de comando em C
62

Você também pode gostar